[comp.sys.atari.st] Megamax c Bug

DERMOTT@DREA-XX.ARPA (Dave Dermott) (03/28/88)

Re: Bug in Megamax c ver 1.1
  The following C source produces incorrect code:
/******************************/
main()
{
test((char)0); /* bug here */
test((char)1); /* this is OK */
}
/********* produced code *************/
main:/* global */
	LINK	A6,L$0
	CLR	-(A7)
	JSR	test(PC)   test((char)0);
	MOVE.B	#1,D0      missing stack add
	EXT	D0
	MOVE	D0,-(A7)
	JSR	test(PC)   test((char)1);
	ADDQ.L	#2,A7      OK
L1:
	UNLK	A6
	RTS
/**********************************/
   The stack pointer is not restored after the first call to test().  This
will cause unpredictable results later.  The C source is not normal - it
was produced by a PASCAL to C translation program in the TeX-to-C
package.It took a lot of debugging to find this error.  There are 10 C
files of 50Kbytes each and the executable is about 250K. I think the cast
to char is unnessary in most cases. 
    Is this fixed in the new Megamax (Laser c)? I think I'm going to have
to get a better compiler to get TeX-C working.

David Dermott DERMOTT@DREA-XX.ARPA
DARTMOUTH N.S. Canada.
   
-------