diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2018-02-26 15:40:18 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2018-02-26 15:40:18 +0000 |
commit | 24086c202126d899fc24caa495d4feb3a0687897 (patch) | |
tree | fbb95fce0b36ea744cef8468b3cecd7bde746a8e /gcc/final.c | |
parent | b9d676b3c0f53504d48bc3f0fe3fec6dbddaed6e (diff) | |
download | gcc-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.c | 14 |
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 |