(find_temp_slot_from_address): Check for overlap from BASE_OFFSET if X
authorRichard Kenner <kenner@gcc.gnu.org>
Tue, 18 Jun 1996 11:12:49 +0000 (07:12 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Tue, 18 Jun 1996 11:12:49 +0000 (07:12 -0400)
is PLUS of virtual_stack_vars_rtx and const.

From-SVN: r12296

gcc/function.c

index 27a01c1aea531c491095469896a01ac16a889518..009e23e94f12e7f44aad579f70586a66cd343b8b 100644 (file)
@@ -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)