mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-18 13:59:52 +08:00
gcse.c (do_local_cprop): Do not extend lifetimes of registers set by do_local_cprop.
* gcse.c (do_local_cprop): Do not extend lifetimes of registers set by do_local_cprop. From-SVN: r55626
This commit is contained in:
parent
60ffc1b816
commit
4669036917
@ -1,3 +1,8 @@
|
||||
Sun Jul 21 21:36:41 CEST 2002 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* gcse.c (do_local_cprop): Do not extend lifetimes of registers set by
|
||||
do_local_cprop.
|
||||
|
||||
2002-07-21 Andreas Jaeger <aj@suse.de>
|
||||
|
||||
* reload1.c (fixup_abnormal_edges): Remove unused variable.
|
||||
|
11
gcc/gcse.c
11
gcc/gcse.c
@ -4312,9 +4312,18 @@ do_local_cprop (x, insn, alter_jumps)
|
||||
for (l = val->locs; l; l = l->next)
|
||||
{
|
||||
rtx this_rtx = l->loc;
|
||||
rtx note;
|
||||
|
||||
if (CONSTANT_P (this_rtx))
|
||||
newcnst = this_rtx;
|
||||
if (REG_P (this_rtx) && REGNO (this_rtx) >= FIRST_PSEUDO_REGISTER)
|
||||
if (REG_P (this_rtx) && REGNO (this_rtx) >= FIRST_PSEUDO_REGISTER
|
||||
/* Don't copy propagate if it has attached REG_EQUIV note.
|
||||
At this point this only function parameters should have
|
||||
REG_EQUIV notes and if the argument slot is used somewhere
|
||||
explicitly, it means address of parameter has been taken,
|
||||
so we should not extend the lifetime of the pseudo. */
|
||||
&& (!(note = find_reg_note (l->setting_insn, REG_EQUIV, NULL_RTX))
|
||||
|| GET_CODE (XEXP (note, 0)) != MEM))
|
||||
newreg = this_rtx;
|
||||
}
|
||||
if (newcnst && constprop_register (insn, x, newcnst, alter_jumps))
|
||||
|
Loading…
Reference in New Issue
Block a user