Sent from my iPhone
On Jun 13, 2010, at 2:34 PM, "Daniel dot Davies at xerox dot com" <gcc-bugzi...@gcc.gnu.org
> wrote:
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.
It sounds like the addition is overflowing and signed integer overflow
is undefined. Use either -fwrapv or -fno-strict-overflow.
$ 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