C-compiler bugs
    Dag Nygren 
    dny at kolvi.hut.fi
       
    Thu May 25 10:19:31 AEST 1989
    
    
  
Just ran into a couple of bugs? in the C-compiler included in our
Xenix/386 2.3.1 system running on an ALR 20 MHz Flexcache .
Problem 1:
	Symptom: Compiler complaining about a code segment bigger
		than 64 K (This IS a 386 processor !!).
	env:	The program was generated with a Pascal to C translator
		and thus quite big. The code segment was probably bigger
		than 64 Kbyte.
Problem 2:
	symptom: Core dumps from correct code.
	env:	Same as above.
	comment: I traced this problem to branches generated with
		4 byte offsets by the code generator.
		The linker seems to think that they are 2 bytes long
		and even make a sign extension on them !!.
		Thats to say: your offset 0x00008765  is suddenly
		transformed to a 0xffff8765.
	Workaround:
		Run program until it dumps its core, dig out your adb,
		find the instruction where it stopped and change the ffff
		to 0000. Iterate until program works flawlessly :-()
Problem 3:
	Symptom: Compiler internal error: infinite spill
	Code:
		long x, y, z;
		long f1();
		y = f1(z + 2, 2 * (x / 4) + 4 + ( x % 2));
	Workaround:
		Do half of the computing into a temporary variable
		and then the function call with rest of the expression.
Am I using an old compiler version or .. 
If anyone has fixes, suggestions or just plain sympathy  please feel
free to contact me.
Email: dag at atomsf.uucp  or dny at kolvi.uucp
SnailMail:
	Dag Nygren
	Tornplanet 1 bost. 46
	02120 ESBO
	FINLAND
    
    
More information about the Comp.unix.xenix
mailing list