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

--- Comment #21 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Andrew Macleod from comment #20)
> I did an -O2 run after those patches. 
> 
> Highlights:
> 
>  tree SSA incremental               : 117.74 (  1%)   0.63 (  3%) 120.37 ( 
> 1%)  1049M ( 24%)
>  dominator optimization             : 680.49 (  5%)   0.65 (  4%) 686.40 ( 
> 5%)   170M (  4%)
>  backwards jump threading           :11253.23 ( 90%)   9.15 ( 49%)11332.34 (
> 90%)  1332M ( 30%)
>  TOTAL                              :12520.81         18.54      12622.54   
> 4459M
> 
> I suspect most of dom is the over and over edge recalculations, but I don't
> actually know that.  I do know that most of the 200 seconds at -O1 is, so it
> seems a reasonable guess.
> 
> the backwards threader I can't comment on, but time would be rational if
> that were fixed.

The backwards threader has some limits in place but it eventually
re-evaluates all ranges on the path for each block considered - and as long
as that range evaluation isn't bounded in the distance it looks it will
run away.  The main "source" of slowness is back_threader::find_taken_edge_cond
which instantiates a path_range_query and evaluates range_of_stmt of the
path ending conditional.

Reply via email to