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.

Reply via email to