https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90316
--- Comment #14 from Richard Biener <rguenth at gcc dot gnu.org> --- Trunk: tree PRE : 23.45 ( 58%) 0.18 ( 60%) 23.93 ( 58%) 17811 kB ( 29%) `- tree tail merge : 0.03 ( 0%) 0.00 ( 0%) 0.02 ( 0%) 197 kB ( 0%) `- alias stmt walking : 11.19 ( 27%) 0.04 ( 13%) 10.95 ( 27%) 0 kB ( 0%) `- tree PTA : 0.04 ( 0%) 0.00 ( 0%) 0.04 ( 0%) 16 kB ( 0%) gcc 8 with the patch: tree PRE : 26.65 ( 46%) 0.19 ( 46%) 30.98 ( 49%) 17935 kB ( 28%) `- alias stmt walking : 12.43 ( 22%) 0.08 ( 20%) 14.08 ( 22%) 0 kB ( 0%) `- tree tail merge : 0.02 ( 0%) 0.00 ( 0%) 0.02 ( 0%) 197 kB ( 0%) `- tree CFG cleanup : 0.01 ( 0%) 0.00 ( 0%) 0.01 ( 0%) 0 kB ( 0%) `- tree PTA : 0.03 ( 0%) 0.00 ( 0%) 0.03 ( 0%) 16 kB ( 0%) so this is in-line with the previous testcase and nowhere near minutes? When I start with Name/V[0, 4] and double to Name/V[0,8] I go from 438 to 864 calls to get_continuation_for_phi and from 654 to 1260 calls to maybe_skip_until, similarly dominated_by_p calls double so there doesn't seem to be any quadraticness here either. It's true the walk limiting doesn't kick in for the work done by get_continuation_for_phi but only at the first lookup after that finished, wasting cycles. I'll see if changing that improves things here, but the work limit per query is quite high here.