(instantiate_decls{,_1}): Don't do instantiation here if the address
authorRichard Kenner <kenner@gcc.gnu.org>
Fri, 17 Jul 1992 09:58:38 +0000 (05:58 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Fri, 17 Jul 1992 09:58:38 +0000 (05:58 -0400)
is mode-dependent.

From-SVN: r1615

gcc/function.c

index 37a0f47a0c836e81d9d1ad0051d5e820c393a0fe..87db0bb15cbe2c1ab93d83ec36db5d72b2788e97 100644 (file)
@@ -1902,12 +1902,16 @@ instantiate_decls (fndecl, valid_only)
   /* Process all parameters of the function.  */
   for (decl = DECL_ARGUMENTS (fndecl); decl; decl = TREE_CHAIN (decl))
     {
-      if (DECL_RTL (decl) && GET_CODE (DECL_RTL (decl)) == MEM)
+      if (DECL_RTL (decl) && GET_CODE (DECL_RTL (decl)) == MEM
+         && (! valid_only
+             || ! mode_dependent_address_p (XEXP (DECL_RTL (decl), 0))))
        instantiate_virtual_regs_1 (&XEXP (DECL_RTL (decl), 0),
                                    (valid_only ? DECL_RTL (decl) : NULL_RTX),
                                    0);
       if (DECL_INCOMING_RTL (decl)
-         && GET_CODE (DECL_INCOMING_RTL (decl)) == MEM)
+         && GET_CODE (DECL_INCOMING_RTL (decl)) == MEM
+         && (! valid_only
+             || ! mode_dependent_address_p (XEXP (DECL_INCOMING_RTL (decl), 0))))
        instantiate_virtual_regs_1 (&XEXP (DECL_INCOMING_RTL (decl), 0),
                                    (valid_only ? DECL_INCOMING_RTL (decl)
                                     : NULL_RTX),
@@ -1938,7 +1942,9 @@ instantiate_decls_1 (let, valid_only)
   tree t;
 
   for (t = BLOCK_VARS (let); t; t = TREE_CHAIN (t))
-    if (DECL_RTL (t) && GET_CODE (DECL_RTL (t)) == MEM)
+    if (DECL_RTL (t) && GET_CODE (DECL_RTL (t)) == MEM
+       && (! valid_only
+           || ! mode_dependent_address_p (XEXP (DECL_RTL (t), 0))))
       instantiate_virtual_regs_1 (& XEXP (DECL_RTL (t), 0),
                                  valid_only ? DECL_RTL (t) : NULL_RTX, 0);