[gnu.gcc.bug] BUG in GCC 1.34 on the Alliant

brooks@MADDOG.LLNL.GOV (Eugene Brooks) (03/11/89)

The following C program failes when compiled with gcc -O on
the Alliant.  The version was 1.34 and no modifications were
made with the release.  Removing the -O option produces good code.
Further attempts to simplify the automatic declarations cause the
code to generate a bad operand of a type reported with another bug hitter.

brooks@MADDOG.LLNL.GOV (Eugene Brooks) (03/11/89)

Gee, it must be getting late!  I forgot the but hitter program.

gcc -O on this source file, for GCC 1.34 on the Alliant, will
fail the floating point test and print the FAILED message.
Further attemst to isolate the bug turn it into a "Invalid operand"
producer, reported in an earlier bug message.


/*--------------------------------------------------------------------*/
main()					/***** BEGINNING OF MAIN. *****/
{

	char c = 'Y', cc = '\131', *ccc = "Y", cccc = 1*2 / 2 + 2 - 1;
	char ctemp, bn='\n', br='\r', bt='\t', bb='\b', bf='\f',
	bbs='\\', bq='\'';
	int ioct=0131, ihex=0x59, idec=17711, itemp;
	float z=17711.6, zz=.177116e5, ztemp;
	double zd=17711.6, zzd=.177116e5, zzzd;
	short int s=89;
	long int l=17711L,ll;

	foo();
/*--------------------------------------------------------------------*/

	zzzd = zd / c;
	if (zzzd <= 199 || zzzd >= 200)
	{
		printf("Expected value between 199 and 200, got %f\n",zzzd);
		printf("BUT THE TEST FAILED\n");
	}
	else {
		printf("PASSED\n");
	}

}					/******** END OF MAIN. ********/
/*--------------------------------------------------------------------*/
					/*<<<<<FUNCTIONS GO HERE<<<<<<*/
foo()
{
}