This removes restrictions in DOM cprop_operand that inhibit
some optimizations.  The volatile pointer thing is really realy
old and no longer necessary while the loop-depth consideration
is only valid for loop-closed PHI nodes (but we're not in
loop-closed SSA in DOM) - the coalescing is handled in out-of-SSA
phase by inserting copies appropriately.

Bootstrapped on x86_64-unknown-linux-gnu, ok?

Thanks,
Richard.

2014-06-25  Richard Biener  <rguent...@suse.de>

        PR tree-optimization/61607
        * tree-ssa-dom.c (cprop_operand): Remove restriction on
        propagating volatile pointers and on loop depth.

Index: gcc/tree-ssa-dom.c
===================================================================
--- gcc/tree-ssa-dom.c  (revision 211969)
+++ gcc/tree-ssa-dom.c  (working copy)
@@ -2247,22 +2247,6 @@ cprop_operand (gimple stmt, use_operand_
       if (!may_propagate_copy (op, val))
        return;
 
-      /* Do not propagate addresses that point to volatiles into memory
-        stmts without volatile operands.  */
-      if (POINTER_TYPE_P (TREE_TYPE (val))
-         && TYPE_VOLATILE (TREE_TYPE (TREE_TYPE (val)))
-         && gimple_has_mem_ops (stmt)
-         && !gimple_has_volatile_ops (stmt))
-       return;
-
-      /* Do not propagate copies if the propagated value is at a deeper loop
-        depth than the propagatee.  Otherwise, this may move loop variant
-        variables outside of their loops and prevent coalescing
-        opportunities.  If the value was loop invariant, it will be hoisted
-        by LICM and exposed for copy propagation.  */
-      if (loop_depth_of_name (val) > loop_depth_of_name (op))
-       return;
-
       /* Do not propagate copies into simple IV increment statements.
          See PR23821 for how this can disturb IV analysis.  */
       if (TREE_CODE (val) != INTEGER_CST

Reply via email to