[Bug target/56351] ARM Big-Endian: storing local double to packed variable causes corruption
sethml at google dot com
gcc-bugzilla@gcc.gnu.org
Fri Feb 15 22:44:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56351
Seth LaForge <sethml at google dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |sethml at google dot com
--- Comment #3 from Seth LaForge <sethml at google dot com> 2013-02-15 22:43:56 UTC ---
Thank you Andrew, super useful pointer! Yes, that patch does appear to fix my
problem. I've backported it to gcc 4.7 and posted a patch:
http://gcc.gnu.org/ml/gcc-patches/2013-02/msg00800.html
With gcc 4.7.2 with my/Julian's patch, I get correct code:
43 PrintAndStoreUnaligned:
46 0020 B538 push {r3, r4, r5, lr}
47 0022 EC523B10 fmrrd r3, r2, d0
48 0026 4614 mov r4, r2
49 0028 461D mov r5, r3
50 002a 4622 mov r2, r4
51 002c EC423B10 fmdrr d0, r3, r2
52 0030 F7FFFFFE bl PrintDouble
53 0034 F2400300 movw r3, #:lower16:unaligned_double
54 0038 F2C00300 movt r3, #:upper16:unaligned_double
55 003c 605D str r5, [r3, #4]
56 003e 601C str r4, [r3, #0]
57 0040 BD38 pop {r3, r4, r5, pc}
More information about the Gcc-bugs
mailing list