diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-07-09 19:57:27 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-07-09 19:57:27 +0000 |
commit | a6b622eb03be06091ebe6995d778335dc84d8d2b (patch) | |
tree | 358bc24130084bd3459847b70ee6eecb6e8a8a5b /gcc/dwarf2cfi.c | |
parent | 06a49c5acaa2e0a62928d6406f7ad29cb1f653ca (diff) | |
download | gcc-a6b622eb03be06091ebe6995d778335dc84d8d2b.tar.gz |
PR debug/49686
* dwarf2cfi.c (dwarf2out_frame_debug): Don't set cfi_insn here...
(create_cfi_notes): ... do it here instead.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@176091 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/dwarf2cfi.c')
-rw-r--r-- | gcc/dwarf2cfi.c | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/gcc/dwarf2cfi.c b/gcc/dwarf2cfi.c index 262506766e1..d96aa703878 100644 --- a/gcc/dwarf2cfi.c +++ b/gcc/dwarf2cfi.c @@ -2180,17 +2180,6 @@ dwarf2out_frame_debug (rtx insn, bool after_p) bool handled_one = false; bool need_flush = false; - /* Remember where we are to insert notes. Do not separate tablejump - insns from their ADDR_DIFF_VEC. Putting the note after the VEC - should be ok. */ - if (after_p) - { - if (!tablejump_p (insn, NULL, &cfi_insn)) - cfi_insn = insn; - } - else - cfi_insn = PREV_INSN (insn); - if (!NONJUMP_INSN_P (insn) || clobbers_queued_reg_save (insn)) dwarf2out_flush_queued_reg_saves (); @@ -2201,7 +2190,6 @@ dwarf2out_frame_debug (rtx insn, bool after_p) is still used to save registers. */ if (!ACCUMULATE_OUTGOING_ARGS) dwarf2out_notice_stack_adjust (insn, after_p); - cfi_insn = NULL; return; } @@ -2323,7 +2311,6 @@ dwarf2out_frame_debug (rtx insn, bool after_p) if (need_flush) dwarf2out_flush_queued_reg_saves (); - cfi_insn = NULL; } /* Examine CFI and return true if a cfi label and set_loc is needed @@ -2432,6 +2419,8 @@ create_cfi_notes (void) { rtx pat; + cfi_insn = PREV_INSN (insn); + if (BARRIER_P (insn)) { dwarf2out_frame_debug (insn, false); @@ -2443,9 +2432,7 @@ create_cfi_notes (void) switch (NOTE_KIND (insn)) { case NOTE_INSN_PROLOGUE_END: - cfi_insn = PREV_INSN (insn); dwarf2out_flush_queued_reg_saves (); - cfi_insn = NULL; break; case NOTE_INSN_EPILOGUE_BEG: @@ -2457,7 +2444,6 @@ create_cfi_notes (void) case NOTE_INSN_CFA_RESTORE_STATE: cfi_insn = insn; dwarf2out_frame_debug_restore_state (); - cfi_insn = NULL; break; } continue; @@ -2484,8 +2470,15 @@ create_cfi_notes (void) || find_reg_note (insn, REG_CFA_FLUSH_QUEUE, NULL)) dwarf2out_frame_debug (insn, false); + /* Do not separate tablejump insns from their ADDR_DIFF_VEC. + Putting the note after the VEC should be ok. */ + if (!tablejump_p (insn, NULL, &cfi_insn)) + cfi_insn = insn; + dwarf2out_frame_debug (insn, true); } + + cfi_insn = NULL; } /* Determine if we need to save and restore CFI information around this |