aboutsummaryrefslogtreecommitdiff
path: root/gcc/local-alloc.c
diff options
context:
space:
mode:
authorBernd Schmidt <bernds@redhat.co.uk>2000-09-14 16:45:42 +0000
committerBernd Schmidt <crux@gcc.gnu.org>2000-09-14 16:45:42 +0000
commit2f93c5c3551b6b3c11a774ae6d42220eff1f4502 (patch)
treeaf29e8a74afd83f5a30120f40006cdf8c5d312df /gcc/local-alloc.c
parentcad396c8b06436a2299ddcbfd24d8b1080bff46d (diff)
downloadgcc-2f93c5c3551b6b3c11a774ae6d42220eff1f4502.zip
gcc-2f93c5c3551b6b3c11a774ae6d42220eff1f4502.tar.gz
gcc-2f93c5c3551b6b3c11a774ae6d42220eff1f4502.tar.bz2
Generate REG_EQUAL notes when they'd be helpful
From-SVN: r36409
Diffstat (limited to 'gcc/local-alloc.c')
-rw-r--r--gcc/local-alloc.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/local-alloc.c b/gcc/local-alloc.c
index 666faca..04b1613 100644
--- a/gcc/local-alloc.c
+++ b/gcc/local-alloc.c
@@ -787,6 +787,13 @@ update_equiv_regs ()
note = find_reg_note (insn, REG_EQUAL, NULL_RTX);
+ /* cse sometimes generates function invariants, but doesn't put a
+ REG_EQUAL note on the insn. Since this note would be redundant,
+ there's no point creating it earlier than here. */
+ if (! note && function_invariant_p (src))
+ REG_NOTES (insn)
+ = note = gen_rtx_EXPR_LIST (REG_EQUAL, src, REG_NOTES (insn));
+
if (REG_N_SETS (regno) != 1
&& (! note
|| ! function_invariant_p (XEXP (note, 0))