[Bug target/89093] [9 Regression] C++ exception handling clobbers d8 VFP register

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Jan 28 19:25:00 GMT 2019


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89093

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
It is indeed saved in the prologue:
        @ args = 0, pretend = 0, frame = 64
        @ frame_needed = 0, uses_anonymous_args = 0
        and     ip, r0, #3
        push    {r4, r5, r6, r7, r8, r9, r10, fp, lr}
        .save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
        cmp     ip, #1
        vpush.64        {d8}
        .vsave {d8}
        mov     r3, #0
        .pad #76
        sub     sp, sp, #76
but it is restored in the epilogue:
.L61:
        add     sp, sp, #76
        @ sp needed
        vldm    sp!, {d8}
        pop     {r4, r5, r6, r7, r8, r9, r10, fp, pc}
and there are no other returns that I can see.  So, why isn't it restored
there?
Has the stack pointer been clobbered, or the stack slot in there?
eh_personality.cc has been compiled with
-mtune=cortex-a9 -mfloat-abi=hard -mfpu=vfpv3-d16 -mtls-dialect=gnu -marm
-march=armv7-a+fp -O2 -fPIC


More information about the Gcc-bugs mailing list