aboutsummaryrefslogtreecommitdiff
path: root/gcc/final.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2018-02-26 15:40:18 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2018-02-26 15:40:18 +0000
commit24086c202126d899fc24caa495d4feb3a0687897 (patch)
treefbb95fce0b36ea744cef8468b3cecd7bde746a8e /gcc/final.c
parentb9d676b3c0f53504d48bc3f0fe3fec6dbddaed6e (diff)
downloadgcc-24086c202126d899fc24caa495d4feb3a0687897.zip
gcc-24086c202126d899fc24caa495d4feb3a0687897.tar.gz
gcc-24086c202126d899fc24caa495d4feb3a0687897.tar.bz2
re PR debug/84545 (FAIL: g++.dg/debug/pr44182.C -gdwarf-2 -O2 (test for excess errors))
PR debug/84545 * final.c (rest_of_clean_state): Also look for calls inside sequences. From-SVN: r257993
Diffstat (limited to 'gcc/final.c')
-rw-r--r--gcc/final.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/gcc/final.c b/gcc/final.c
index d2c3cd8..b3450a1 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -4845,11 +4845,19 @@ rest_of_clean_state (void)
SET_NEXT_INSN (insn) = NULL;
SET_PREV_INSN (insn) = NULL;
- if (CALL_P (insn))
+ rtx_insn *call_insn = insn;
+ if (NONJUMP_INSN_P (call_insn)
+ && GET_CODE (PATTERN (call_insn)) == SEQUENCE)
{
- rtx note = find_reg_note (insn, REG_CALL_ARG_LOCATION, NULL_RTX);
+ rtx_sequence *seq = as_a <rtx_sequence *> (PATTERN (call_insn));
+ call_insn = seq->insn (0);
+ }
+ if (CALL_P (call_insn))
+ {
+ rtx note
+ = find_reg_note (call_insn, REG_CALL_ARG_LOCATION, NULL_RTX);
if (note)
- remove_note (insn, note);
+ remove_note (call_insn, note);
}
if (final_output