diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1992-07-17 05:58:38 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1992-07-17 05:58:38 -0400 |
commit | 0c2e838b251178be0a1eb709fc9e3d86d52f6577 (patch) | |
tree | 4bbefe3d62dd882a07050a8ba1268d442bf34fd9 /gcc | |
parent | 0dadecf68133e62ab48b9649edbff5daf83a370f (diff) | |
download | gcc-0c2e838b251178be0a1eb709fc9e3d86d52f6577.zip gcc-0c2e838b251178be0a1eb709fc9e3d86d52f6577.tar.gz gcc-0c2e838b251178be0a1eb709fc9e3d86d52f6577.tar.bz2 |
(instantiate_decls{,_1}): Don't do instantiation here if the address
is mode-dependent.
From-SVN: r1615
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/function.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/gcc/function.c b/gcc/function.c index 37a0f47..87db0bb 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -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); |