(make_decl_rtl): Set TREE_SIDE_EFFECTS on global if -fvolatile-global.
authorRichard Kenner <kenner@gcc.gnu.org>
Sat, 2 Oct 1993 18:06:03 +0000 (14:06 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Sat, 2 Oct 1993 18:06:03 +0000 (14:06 -0400)
From-SVN: r5559

gcc/varasm.c

index e989a95b1f85b5d799a01186a4815462650525fa..e39f54686d6155a642217c23e3c88b9ca50241f9 100644 (file)
@@ -468,10 +468,17 @@ make_decl_rtl (decl, asmspec, top_level)
 
          DECL_RTL (decl) = gen_rtx (MEM, DECL_MODE (decl),
                                     gen_rtx (SYMBOL_REF, Pmode, name));
-         if (TREE_THIS_VOLATILE (decl)
-           || (flag_volatile_global && TREE_CODE (decl) == VAR_DECL
-               && TREE_PUBLIC (decl)))
+
+         /* If this variable is to be treated as volatile, show its
+            tree node has side effects.  If it has side effects, either
+            because of this test or from TREE_THIS_VOLATILE also
+            being set, show the MEM is volatile.  */
+         if (flag_volatile_global && TREE_CODE (decl) == VAR_DECL
+             && TREE_PUBLIC (decl))
+           TREE_SIDE_EFFECTS (decl) = 1;
+         if (TREE_SIDE_EFFECTS (decl))
            MEM_VOLATILE_P (DECL_RTL (decl)) = 1;
+
          if (TREE_READONLY (decl))
            RTX_UNCHANGING_P (DECL_RTL (decl)) = 1;
          MEM_IN_STRUCT_P (DECL_RTL (decl))