[Bug c/23600] New: Invalid code optimization for x*const/const
Randy dot Bryant at cs dot cmu dot edu
gcc-bugzilla@gcc.gnu.org
Sun Aug 28 01:47:00 GMT 2005
The following C function illustrates a bug I have encountered for gcc 3.4.2
running on x86_64. The problem occurs at any optimization level and for both -
m32 and -m64.
#ifndef CONST
/* Following constant can be arbitrary */
#define CONST 767
#endif
int testd(int x)
{
return ((x*CONST)/CONST) == x;
}
The generated assembly code (compiled -O2) is:
testd:
.LFB2:
movl $1, %eax
ret
i.e., the function always returns 1.
Output of gcc -v:
Reading specs from /usr/lib/gcc/x86_64-redhat-linux/3.4.2/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/\
usr/share/info --enable-shared --enable-threads=posix --disable-checking --with\
-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-lang\
uages=c,c++,objc,java,f77 --enable-java-awt=gtk --host=x86_64-redhat-linux
Thread model: posix
gcc version 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)
Here's what's in /proc/version:
Linux version 2.6.11-1.35_FC3smp (bhcompile@crowe.devel.redhat.com) (gcc versio\
n 3.4.3 20050227 (Red Hat 3.4.3-22)) #1 SMP Mon Jun 13 01:16:04 EDT 2005
--
Summary: Invalid code optimization for x*const/const
Product: gcc
Version: 3.4.2
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: Randy dot Bryant at cs dot cmu dot edu
CC: gcc-bugs at gcc dot gnu dot org
GCC host triplet: x86_64-redhat-linux
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23600
More information about the Gcc-bugs
mailing list