aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1993-08-10 12:11:27 -0700
committerJim Wilson <wilson@gcc.gnu.org>1993-08-10 12:11:27 -0700
commitf7911249bb716482e110998ac288f659cb6b7ef1 (patch)
tree9d4049706cd42eb2837129547357457b22bc9758 /gcc
parent7033d44cd60df91a01b40fc1ca15a4781e601b15 (diff)
downloadgcc-f7911249bb716482e110998ac288f659cb6b7ef1.zip
gcc-f7911249bb716482e110998ac288f659cb6b7ef1.tar.gz
gcc-f7911249bb716482e110998ac288f659cb6b7ef1.tar.bz2
(cse_insn): After inserting src_eqv...
(cse_insn): After inserting src_eqv, check to see if it is identical to any uninserted SET_SRCs, and if so, set their src_elt to src_eqv_elt. From-SVN: r5129
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cse.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/cse.c b/gcc/cse.c
index 81a144a..540c777 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -6724,6 +6724,14 @@ cse_insn (insn, in_libcall_block)
elt->in_memory = src_eqv_in_memory;
elt->in_struct = src_eqv_in_struct;
src_eqv_elt = elt;
+
+ /* Check to see if src_eqv_elt is the same as a set source which
+ does not yet have an elt, and if so set the elt of the set source
+ to src_eqv_elt. */
+ for (i = 0; i < n_sets; i++)
+ if (sets[i].rtl && sets[i].src_elt == 0
+ && rtx_equal_p (SET_SRC (sets[i].rtl), src_eqv))
+ sets[i].src_elt = src_eqv_elt;
}
for (i = 0; i < n_sets; i++)