diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1994-11-11 17:37:45 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1994-11-11 17:37:45 -0500 |
commit | 199b61d8f811486ec839a45acd9e0889ab804580 (patch) | |
tree | b97a3a17dadbd5dad8472a0f7533c5d635ab00e5 /gcc | |
parent | ca854c05266d12c0f0c9fa03ed5464382f7e9662 (diff) | |
download | gcc-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.c | 16 |
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; } |