tree-ssa-operands.c (add_call_clobber_ops): Make read-only test apply only to TREE_ST...
authorDiego Novillo <dnovillo@redhat.com>
Thu, 16 Sep 2004 22:16:56 +0000 (22:16 +0000)
committerDiego Novillo <dnovillo@gcc.gnu.org>
Thu, 16 Sep 2004 22:16:56 +0000 (18:16 -0400)
* tree-ssa-operands.c (add_call_clobber_ops): Make read-only
test apply only to TREE_STATIC and DECL_EXTERNAL.

From-SVN: r87615

gcc/ChangeLog
gcc/tree-ssa-operands.c

index 3d6a38c931603d9b3498b7096990f6396d5ad2d8..8648e7ca4d3f4445f313f14b312014579c8fdc6b 100644 (file)
@@ -1,3 +1,8 @@
+2004-09-16  Diego Novillo  <dnovillo@redhat.com>
+
+       * tree-ssa-operands.c (add_call_clobber_ops): Make read-only
+       test apply only to TREE_STATIC and DECL_EXTERNAL.
+
 2004-09-16  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
 
        * Makefile.in (tree-cfg.o): Add CFGLAYOUT_H dependency.
index 8daadc75438b7ee821522e3a954d3d5d21a43be6..a007b502aaebc11905beb5bc48d4c1483b777a9e 100644 (file)
@@ -1620,9 +1620,15 @@ add_call_clobber_ops (tree stmt, tree callee)
                 with a module static or we may not.  So we still must look
                 anywhere else we can (such as the TREE_READONLY) to get
                 better info.  */
+
              /* If VAR is read-only, don't add a V_MAY_DEF, just a
-                VUSE operand.  */
-             else if (TREE_READONLY (var))
+                VUSE operand.  FIXME, this is quirky.  TREE_READONLY
+                by itself is not enough here.  We can only decide
+                that the call will not affect VAR if all these
+                conditions are met.  One would think that
+                TREE_READONLY should be sufficient.  */
+             else if (TREE_READONLY (var)
+                      && (TREE_STATIC (var) || DECL_EXTERNAL (var)))
                add_stmt_operand (&var, stmt, opf_none);
              else
                add_stmt_operand (&var, stmt, opf_is_def);