https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108353

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
 Visiting statement:
+j_13 = j_39 + 9;
+
+Match-and-simplified j_39 + 9 to -1420678594
+
+Visiting statement:
 if (j_13 <= 2147483628)

 Trying to determine truth value of predicate if (j_13 <= 2147483628)
-No interesting values produced.
+
+Conditional will always take edge 7->5
 Adding destination of edge (7 -> 5) to worklist
-Adding destination of edge (7 -> 4) to worklist

that's good!  but then somehow the iteration causes things to diverge and
eventually

 Folding PHI node: i_40 = PHI <i_24(10), i_23(4)>
-Queued PHI for removal.  Folds to: i_23
+No folding possible
 Folding statement: if (i_40 != 0)
-Folded into: if (1 != 0)
-
+Not folded

we have

 Visiting PHI node: i_40 = PHI <i_24(10), i_23(4)>
-       Argument #1: i_23 copy-of chain: i_23 [NOT A COPY]
-PHI node i_40 copy-of chain: i_40 -> i_23 [COPY]
+       Argument #1: i_23 copy-of chain: i_23 -> 1 [COPY]
+PHI node i_40 copy-of chain: i_40 -> 1 [COPY]
 Telling the propagator to add SSA edges out of this PHI and continue.
...
 Visiting PHI node: i_40 = PHI <i_24(10), i_23(4)>
-       Argument #0: i_24 copy-of chain: i_24 -> i_23 [COPY]
+       Argument #0: i_24 copy-of chain: i_24 -> 1 [COPY]
        Argument #1: i_23 copy-of chain: i_23 [NOT A COPY]
-PHI node i_40 copy-of chain: i_40 -> i_23 [COPY]
-Telling the propagator to do nothing with SSA edges and keep iterating.
+PHI node i_40 copy-of chain: i_40 [NOT A COPY]
+Telling the propagator to add SSA edges out of this PHI and never visit again.

So with having i_24 -> 1 instead of i_23 we eventually make block 9 executable
and i_24 becomes a non-copy.

Iteration order is sub-optimal here.

Reply via email to