OSDN Git Service

* Makefile.in (tree-ssa-dom.o): Depend on tree-ssa-propagate.h.
authorsteven <steven@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 15 Sep 2004 21:47:45 +0000 (21:47 +0000)
committersteven <steven@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 15 Sep 2004 21:47:45 +0000 (21:47 +0000)
* tree-ssa-dom.c (cprop_into_stmt): Recompute TREE_INVARIANT
after propagating into an ADDR_EXPR.

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

gcc/ChangeLog
gcc/Makefile.in
gcc/tree-ssa-dom.c

index b87ba75..f8a0d04 100644 (file)
@@ -1,3 +1,9 @@
+2004-09-15  Steven Bosscher  <stevenb@suse.de>
+
+       * Makefile.in (tree-ssa-dom.o): Depend on tree-ssa-propagate.h.
+       * tree-ssa-dom.c (cprop_into_stmt): Recompute TREE_INVARIANT
+        after propagating into an ADDR_EXPR.
+
 2004-09-15  Andrew Pinski  <apinski@apple.com>
 
        PR rtl-opt/17427
index b3c83c8..4c60618 100644 (file)
@@ -1636,7 +1636,8 @@ tree-ssa-propagate.o : tree-ssa-propagate.c $(TREE_FLOW_H) $(CONFIG_H) \
 tree-ssa-dom.o : tree-ssa-dom.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
    $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) output.h diagnostic.h \
    errors.h function.h $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
-   $(BASIC_BLOCK_H) domwalk.h real.h tree-pass.h $(FLAGS_H) langhooks.h
+   $(BASIC_BLOCK_H) domwalk.h real.h tree-pass.h $(FLAGS_H) langhooks.h \
+   tree-ssa-propagate.h
 tree-ssa-threadupdate.o : tree-ssa-threadupdate.c $(TREE_FLOW_H) $(CONFIG_H) \
    $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) output.h \
    diagnostic.h errors.h function.h $(TM_H) coretypes.h $(TREE_DUMP_H) \
index 50b5cc0..43809e1 100644 (file)
@@ -40,6 +40,7 @@ Boston, MA 02111-1307, USA.  */
 #include "domwalk.h"
 #include "real.h"
 #include "tree-pass.h"
+#include "tree-ssa-propagate.h"
 #include "langhooks.h"
 
 /* This file implements optimizations on the dominator tree.  */
@@ -2646,6 +2647,7 @@ cprop_into_stmt (tree stmt, varray_type const_and_copies)
   bool may_have_exposed_new_symbols = false;
   use_operand_p op_p;
   ssa_op_iter iter;
+  tree rhs;
 
   FOR_EACH_SSA_USE_OPERAND (op_p, stmt, iter, SSA_OP_ALL_USES)
     {
@@ -2654,6 +2656,13 @@ cprop_into_stmt (tree stmt, varray_type const_and_copies)
          |= cprop_operand (stmt, op_p, const_and_copies);
     }
 
+  if (may_have_exposed_new_symbols)
+    {
+      rhs = get_rhs (stmt);
+      if (rhs && TREE_CODE (rhs) == ADDR_EXPR)
+       recompute_tree_invarant_for_addr_expr (rhs);
+    }
+
   return may_have_exposed_new_symbols;
 }