From 65cca5de63ce4a3eca83668ff556fc88ea57c696 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 9 Feb 2012 12:41:25 +0100 Subject: [PATCH] re PR debug/52165 (ICE in add_var_loc_to_decl, at dwarf2out.c:5430 building libgo on s390/s390x) PR debug/52165 * var-tracking.c (emit_note_insn_var_location): If EMIT_NOTE_BEFORE_INSN and insn is NOTE_INSN_CALL_ARG_LOCATION, emit it before next non-NOTE_INSN_CALL_ARG_LOCATION non-NOTE_DURING_CALL_P insn. From-SVN: r184042 --- gcc/ChangeLog | 8 ++++++++ gcc/var-tracking.c | 9 +++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 05837c6dd295..07ae1a8a31b1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2012-02-09 Jakub Jelinek + + PR debug/52165 + * var-tracking.c (emit_note_insn_var_location): If + EMIT_NOTE_BEFORE_INSN and insn is NOTE_INSN_CALL_ARG_LOCATION, + emit it before next non-NOTE_INSN_CALL_ARG_LOCATION + non-NOTE_DURING_CALL_P insn. + 2012-02-09 Bin Cheng PR middle-end/51867 diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c index 1f4903a83fec..e9b5ca886ae3 100644 --- a/gcc/var-tracking.c +++ b/gcc/var-tracking.c @@ -8225,9 +8225,14 @@ emit_note_insn_var_location (void **varp, void *data) /* Make sure that the call related notes come first. */ while (NEXT_INSN (insn) && NOTE_P (insn) - && NOTE_DURING_CALL_P (insn)) + && ((NOTE_KIND (insn) == NOTE_INSN_VAR_LOCATION + && NOTE_DURING_CALL_P (insn)) + || NOTE_KIND (insn) == NOTE_INSN_CALL_ARG_LOCATION)) insn = NEXT_INSN (insn); - if (NOTE_P (insn) && NOTE_DURING_CALL_P (insn)) + if (NOTE_P (insn) + && ((NOTE_KIND (insn) == NOTE_INSN_VAR_LOCATION + && NOTE_DURING_CALL_P (insn)) + || NOTE_KIND (insn) == NOTE_INSN_CALL_ARG_LOCATION)) note = emit_note_after (NOTE_INSN_VAR_LOCATION, insn); else note = emit_note_before (NOTE_INSN_VAR_LOCATION, insn); -- 2.47.2