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
This commit is contained in:
Jakub Jelinek 2012-02-09 12:41:25 +01:00 committed by Jakub Jelinek
parent 19d7de5b72
commit 65cca5de63
2 changed files with 15 additions and 2 deletions

View File

@ -1,3 +1,11 @@
2012-02-09 Jakub Jelinek <jakub@redhat.com>
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 <bin.cheng@arm.com>
PR middle-end/51867

View File

@ -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);