With SPEC 2k6 testing I noticed we fail to update &MEM[&a] when
propagating &a.  Fixed as follows.

Bootstrapped on x86_64-unknown-linux-gnu, applied.

Richard.

2011-12-14  Richard Guenther  <rguent...@suse.de>

        * tree-cfg.c (replace_uses_by): Fixup TREE_CONSTANT for
        propagating all kinds of constants.

Index: gcc/tree-cfg.c
===================================================================
--- gcc/tree-cfg.c      (revision 182328)
+++ gcc/tree-cfg.c      (working copy)
@@ -1612,8 +1612,8 @@ replace_uses_by (tree name, tree val)
          /* FIXME.  It shouldn't be required to keep TREE_CONSTANT
             on ADDR_EXPRs up-to-date on GIMPLE.  Propagation will
             only change sth from non-invariant to invariant, and only
-            when propagating integer constants.  */
-         if (TREE_CODE (val) == INTEGER_CST)
+            when propagating constants.  */
+         if (is_gimple_min_invariant (val))
            for (i = 0; i < gimple_num_ops (stmt); i++)
              {
                tree op = gimple_op (stmt, i);

Reply via email to