From 830f11fee4ed84fa3fe0320cdc51c215ec7bc30c Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Fri, 8 Jul 2011 16:48:53 -0700 Subject: [PATCH] dwarf2cfi: Insert notes correctly wrt tablejumps. PR bootstrap/49680 * dwarf2cfi.c (dwarf2out_frame_debug): Insert cfi notes after any tablejump vector. From-SVN: r176065 --- gcc/ChangeLog | 6 ++++++ gcc/dwarf2cfi.c | 12 ++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8ad805822fe..3ba9bf7ac50 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-07-08 Richard Henderson + + PR bootstrap/49680 + * dwarf2cfi.c (dwarf2out_frame_debug): Insert cfi notes after + any tablejump vector. + 2011-07-08 Jakub Jelinek PR target/49621 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 (); -- 2.30.2