https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120003
Andrew Macleod <amacleod at redhat dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |aldy at quesejoda dot com --- Comment #3 from Andrew Macleod <amacleod at redhat dot com> --- Im not good with the threader, but it does seem like there is a big difference in the threading oass just before VRP1: --- gcc11: ---- Checking profitability of path (backwards): bb:3 (2 insns) bb:7 (4 insns) bb:6 (1 insns) bb:5 Control statement insns: 2 Overall: 5 insns Registering FSM jump thread: (5, 6) incoming edge; (6, 7) (7, 3) (3, 6) nocopy; (3, 6) Checking profitability of path (backwards): bb:3 (2 insns) bb:7 (4 insns) bb:6 (1 insns) bb:4 Control statement insns: 2 Overall: 5 insns Registering FSM jump thread: (4, 6) incoming edge; (6, 7) (7, 3) (3, 4) nocopy; (3, 4) Checking profitability of path (backwards): bb:3 (2 insns) bb:7 (4 insns) bb:6 (1 insns) bb:3 Control statement insns: 2 Overall: 5 insns Registering FSM jump thread: (3, 6) incoming edge; (6, 7) (7, 3) (3, 6) nocopy; (3, 6) about to thread: path: 5 -> 6, 6 -> 7, 7 -> 3, 3 -> 6, just threaded: path: 5 -> 9, 6 -> 7, 7 -> 3, 3 -> 6, about to thread: path: 3 -> 6, 6 -> 7, 7 -> 3, 3 -> 6, Jump threading proved probability of edge 3->6 too small (it is 59.0% (guessed) should be always (guessed)) just threaded: path: 3 -> 12, 6 -> 7, 7 -> 3, 3 -> 12, about to thread: path: 4 -> 6, 6 -> 7, 7 -> 3, 3 -> 4, Jump threading proved probability of edge 3->4 too small (it is 73.5% (guessed) should be 88.5% (guessed)) just threaded: path: 4 -> 15, 6 -> 7, 7 -> 3, 3 -> 4, --- trunk: ---- And with trunk it appears we we reject those threads due to "FAIL: Would create irreducible loop early without threading multiway branch. Checking profitability of path (backwards): bb:3 (2 insns) bb:7 Control statement insns: 2 Overall: 0 insns path: 7->3->xx REJECTED Checking profitability of path (backwards): bb:3 (2 insns) bb:7 (2 insns) bb:6 (latch) Control statement insns: 2 Overall: 2 insns Registering killing_def (path_oracle) retval_10 path: 6->7->3->xx REJECTED Checking profitability of path (backwards): bb:3 (2 insns) bb:7 (2 insns) bb:6 (1 insns) (latch) bb:4 Control statement insns: 2 Overall: 3 insns Registering killing_def (path_oracle) retval_10 Checking profitability of path (backwards): FAIL: Would create irreducible loop early without threading multiway branch. path: 4->6->7->3->xx REJECTED Checking profitability of path (backwards): bb:3 (2 insns) bb:7 (2 insns) bb:6 (1 insns) (latch) bb:9 Control statement insns: 2 Overall: 3 insns Registering killing_def (path_oracle) retval_10 Checking profitability of path (backwards): FAIL: Would create irreducible loop early without threading multiway branch. path: 9->6->7->3->xx REJECTED Checking profitability of path (backwards): bb:7 (2 insns) bb:6 (latch) Control statement insns: 2 Overall: 0 insns