mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-24 21:11:19 +08:00
re PR debug/41353 (VTA missed-debug issues)
PR debug/41353 * regmove.c (regmove_backward_pass): Replace src with dst in the debug insn, and check for dst before rather than after. From-SVN: r152573
This commit is contained in:
parent
42ccb89075
commit
968e57283e
@ -1,3 +1,9 @@
|
||||
2009-10-08 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
PR debug/41353
|
||||
* regmove.c (regmove_backward_pass): Replace src with dst in the
|
||||
debug insn, and check for dst before rather than after.
|
||||
|
||||
2009-10-08 Janis Johnson <janis187@us.ibm.com>
|
||||
|
||||
* config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove.
|
||||
|
@ -1117,18 +1117,16 @@ regmove_backward_pass (void)
|
||||
break;
|
||||
}
|
||||
|
||||
/* We can't make this change if SRC is read or
|
||||
/* We can't make this change if DST is mentioned at
|
||||
all in P, since we are going to change its value.
|
||||
We can't make this change if SRC is read or
|
||||
partially written in P, since we are going to
|
||||
eliminate SRC. We can't make this change
|
||||
if DST is mentioned at all in P,
|
||||
since we are going to change its value. */
|
||||
if (reg_overlap_mentioned_p (src, PATTERN (p)))
|
||||
{
|
||||
if (DEBUG_INSN_P (p))
|
||||
validate_replace_rtx_group (dst, src, insn);
|
||||
else
|
||||
break;
|
||||
}
|
||||
eliminate SRC. However, if it's a debug insn, we
|
||||
can't refrain from making the change, for this
|
||||
would cause codegen differences, so instead we
|
||||
invalidate debug expressions that reference DST,
|
||||
and adjust references to SRC in them so that they
|
||||
become references to DST. */
|
||||
if (reg_mentioned_p (dst, PATTERN (p)))
|
||||
{
|
||||
if (DEBUG_INSN_P (p))
|
||||
@ -1137,6 +1135,13 @@ regmove_backward_pass (void)
|
||||
else
|
||||
break;
|
||||
}
|
||||
if (reg_overlap_mentioned_p (src, PATTERN (p)))
|
||||
{
|
||||
if (DEBUG_INSN_P (p))
|
||||
validate_replace_rtx_group (src, dst, p);
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
/* If we have passed a call instruction, and the
|
||||
pseudo-reg DST is not already live across a call,
|
||||
|
Loading…
x
Reference in New Issue
Block a user