This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/56351] ARM Big-Endian: storing local double to packed variable causes corruption


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}


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]