+2019-05-01 Jeff Law <law@redhat.com>
+
+ PR tree-optimization/88797
+ * gimple-ssa-split-paths (is_feasible_trace): Reject cases where the
+ PHI feeds a conditional on the RHS of an assignment.
+
2019-04-30 Andrew Waterman <andrew@sifive.com>
Jim Wilson <jimw@sifive.com>
if (is_gimple_debug (stmt))
continue;
/* If there's a use in the joiner this might be a CSE/DCE
- opportunity. */
- if (gimple_bb (stmt) == bb)
+ opportunity, but not if the use is in a conditional
+ which makes this a likely if-conversion candidate. */
+ if (gimple_bb (stmt) == bb
+ && (!is_gimple_assign (stmt)
+ || (TREE_CODE_CLASS (gimple_assign_rhs_code (stmt))
+ != tcc_comparison)))
{
found_useful_phi = true;
break;
+2019-05-01 Jeff Law <law@redhat.com>
+
+ PR tree-optimization/90037
+ * g++.dg/tree-ssa/pr88797.C: New test.
+
2019-05-01 Nathan Sidwell <nathan@acm.org>
* g++.dg/cpp0x/decltype9.C: Adjust expected diagnostics.
--- /dev/null
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-split-paths-details" } */
+
+
+void use(unsigned);
+bool f(unsigned x, unsigned y) {
+ return x < 1111 + (y <= 2222);
+}
+void test_f(unsigned x, unsigned y) {
+ for (unsigned i = 0; i < 3333; ++i)
+ use(f(x++, y++));
+}
+
+/* { dg-final { scan-tree-dump-not "Duplicating join block" "split-paths" } } */
+/* { dg-final { scan-tree-dump-times "Block . is a join that does not expose" 1 "split-paths" } } */
+