OSDN Git Service

Fix for problem with unnecessary volatile mems.
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 11 Dec 2003 19:04:07 +0000 (19:04 +0000)
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 11 Dec 2003 19:04:07 +0000 (19:04 +0000)
PR target/13132
* function.c (gen_mem_addressof): When no decl, explicitly clear flag
bits.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@74543 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/function.c

index 7264d56..e05d2af 100644 (file)
@@ -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
index 2f6fb9b..7ae19d5 100644 (file)
@@ -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;
 }