stdc++ issue: extremely long compile time with large number of string literals

Mandeep Sandhu mandeepsandhu.chd@gmail.com
Thu Jul 9 21:27:58 GMT 2020


> You didn't say what flags you are using. For anything autogenerated like
> that, going above -O1 is always risky.

I run it with just -std=c++11 (not optimization flag, so I guess it
defaults to -O0)
>
> One first thing to try is -ftime-report
>
> At -O0
>   phase opt and generate             :   3.46 ( 84%)   0.15 ( 45%)   3.62 ( 81%)  188385 kB ( 70%)

With 5000 strings, & -O0 I get the following in the time report:

Time variable                                   usr           sys
    wall               GGC
...
phase opt and generate             :   4.12 ( 89%)   0.18 ( 46%)
4.30 ( 86%)   99680 kB ( 58%)
...
 expand vars                        :   2.41 ( 52%)   0.00 (  0%)
2.42 ( 48%)     699 kB (  0%)
...

TBH, not sure what these values mean. Someone mentioned that overload
resolution might be causing the excessive delay, but I can't find any
metrics to verify that.

-mandeep


>
> without a specific pass that stands out.
>
> At -O1
>   phase opt and generate             :  87.96 ( 99%)   6.57 ( 97%)  94.56 ( 99%)24503776 kB (100%)
>   callgraph ipa passes               :  85.93 ( 97%)   6.52 ( 96%)  92.47 ( 97%)24413253 kB ( 99%)
>   tree eh                            :  84.32 ( 95%)   6.43 ( 95%)  90.78 ( 95%)24340697 kB ( 99%)
>
> so, it looks related to the optimization of exceptions...
>
> --
> Marc Glisse


More information about the Gcc-help mailing list