[Bug target/56561] New: Miscompilation with -Os -arm
mh+gcc at glandium dot org
gcc-bugzilla@gcc.gnu.org
Thu Mar 7 12:47:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56561
Bug #: 56561
Summary: Miscompilation with -Os -arm
Classification: Unclassified
Product: gcc
Version: 4.6.3
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: mh+gcc@glandium.org
Created attachment 29609
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=29609
Testcase
(originally posted on http://gcc.gnu.org/ml/gcc/2013-03/msg00051.html)
At Mozilla, we've encountered a GCC 4.6 miscompilation in the ARMv6
build of Firefox for Android. We'd like to evaluate whether this bug is
hitting us in more places than the one we spotted. To that end, we'd
need to know what particular bug in GCC leads to this miscompilation.
The attached file is the preprocessed source, slightly simplified, and with
enough additions to allow it to be self-contained and with a main() that is
able to act on the miscompilation being there or not.
I was able to reproduce the miscompilation with both the GCC 4.6 from the
Android NDK r8d and 4.6.3 from Debian unstable. It apparently happens
for any -march, with -marm, but not -mthumb. It happens at -Os but not
-O2.
The problematic assembly looks like the following. It corresponds to
the C code after the second call to DER_SetUInteger in sftk_mkPrivKey::
bl DER_SetUInteger(PLT)
mov r3, #0
cmp sl, r3
movne r0, #2
moveq r0, r3
sl/r10 is never set anywhere in the function, so we're getting random
behaviour.
This doesn't happen with GCC 4.7, which suggests it may be a known bug.
Any ideas?
(On an ARM host:)
$ gcc -o pkcs11 pkcs11.i -marm -Os -fno-inline
./pkcs11
$ ./pkcs11
FAIL
$ gcc -o pkcs11 pkcs11.i -marm -O2 -fno-inline
./pkcs11
$ ./pkcs11
PASS
More information about the Gcc-bugs
mailing list