When compiled with -03, the attached file prints out an error message due to incorrectly comparing "xCount + 32 < 0x80000000". When compiled with the default optimization, it prints out the correct message.
$ gcc -v -save-temps -std=gnu99 -fno-strict-aliasing -funroll-loops -march=core2 -mfpmath=387 -ffloat-store -pedantic -Wall -W -Wstrict-prototypes -Wpointer-arith -Wwrite-strings -Wcast-qual -Wmissing-prototypes -fPIC gcc450CompareBug.c Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/tool/gcc/4.5.0/i386-pc-solaris2.10/libexec/gcc/i386-pc-solaris2.10/4.5.0/lto-wrapper Target: i386-pc-solaris2.10 Configured with: /tool/gcc/4.5.0/gcc-4.5.0/configure --prefix=/tool/gcc/4.5.0/i386-pc-solaris2.10 --with-gnu-as --with-gnu-ld --disable-shared --enable-lto --with-libelf=/usr/local --enable-gold Thread model: posix gcc version 4.5.0 (GCC) COLLECT_GCC_OPTIONS='-v' '-save-temps' '-std=gnu99' '-fno-strict-aliasing' '-funroll-loops' '-march=core2' '-mfpmath=387' '-ffloat-store' '-pedantic' '-Wall' '-W' '-Wstrict-prototypes' '-Wpointer-arith' '-Wwrite-strings' '-Wcast-qual' '-Wmissing-prototypes' '-fPIC' /tool/gcc/4.5.0/i386-pc-solaris2.10/libexec/gcc/i386-pc-solaris2.10/4.5.0/cc1 -E -quiet -v gcc450CompareBug.c -march=core2 -mfpmath=387 -std=gnu99 -pedantic -Wall -W -Wstrict-prototypes -Wpointer-arith -Wwrite-strings -Wcast-qual -Wmissing-prototypes -fno-strict-aliasing -funroll-loops -ffloat-store -fPIC -fpch-preprocess -o gcc450CompareBug.i ignoring nonexistent directory "/tool/gcc/4.5.0/i386-pc-solaris2.10/lib/gcc/i386-pc-solaris2.10/4.5.0/../../../../i386-pc-solaris2.10/include" #include "..." search starts here: #include <...> search starts here: /usr/local/include /tool/gcc/4.5.0/i386-pc-solaris2.10/include /tool/gcc/4.5.0/i386-pc-solaris2.10/lib/gcc/i386-pc-solaris2.10/4.5.0/include /tool/gcc/4.5.0/i386-pc-solaris2.10/lib/gcc/i386-pc-solaris2.10/4.5.0/include-fixed /usr/include End of search list. COLLECT_GCC_OPTIONS='-v' '-save-temps' '-std=gnu99' '-fno-strict-aliasing' '-funroll-loops' '-march=core2' '-mfpmath=387' '-ffloat-store' '-pedantic' '-Wall' '-W' '-Wstrict-prototypes' '-Wpointer-arith' '-Wwrite-strings' '-Wcast-qual' '-Wmissing-prototypes' '-fPIC' /tool/gcc/4.5.0/i386-pc-solaris2.10/libexec/gcc/i386-pc-solaris2.10/4.5.0/cc1 -fpreprocessed gcc450CompareBug.i -quiet -dumpbase gcc450CompareBug.c -march=core2 -mfpmath=387 -auxbase gcc450CompareBug -pedantic -Wall -W -Wstrict-prototypes -Wpointer-arith -Wwrite-strings -Wcast-qual -Wmissing-prototypes -std=gnu99 -version -fno-strict-aliasing -funroll-loops -ffloat-store -fPIC -o gcc450CompareBug.s GNU C (GCC) version 4.5.0 (i386-pc-solaris2.10) compiled by GNU C version 4.5.0, GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8.2 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 GNU C (GCC) version 4.5.0 (i386-pc-solaris2.10) compiled by GNU C version 4.5.0, GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8.2 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: cf0046f5352e75464cfcf0489db9539c COLLECT_GCC_OPTIONS='-v' '-save-temps' '-std=gnu99' '-fno-strict-aliasing' '-funroll-loops' '-march=core2' '-mfpmath=387' '-ffloat-store' '-pedantic' '-Wall' '-W' '-Wstrict-prototypes' '-Wpointer-arith' '-Wwrite-strings' '-Wcast-qual' '-Wmissing-prototypes' '-fPIC' /tool/gcc/4.5.0/i386-pc-solaris2.10/lib/gcc/i386-pc-solaris2.10/4.5.0/../../../../i386-pc-solaris2.10/bin/as -v -V -Qy -s -o gcc450CompareBug.o gcc450CompareBug.s GNU assembler version 2.20 (i386-pc-solaris2.10) using BFD version (GNU Binutils) 2.20 COMPILER_PATH=/tool/gcc/4.5.0/i386-pc-solaris2.10/libexec/gcc/i386-pc-solaris2.10/4.5.0/:/tool/gcc/4.5.0/i386-pc-solaris2.10/libexec/gcc/i386-pc-solaris2.10/4.5.0/:/tool/gcc/4.5.0/i386-pc-solaris2.10/libexec/gcc/i386-pc-solaris2.10/:/tool/gcc/4.5.0/i386-pc-solaris2.10/lib/gcc/i386-pc-solaris2.10/4.5.0/:/tool/gcc/4.5.0/i386-pc-solaris2.10/lib/gcc/i386-pc-solaris2.10/:/tool/gcc/4.5.0/i386-pc-solaris2.10/lib/gcc/i386-pc-solaris2.10/4.5.0/../../../../i386-pc-solaris2.10/bin/:/usr/ccs/bin/ LIBRARY_PATH=/tool/gcc/4.5.0/i386-pc-solaris2.10/lib/gcc/i386-pc-solaris2.10/4.5.0/:/tool/gcc/4.5.0/i386-pc-solaris2.10/lib/gcc/i386-pc-solaris2.10/4.5.0/../../../../i386-pc-solaris2.10/lib/:/tool/gcc/4.5.0/i386-pc-solaris2.10/lib/gcc/i386-pc-solaris2.10/4.5.0/../../../:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS='-v' '-save-temps' '-std=gnu99' '-fno-strict-aliasing' '-funroll-loops' '-march=core2' '-mfpmath=387' '-ffloat-store' '-pedantic' '-Wall' '-W' '-Wstrict-prototypes' '-Wpointer-arith' '-Wwrite-strings' '-Wcast-qual' '-Wmissing-prototypes' '-fPIC' /tool/gcc/4.5.0/i386-pc-solaris2.10/libexec/gcc/i386-pc-solaris2.10/4.5.0/collect2 -V -m elf_i386 -Y P,/usr/ccs/lib:/usr/lib -Qy /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/values-Xa.o /tool/gcc/4.5.0/i386-pc-solaris2.10/lib/gcc/i386-pc-solaris2.10/4.5.0/crtbegin.o -L/tool/gcc/4.5.0/i386-pc-solaris2.10/lib/gcc/i386-pc-solaris2.10/4.5.0 -L/tool/gcc/4.5.0/i386-pc-solaris2.10/lib/gcc/i386-pc-solaris2.10/4.5.0/../../../../i386-pc-solaris2.10/lib -L/tool/gcc/4.5.0/i386-pc-solaris2.10/lib/gcc/i386-pc-solaris2.10/4.5.0/../../.. gcc450CompareBug.o -lgcc -lc -lgcc /tool/gcc/4.5.0/i386-pc-solaris2.10/lib/gcc/i386-pc-solaris2.10/4.5.0/crtend.o /usr/lib/crtn.o GNU ld (GNU Binutils) 2.20 Supported emulations: elf_i386_ldso elf_i386 elf_x86_64 elf_l1om -- Summary: wrong code due to branch optimization Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: Daniel dot Davies at xerox dot com GCC build triplet: i386-pc-solaris2.10 GCC host triplet: i386-pc-solaris2.10 GCC target triplet: i386-pc-solaris2.10 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44530