comp.unix.xenix
Kevin Ross
kevinr at june.cs.washington.edu
Fri Jun 10 01:32:24 AEST 1988
In article <25 at libove.UUCP> root at libove.UUCP (The Super User) writes:
>Can someone please explain why a slightly too complex expression can
>cause the large model pass of the SCO Xenix 2.1.4g compiler to generate
>a compiler "infinite spill" error? What *exactly* does that mean?
>Basically, expressions like
>structptr->elt_struct.struct_item = int + str->elt.str;
>will cause the infinite spill error, and this can be corrected by:
>junkvar = str->elt.str;
>structptr->elt_struct.struct_item = int + junkvar;
>Jay Libove (Jay.Libove at andrew.cmu.edu or pitt!darth!libove!libove)
The problem is in the way the 80286 does pointer arithmetic. Actually, it is
a compiler error, since this shouldn't be a problem. If you create an
expression that contains too many indirections, the compiler tries its hardest
to create the code. However, it runs out of ways to get at the data, since
there are a limited number of registers that can do indirect loads.
There really is no excuse for this, just the reason. I have been fighting the
same damn problem every since I got XENIX. You made the proper adjustment to
the code, and it is the only solution.
The XENIX 2.1.4 compiler is very buggy. If I had the money, I would get the
2.2.1 version, but I don't, so I won't.
Kevin
kevinr at june.cs.washington.edu
Home: ...beaver!tikal!camco!carmine!kevin
More information about the Comp.unix.xenix
mailing list