[Bug target/52517] New: Bug in PPC pointer arithmetic
jdemeyer at cage dot ugent.be
gcc-bugzilla@gcc.gnu.org
Tue Mar 6 23:20:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52517
Bug #: 52517
Summary: Bug in PPC pointer arithmetic
Classification: Unclassified
Product: gcc
Version: 4.6.3
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: jdemeyer@cage.ugent.be
Created attachment 26846
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26846
Testcase, file 1
This happens on an OS X 10.4 PPC machine (powerpc-apple-darwin8.11.0) using GCC
4.6.3. Compile the test program with
gcc bug.c magic.c -O2 -o bug
I would expect the output to be 42, but instead I get 123456789. Looking at
the pointer arithmetic, M should be equal to L. So it seems that GCC assumes
that the assignment of L cannot affect M below.
The value of x matters a lot (but it clearly should not). So far, I only
managed to reproduce the problem when x is a pointer to something, casted to an
unsigned long.
Replacing
M = *(unsigned long*)(B + x);
by the equivalent
M = ((unsigned long*)(B))[x/4];
solves the problem.
Might be related to PR49330?
$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/Users/jdemeyer/sage-5.0.beta7-gcc/local/libexec/gcc/powerpc-apple-darwin8.11.0/4.6.3/lto-wrapper
Target: powerpc-apple-darwin8.11.0
Configured with: ../src/configure
--prefix=/Users/jdemeyer/sage-5.0.beta7-gcc/local
--with-local-prefix=/Users/jdemeyer/sage-5.0.beta7-gcc/local
--with-gmp=/Users/jdemeyer/sage-5.0.beta7-gcc/local
--with-mpfr=/Users/jdemeyer/sage-5.0.beta7-gcc/local
--with-mpc=/Users/jdemeyer/sage-5.0.beta7-gcc/local --with-system-zlib
--disable-multilib
Thread model: posix
gcc version 4.6.3 (GCC)
More information about the Gcc-bugs
mailing list