gcc bug
    Josh Huber 
    huberj at wpi.edu
       
    Sat Apr  1 00:27:07 EST 2000
    
    
  
Interesting gcc bug here...
in both cases this should print 0xDEADBEEF, but in the second case, garbage
is printed.
main()
{
	unsigned long t1 = 32;
	unsigned long long t2 = 64;
	printf("%x\n", 1 ? 0xDEADBEEF : t1);
	printf("%x\n", 1 ? 0xDEADBEEF : t2);
}
as expected, the 1 ? ... operation is optimized away, but the compiler seems
to screw things up ...
working case:
	li 4,15
	crxor 6,6,6
	bl printf
failure case:
	li 5,0
	li 6,15
	crxor 6,6,6
	bl printf
in the failure case, r4 is not loaded with anything, so this is were the
garbage probably comes from.
This is a greatly simplified version of an actual piece of code (obviously,
as the code above is silly :)
Josh
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
    
    
More information about the Linuxppc-dev
mailing list