summaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-threadedge.c
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>2014-06-12 11:12:18 -0600
committerJeff Law <law@gcc.gnu.org>2014-06-12 11:12:18 -0600
commit551a6341d5d0fed634c71f710bdae6d7b6b1491e (patch)
tree261a84ce00aea124dab58b63db5587fca105e5f2 /gcc/tree-ssa-threadedge.c
parentf96900140d92a249b997f488c9139156c1caf2be (diff)
re PR tree-optimization/61009 (Incorrect jump threading in dom)
PR tree-optimization/61009 * tree-ssa-threadedge.c (thread_through_normal_block): Correct return value when we stop processing a block due to problematic PHIs. From-SVN: r211586
Diffstat (limited to 'gcc/tree-ssa-threadedge.c')
-rw-r--r--gcc/tree-ssa-threadedge.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/tree-ssa-threadedge.c b/gcc/tree-ssa-threadedge.c
index ba9e1fe30f4..a76a7ce6587 100644
--- a/gcc/tree-ssa-threadedge.c
+++ b/gcc/tree-ssa-threadedge.c
@@ -948,9 +948,12 @@ thread_through_normal_block (edge e,
if (*backedge_seen_p)
simplify = dummy_simplify;
- /* PHIs create temporary equivalences. */
+ /* PHIs create temporary equivalences.
+ Note that if we found a PHI that made the block non-threadable, then
+ we need to bubble that up to our caller in the same manner we do
+ when we prematurely stop processing statements below. */
if (!record_temporary_equivalences_from_phis (e, stack))
- return 0;
+ return -1;
/* Now walk each statement recording any context sensitive
temporary equivalences we can detect. */