summaryrefslogtreecommitdiff
path: root/gcc/dwarf2cfi.c
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2011-07-08 23:48:53 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2011-07-08 23:48:53 +0000
commit6d627b5fb50a3b9aab543d2000f1203006f3a3ae (patch)
tree377656380433669138a5edd1aa6731ac5c2467ef /gcc/dwarf2cfi.c
parent3e7a86598be38df0b46511c02061908e7fdea7e2 (diff)
downloadgcc-6d627b5fb50a3b9aab543d2000f1203006f3a3ae.tar.gz
dwarf2cfi: Insert notes correctly wrt tablejumps.
PR bootstrap/49680 * dwarf2cfi.c (dwarf2out_frame_debug): Insert cfi notes after any tablejump vector. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@176065 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/dwarf2cfi.c')
-rw-r--r--gcc/dwarf2cfi.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/gcc/dwarf2cfi.c b/gcc/dwarf2cfi.c
index 44655bb51bc..8031d48682b 100644
--- a/gcc/dwarf2cfi.c
+++ b/gcc/dwarf2cfi.c
@@ -2180,8 +2180,16 @@ dwarf2out_frame_debug (rtx insn, bool after_p)
bool handled_one = false;
bool need_flush = false;
- /* Remember where we are to insert notes. */
- cfi_insn = (after_p ? insn : PREV_INSN (insn));
+ /* 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 ();