aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-11-11 17:37:45 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1994-11-11 17:37:45 -0500
commit199b61d8f811486ec839a45acd9e0889ab804580 (patch)
treeb97a3a17dadbd5dad8472a0f7533c5d635ab00e5 /gcc
parentca854c05266d12c0f0c9fa03ed5464382f7e9662 (diff)
downloadgcc-199b61d8f811486ec839a45acd9e0889ab804580.zip
gcc-199b61d8f811486ec839a45acd9e0889ab804580.tar.gz
gcc-199b61d8f811486ec839a45acd9e0889ab804580.tar.bz2
(preserve_rtl_expr_result): find_temp_slot_from_address now used.
Don't bring the temp slot to an inner level than it was. From-SVN: r8427
Diffstat (limited to 'gcc')
-rw-r--r--gcc/function.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/gcc/function.c b/gcc/function.c
index 821d61a..688fd3a 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -1098,14 +1098,14 @@ preserve_rtl_expr_result (x)
if (x == 0 || GET_CODE (x) != MEM || CONSTANT_P (XEXP (x, 0)))
return;
- /* If we can find a match, move it to our level. */
- for (p = temp_slots; p; p = p->next)
- if (p->in_use && rtx_equal_p (x, p->slot))
- {
- p->level = temp_slot_level;
- p->rtl_expr = 0;
- return;
- }
+ /* If we can find a match, move it to our level unless it is already at
+ an upper level. */
+ p = find_temp_slot_from_address (XEXP (x, 0));
+ if (p != 0)
+ {
+ p->level = MIN (p->level, temp_slot_level);
+ p->rtl_expr = 0;
+ }
return;
}