diff options
author | Richard Kenner <kenner@vlsi1.ultra.nyu.edu> | 1997-12-12 16:06:57 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1997-12-12 09:06:57 -0700 |
commit | 8a173c73b5c676543e3a751f8fd7979a388cb594 (patch) | |
tree | e6582ebaacea2958ae8268ac9eef592b925f240a /gcc/integrate.c | |
parent | 73cea257d4b8a55129906f429050b47da4d69624 (diff) | |
download | gcc-8a173c73b5c676543e3a751f8fd7979a388cb594.tar.gz |
integrate.c (initialize_for_inline): In DECL_RTL of a PARM_DECL, look inside a (mem (addressof (mem ...))).
* integrate.c (initialize_for_inline): In DECL_RTL of a PARM_DECL,
look inside a (mem (addressof (mem ...))).
From-SVN: r17075
Diffstat (limited to 'gcc/integrate.c')
-rw-r--r-- | gcc/integrate.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/integrate.c b/gcc/integrate.c index 6d27e495765..70aaf16f2e6 100644 --- a/gcc/integrate.c +++ b/gcc/integrate.c @@ -276,6 +276,13 @@ initialize_for_inline (fndecl, min_labelno, max_labelno, max_reg, copy) { rtx p = DECL_RTL (parms); + /* If we have (mem (addressof (mem ...))), use the inner MEM since + otherwise the copy_rtx call below will not unshare the MEM since + it shares ADDRESSOF. */ + if (GET_CODE (p) == MEM && GET_CODE (XEXP (p, 0)) == ADDRESSOF + && GET_CODE (XEXP (XEXP (p, 0), 0)) == MEM) + p = XEXP (XEXP (p, 0), 0); + if (GET_CODE (p) == MEM && copy) { /* Copy the rtl so that modifications of the addresses |