28 lines
1.1 KiB
Diff
28 lines
1.1 KiB
Diff
2012-02-08 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.
|
|
|
|
--- gcc/var-tracking.c.jj 2012-01-30 00:10:01.000000000 +0100
|
|
+++ gcc/var-tracking.c 2012-02-08 16:20:54.808523330 +0100
|
|
@@ -8225,9 +8225,14 @@ emit_note_insn_var_location (void **varp
|
|
/* 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);
|