aboutsummaryrefslogtreecommitdiff
path: root/gcc/function.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1996-06-18 07:12:49 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1996-06-18 07:12:49 -0400
commitabb522465e90d57c54a95a0e52a59fab06712675 (patch)
treedd87980d871a9576736917be3f7098586a27c1a0 /gcc/function.c
parent2dd4caced362cb09f8efa27f1bc99c74cfe452b1 (diff)
downloadgcc-abb522465e90d57c54a95a0e52a59fab06712675.zip
gcc-abb522465e90d57c54a95a0e52a59fab06712675.tar.gz
gcc-abb522465e90d57c54a95a0e52a59fab06712675.tar.bz2
(find_temp_slot_from_address): Check for overlap from BASE_OFFSET if X
is PLUS of virtual_stack_vars_rtx and const. From-SVN: r12296
Diffstat (limited to 'gcc/function.c')
-rw-r--r--gcc/function.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/function.c b/gcc/function.c
index 27a01c1..009e23e 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -1035,7 +1035,12 @@ find_temp_slot_from_address (x)
if (! p->in_use)
continue;
else if (XEXP (p->slot, 0) == x
- || p->address == x)
+ || p->address == x
+ || (GET_CODE (x) == PLUS
+ && XEXP (x, 0) == virtual_stack_vars_rtx
+ && GET_CODE (XEXP (x, 1)) == CONST_INT
+ && INTVAL (XEXP (x, 1)) >= p->base_offset
+ && INTVAL (XEXP (x, 1)) < p->base_offset + p->full_size))
return p;
else if (p->address != 0 && GET_CODE (p->address) == EXPR_LIST)