aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJames E Wilson <wilson@specifixinc.com>2003-12-11 19:04:07 +0000
committerJim Wilson <wilson@gcc.gnu.org>2003-12-11 11:04:07 -0800
commit1ec7a83137275efef6050bb652ac57af2ce05f8e (patch)
tree10bc58864ba022fa4eec97364c57606ab6d548a4 /gcc
parenta9f4e3d2443f96ef52e9dab4bf99206c9570bb3a (diff)
downloadgcc-1ec7a83137275efef6050bb652ac57af2ce05f8e.zip
gcc-1ec7a83137275efef6050bb652ac57af2ce05f8e.tar.gz
gcc-1ec7a83137275efef6050bb652ac57af2ce05f8e.tar.bz2
Fix for problem with unnecessary volatile mems.
PR target/13132 * function.c (gen_mem_addressof): When no decl, explicitly clear flag bits. From-SVN: r74543
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/function.c12
2 files changed, 17 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7264d56..e05d2af 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2003-12-11 James E Wilson <wilson@specifixinc.com>
+
+ PR target/13132
+ * function.c (gen_mem_addressof): When no decl, explicitly clear flag
+ bits.
+
2003-12-12 Nick Clifton <nickc@redhat.com>
* config/m32r/m32r.c: Convert to ISO-C
diff --git a/gcc/function.c b/gcc/function.c
index 2f6fb9b..7ae19d5 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -2868,7 +2868,17 @@ gen_mem_addressof (rtx reg, tree decl, int rescan)
fixup_var_refs (reg, GET_MODE (reg), TREE_UNSIGNED (type), reg, 0);
}
else if (rescan)
- fixup_var_refs (reg, GET_MODE (reg), 0, reg, 0);
+ {
+ /* This can only happen during reload. Clear the same flag bits as
+ reload. */
+ MEM_VOLATILE_P (reg) = 0;
+ RTX_UNCHANGING_P (reg) = 0;
+ MEM_IN_STRUCT_P (reg) = 0;
+ MEM_SCALAR_P (reg) = 0;
+ MEM_ATTRS (reg) = 0;
+
+ fixup_var_refs (reg, GET_MODE (reg), 0, reg, 0);
+ }
return reg;
}