[comp.unix.xenix] compiler error..

corwin@polari.UUCP (Don Glover) (09/09/89)

I have run into yet another problem with an sco compiler.  I am using
2.2.1 compiler to compile some programs in huge model (since the 2.1.4
286 development system had just a few bugs in this area.)  And now I am
getting a 'Compiler Error (Internal) : infinite spill'.  I can not find
this one documented (not that not finding an error undocumented is unusual)
Can some one help me out on.  Why might I be getting this error? 
It happens just 54 lines into the file.
 
Thanx in advance for the help.

glenn@stsim.ocs.com (glenn ford) (02/17/90)

I recieved the following error trying to get conquer4 running under SCO Xenix
386, 2.3.1:
	Compiler error (internal): Infinite spill

What causes this, and is it fixed?  Has anyone gotten conquer4 to run under
386Xenix?

Thanks, glenn
BBS:  301-972-2310
HOME: 301-972-6131
UUCP: ..uunet!ocsmd!stsim!glenn

chip@chinacat.Lonestar.ORG (Chip Rosenthal) (02/23/90)

In article <854@stsim.ocs.com> glenn@stsim (glenn ford) writes:
>I recieved the following error trying to get conquer4 running under SCO Xenix
>386, 2.3.1:
>	Compiler error (internal): Infinite spill
>What causes this, and is it fixed?

My understanding is that it is due to a problem in the register usage
scheme in the Microsoft compiler, and is activated by complex expressions.
About all you can do is locate the expression causing the problem and
simplify it.  Here is a portion of code in rn's "rcln.c" file which has
this problem, and my fix:

	sprintf(tmpbuf,"%s: 1-%ld", rcline[ngx],(long)getngsize(ngx));
	free(rcline[ngx]);
	rcline[ngx] = savestr(tmpbuf);
    #ifdef M_XENIX
	{
	    /* infinite spill compiler bug...grrrr */
	    char *cp = rcline[ngx] + rcnums[ngx] - 1;
		*cp = '\0';
	}
    #else
	*(rcline[ngx] + rcnums[ngx] - 1) = '\0';
    #endif
	write_rc();

You'll probably need to pull a similar trick to get it to compile.
-- 
Chip Rosenthal                            |  Yes, you're a happy man and you're
chip@chinacat.Lonestar.ORG                |  a lucky man, but are you a smart
Unicom Systems Development, 512-482-8260  |  man?  -David Bromberg

karl@ddsw1.MCS.COM (Karl Denninger) (02/23/90)

In article <945@chinacat.Lonestar.ORG> chip@chinacat.Lonestar.ORG (Chip Rosenthal) writes:
>In article <854@stsim.ocs.com> glenn@stsim (glenn ford) writes:
>>I recieved the following error trying to get conquer4 running under SCO Xenix
>>386, 2.3.1:
>>	Compiler error (internal): Infinite spill
>>What causes this, and is it fixed?
>
>My understanding is that it is due to a problem in the register usage
>scheme in the Microsoft compiler, and is activated by complex expressions.
>About all you can do is locate the expression causing the problem and
>simplify it.  Here is a portion of code in rn's "rcln.c" file which has
>this problem, and my fix:

Before you go modifying the code, try adding:

	-Dregister=

to your CFLAGS.  This will remove register declarations (it may break things
as well, if the user of the register didn't include a type; a common
problem, but one easy to fix).

This will usually get the offending code to compile.

--
Karl Denninger (karl@ddsw1.MCS.COM, <well-connected>!ddsw1!karl)
Public Access Data Line: [+1 708 566-8911], Voice: [+1 708 566-8910]
Macro Computer Solutions, Inc.		"Quality Solutions at a Fair Price"

mla@enea.se (Mats L|fstr|m) (02/23/90)

In article <854@stsim.ocs.com> glenn@stsim (glenn ford) writes:
>
>I recieved the following error trying to get conquer4 running under SCO Xenix
>386, 2.3.1:
>	Compiler error (internal): Infinite spill
>
>What causes this, and is it fixed?  Has anyone gotten conquer4 to run under
>386Xenix?
>

This is caused by a too complicated expression, probably a index.
Try finding it (by brute force) and simplify.

----------------------------------------------------------------------------
International:			Domestic:
Mats Lofstrom			Mats L|fstr|m
ENEA Data AB			ENEA Data AB
Nytorpsvagen 5b			Nytorpsv{gen 5b
Box 232				Box 232
S-183 23 TABY			183 23  T[BY
Phone: (+46) 8792 - 2500	Tel: 08 - 792 25 00

	e-mail: uunet!mcvax!enea!mla  or  mla@enea.se
----------------------------------------------------------------------------

david@csource.oz.au (david nugent) (02/25/90)

In article <945@chinacat.Lonestar.ORG> dated 22 Feb, Chip Rosenthal writes:

 > >       Compiler error (internal): Infinite spill
 > >What causes this, and is it fixed?
 >
 > My understanding is that it is due to a problem in the register usage
 > scheme in the Microsoft compiler, and is activated by complex
 > expressions.


I get this with complex expressions involving indexed arrays.  Now I usually 
evaluate the index in a separate statement using a temporary variable and 
let the optimiser do its bit to improve it (which it usually does).

  For example:

      j = whatever->arradr[(whatever->idx++)*4];

  Gets translated to

      i = (whatever->idx++) * 4;
      j = whatever->arradr[i];



           david

--  
     UUCP: ...!munnari!csource!david  <Fido/ACSNET Gate>
 Internet: david@csource.oz.au
  FidoNet: 3:632/348