[comp.sources.d] perl compilation problems

stan@sdba.UUCP (Stan Brown) (05/15/88)

Subject: perl compilation problem
Newsgroups: comp.sources.d
Distribution: na

Hi;

	I am having a problem getting perl to compile on my machine.
For information sake the machine that I am working on is a Fortune 32:16
(a 68000) box.  The error that I am geting occcurs during the compliation
of perl.c and is something lik:

	./perly.c lin 2807 compiler error no table entry fo SASG

The lines of code of interest are:



	for (j = 1; ; ) {
	    arg[j++] = node[1];
	    ^^^^^^^^^^^^^^^^^^^
	    if (j >= i) {


	However I suspect that the problem may actuly lie in the 
for statement.

	Anybody have any thoughts on this one ?


-- 
Stan Brown	S. D. Brown & Associates	404-292-9497
gatech!sdba!stan
	"vi forever"

lwall@devvax.JPL.NASA.GOV (Larry Wall) (05/17/88)

In article <240@sdba.UUCP> stan@sdba.UUCP (Stan Brown) writes:
: 	I am having a problem getting perl to compile on my machine.
...
: The lines of code of interest are:
: 
: 	for (j = 1; ; ) {
: 	    arg[j++] = node[1];
: 	    ^^^^^^^^^^^^^^^^^^^
: 	    if (j >= i) {


This problem was pointed out to me by somebody--in version 2.0 the autoincrement
is separated out to the next statement to circumvent the problem.

Larry Wall
lwall@jpl-devvax.jpl.nasa.gov

chip@ateng.UUCP (Chip Salzenberg) (05/17/88)

In article <240@sdba.UUCP> stan@sdba.UUCP (Stan Brown) writes:
>I am having a problem getting perl to compile on my machine.
>The lines of code of interest are:
>
>	for (j = 1; ; ) {
>	    arg[j++] = node[1];
>	    ^^^^^^^^^^^^^^^^^^^
>	    if (j >= i) {

My Xenix system (Microsoft C) had the same problem.  Change the offending
line to two lines:

	arg[j] = node[1];
	++j;

"Feeling much better."
-- 
Chip Salzenberg                "chip@ateng.UU.NET" or "codas!ateng!chip"
A T Engineering                My employer may or may not agree with me.
  "I must create a system or be enslaved by another man's." -- Blake

chris@mimsy.UUCP (Chris Torek) (05/17/88)

In article <240@sdba.UUCP> stan@sdba.UUCP (Stan Brown) writes:
>... the machine that I am working on is a Fortune 32:16
>(a 68000) box.  The error that I am geting occcurs during the compliation
>of perl.c and is something like:
>	... compiler error: no table entry for SASG

Ah yes, everybody's favourite internal PCC error (the fun one is always
`for op REG') :-) .  SASG is almost certainly STASG, STructure ASsiGnment.
It means someone goofed, either leaving an entry out of table.c, or
doing something in the code generator that gets order() stuck with
nowhere to go.

>	    arg[j++] = node[1];
>	    ^^^^^^^^^^^^^^^^^^^

This is somewhat curious, as delay() should have deferred the j++.
But who knows what lurks in the heart of an ancient PCC.

At any rate, there is no way to fix this sort of thing without compiler
sources, and I imagine those are hard to get (did not Fortune quit
making 32:16s?).  About all you can do is experiment with rephrasing
the line of code that triggers the compiler bug.
-- 
In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 7163)
Domain:	chris@mimsy.umd.edu	Path:	uunet!mimsy!chris