re PR middle-end/63155 (memory hog)
authorRichard Biener <rguenther@suse.de>
Mon, 24 Sep 2018 07:08:24 +0000 (07:08 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Mon, 24 Sep 2018 07:08:24 +0000 (07:08 +0000)
2018-09-24  Richard Biener  <rguenther@suse.de>

PR tree-optimization/63155
* tree-ssa-propagate.c (add_ssa_edge): Avoid adding PHIs to
the worklist when the edge of the respective argument isn't
executable.

From-SVN: r264523

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

index f3664e449f279cc38d424ca6fde004e5ba582d17..5c07395eefdf832f994d1e7f76d09ec2ce30777c 100644 (file)
@@ -1,3 +1,10 @@
+2018-09-24  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/63155
+       * tree-ssa-propagate.c (add_ssa_edge): Avoid adding PHIs to
+       the worklist when the edge of the respective argument isn't
+       executable.
+
 2018-09-23   Uros Bizjak  <ubizjak@gmail.com>
 
        * config/i386/i386.h (enum reg_class): Rename MASK_REGS to
index 9f67a9ab1113c0d73794589c16fd5ad8582e7a69..140b153d5a1cfa96bb2cc3e63734932d79782c5c 100644 (file)
@@ -168,10 +168,18 @@ add_ssa_edge (tree var)
   FOR_EACH_IMM_USE_FAST (use_p, iter, var)
     {
       gimple *use_stmt = USE_STMT (use_p);
+      basic_block use_bb = gimple_bb (use_stmt);
 
       /* If we did not yet simulate the block wait for this to happen
          and do not add the stmt to the SSA edge worklist.  */
-      if (! (gimple_bb (use_stmt)->flags & BB_VISITED))
+      if (! (use_bb->flags & BB_VISITED))
+       continue;
+
+      /* If this is a use on a not yet executable edge do not bother to
+        queue it.  */
+      if (gimple_code (use_stmt) == GIMPLE_PHI
+         && !(EDGE_PRED (use_bb, PHI_ARG_INDEX_FROM_USE (use_p))->flags
+              & EDGE_EXECUTABLE))
        continue;
 
       if (prop_simulate_again_p (use_stmt)