Description: A non-optimal code sequence is illustrated. Duplicate using gcc 3.5 and command line: gcc -O3 -m64 -c test.c Testcase: #include "stdio.h" const int C0 = 0; const int C1 = 1; const int C2 = 2; void bar () { printf("bar\n"); } void foo () { /* GCC is able to figure this one out, do constant folding and dead code elimination, and eliminate the entire block of code */ if (1, 2, 0) bar (); /* .. it unsuccessfully resolves this one. */ if (C1, C2, C0) bar (); } Assembly: .foo: mflr 0 ld 9,.LC2@toc(2) std 0,16(1) lwz 0,0(9) stdu 1,-112(1) cmpwi 7,0,0 bne- 7,.L6 addi 1,1,112 ld 0,16(1) mtlr 0 blr .L6: ld 3,.LC3@toc(2) bl .puts nop addi 1,1,112 ld 0,16(1) mtlr 0 blr
Fixed between 20040721 and 20040725.