aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2002-08-01 16:07:33 -0700
committerRichard Henderson <rth@gcc.gnu.org>2002-08-01 16:07:33 -0700
commit32e9b9606f88e84fc2ffe07a094ed70b60633693 (patch)
tree0ed3eef910c4ff1f772a13d5d0dd5f66e4b60aa3
parent3450b8d03cda7bfc8f1db76506ad574404da8907 (diff)
downloadgcc-32e9b9606f88e84fc2ffe07a094ed70b60633693.zip
gcc-32e9b9606f88e84fc2ffe07a094ed70b60633693.tar.gz
gcc-32e9b9606f88e84fc2ffe07a094ed70b60633693.tar.bz2
integrate.c (copy_rtx_and_substitute): Squash MEM_EXPR when it refers to a subroutine parameter.
* integrate.c (copy_rtx_and_substitute): Squash MEM_EXPR when it refers to a subroutine parameter. From-SVN: r55956
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/integrate.c7
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5993d71..c65c89e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2002-08-01 Richard Henderson <rth@redhat.com>
+
+ * integrate.c (copy_rtx_and_substitute): Squash MEM_EXPR when it
+ refers to a subroutine parameter.
+
2002-08-01 Jakub Jelinek <jakub@redhat.com>
* varasm.c (assemble_visibility): Strip name encoding.
diff --git a/gcc/integrate.c b/gcc/integrate.c
index c7eb506..253d254 100644
--- a/gcc/integrate.c
+++ b/gcc/integrate.c
@@ -2321,6 +2321,13 @@ copy_rtx_and_substitute (orig, map, for_lhs)
if (inlining && !for_lhs)
RTX_UNCHANGING_P (copy) = 0;
+ /* If inlining, squish aliasing data that references the subroutine's
+ parameter list, since that's no longer applicable. */
+ if (inlining && MEM_EXPR (copy)
+ && TREE_CODE (MEM_EXPR (copy)) == INDIRECT_REF
+ && TREE_CODE (TREE_OPERAND (MEM_EXPR (copy), 0)) == PARM_DECL)
+ set_mem_expr (copy, NULL_TREE);
+
return copy;
default: