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