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 middle-end/41260] [4.5 Regression] major regressions on *-apple-darwin10 at -m64 caused by r147995



------- Comment #40 from howarth at nitro dot med dot uc dot edu  2009-09-20 18:27 -------
Is this the location of the additional epilogue notes being added in r147995?

@@ -8637,7 +8757,17 @@
                                          + frame.nregs * UNITS_PER_WORD
                                         + frame.nsseregs * 16
                                         + frame.padding0));
-             emit_insn (gen_rtx_SET (VOIDmode, stack_pointer_rtx, tmp));
+             tmp = emit_insn (gen_rtx_SET (VOIDmode, stack_pointer_rtx, tmp));
+
+             gcc_assert (ix86_cfa_state->reg == stack_pointer_rtx);
+             if (ix86_cfa_state->offset != UNITS_PER_WORD)
+               {
+                 ix86_cfa_state->offset = UNITS_PER_WORD;
+                 add_reg_note (tmp, REG_CFA_DEF_CFA,
+                               plus_constant (stack_pointer_rtx,
+                                              UNITS_PER_WORD));
+                 RTX_FRAME_RELATED_P (tmp) = 1;
+               }
            }
        }
       else if (!frame_pointer_needed)

If so, we can't just apply an "ifndef __APPLE__/#endif" wrapper appropriately
there to suppress the addition of the epilog note? The question remains if the
new unwinder
will tolerate missing them. Remember that on darwin >= 10, libgcc is subsumed
into
libSystem and the libgcc built by FSF gcc is never actually used. So we have to
be
careful to not break darwin9 and earlier when suppressing the epilog notes for
darwin10.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41260


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