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

            Bug ID: 116285
           Summary: Compilation of nodejs/v8
                    8_base_without_compiler.runtime-temporal.cc is slow
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Keywords: compile-time-hog
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: sjames at gcc dot gnu.org
  Target Milestone: ---

We're currently looking at nodejs taking a while longer (~8 minutes) to build
with GCC than Clang. I'm going to report some other testcases later which have
some different properties (and are far more pronounced) and will give more
background there.

This one feels kind of standalone and different to the others not yet reported.

On trunk with --enable-checking=release:
```
$ time /tmp/bisect-gcc-pfx/bin/g++ -c
v8_base_without_compiler.runtime-temporal.ii -O0 -march=znver1 -std=gnu++20
-ftime-report
In file included from ../../deps/v8/src/objects/contexts.h:9,
                 from ../../deps/v8/src/execution/thread-local-top.h:13,
                 from ../../deps/v8/src/execution/isolate-data.h:12,
                 from ../../deps/v8/src/execution/isolate.h:29,
                 from ../../deps/v8/src/execution/isolate-inl.h:8,
                 from ../../deps/v8/src/runtime/runtime-temporal.cc:5:
../../deps/v8/src/objects/fixed-array.h:615:41: warning: template-id not
allowed for constructor in C++20 [-Wtemplate-id-cdtor]
../../deps/v8/src/objects/fixed-array.h:615:41: note: remove the '< >'
../../deps/v8/src/objects/fixed-array.h:615:212: warning: template-id not
allowed for constructor in C++20 [-Wtemplate-id-cdtor]
../../deps/v8/src/objects/fixed-array.h:615:212: note: remove the '< >'
../../deps/v8/src/objects/fixed-array.h:672:32: warning: template-id not
allowed for constructor in C++20 [-Wtemplate-id-cdtor]
../../deps/v8/src/objects/fixed-array.h:672:32: note: remove the '< >'
../../deps/v8/src/objects/fixed-array.h:672:194: warning: template-id not
allowed for constructor in C++20 [-Wtemplate-id-cdtor]
../../deps/v8/src/objects/fixed-array.h:672:194: note: remove the '< >'

Time variable                                   usr           sys          wall
          GGC
 phase setup                        :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)
 2171k (  0%)
 phase parsing                      :   5.11 ( 89%)   1.14 ( 93%)   6.28 ( 90%)
  625M ( 89%)
 phase lang. deferred               :   0.53 (  9%)   0.08 (  7%)   0.61 (  9%)
   66M (  9%)
 phase opt and generate             :   0.09 (  2%)   0.00 (  0%)   0.10 (  1%)
 9987k (  1%)
 |name lookup                       :   1.04 ( 18%)   0.19 ( 16%)   1.25 ( 18%)
   24M (  3%)
 |overload resolution               :   1.32 ( 23%)   0.22 ( 18%)   1.37 ( 20%)
  101M ( 14%)
 garbage collection                 :   0.38 (  7%)   0.00 (  0%)   0.38 (  5%)
    0  (  0%)
 callgraph construction             :   0.08 (  1%)   0.00 (  0%)   0.07 (  1%)
 7630k (  1%)
 callgraph ipa passes               :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)
  647k (  0%)
 trivially dead code                :   0.01 (  0%)   0.00 (  0%)   0.00 (  0%)
    0  (  0%)
 preprocessing                      :   0.19 (  3%)   0.18 ( 15%)   0.34 (  5%)
 5702k (  1%)
 parser (global)                    :   0.74 ( 13%)   0.28 ( 23%)   1.01 ( 14%)
  128M ( 18%)
 parser struct body                 :   0.73 ( 13%)   0.14 ( 11%)   0.99 ( 14%)
   98M ( 14%)
 parser enumerator list             :   0.02 (  0%)   0.00 (  0%)   0.04 (  1%)
 2465k (  0%)
 parser function body               :   0.05 (  1%)   0.02 (  2%)   0.09 (  1%)
 5367k (  1%)
 parser inl. func. body             :   0.75 ( 13%)   0.12 ( 10%)   0.96 ( 14%)
   68M ( 10%)
 parser inl. meth. body             :   0.31 (  5%)   0.08 (  7%)   0.41 (  6%)
   40M (  6%)
 template instantiation             :   1.99 ( 35%)   0.39 ( 32%)   2.19 ( 31%)
  340M ( 48%)
 constant expression evaluation     :   0.48 (  8%)   0.01 (  1%)   0.46 (  7%)
 2297k (  0%)
 tree operand scan                  :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)
  147k (  0%)
 varconst                           :   0.00 (  0%)   0.00 (  0%)   0.02 (  0%)
   58k (  0%)
 integrated RA                      :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)
  866k (  0%)
 final                              :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)
   60k (  0%)
 TOTAL                              :   5.73          1.22          7.00       
  703M

real    0m7.076s
user    0m5.741s
sys     0m1.298s

$ time /tmp/bisect-gcc-pfx/bin/g++ -c
v8_base_without_compiler.runtime-temporal.ii -O2 -march=znver1 -std=gnu++20
-ftime-report
In file included from ../../deps/v8/src/objects/contexts.h:9,
                 from ../../deps/v8/src/execution/thread-local-top.h:13,
                 from ../../deps/v8/src/execution/isolate-data.h:12,
                 from ../../deps/v8/src/execution/isolate.h:29,
                 from ../../deps/v8/src/execution/isolate-inl.h:8,
                 from ../../deps/v8/src/runtime/runtime-temporal.cc:5:
../../deps/v8/src/objects/fixed-array.h:615:41: warning: template-id not
allowed for constructor in C++20 [-Wtemplate-id-cdtor]
../../deps/v8/src/objects/fixed-array.h:615:41: note: remove the '< >'
../../deps/v8/src/objects/fixed-array.h:615:212: warning: template-id not
allowed for constructor in C++20 [-Wtemplate-id-cdtor]
../../deps/v8/src/objects/fixed-array.h:615:212: note: remove the '< >'
../../deps/v8/src/objects/fixed-array.h:672:32: warning: template-id not
allowed for constructor in C++20 [-Wtemplate-id-cdtor]
../../deps/v8/src/objects/fixed-array.h:672:32: note: remove the '< >'
../../deps/v8/src/objects/fixed-array.h:672:194: warning: template-id not
allowed for constructor in C++20 [-Wtemplate-id-cdtor]
../../deps/v8/src/objects/fixed-array.h:672:194: note: remove the '< >'

Time variable                                   usr           sys          wall
          GGC
 phase setup                        :   0.00 (  0%)   0.00 (  0%)   0.00 (  0%)
 2171k (  0%)
 phase parsing                      :   5.12 ( 89%)   1.09 ( 94%)   6.24 ( 90%)
  628M ( 89%)
 phase lang. deferred               :   0.53 (  9%)   0.07 (  6%)   0.60 (  9%)
   65M (  9%)
 phase opt and generate             :   0.10 (  2%)   0.00 (  0%)   0.10 (  1%)
 8840k (  1%)
 |name lookup                       :   1.06 ( 18%)   0.14 ( 12%)   1.19 ( 17%)
   24M (  3%)
 |overload resolution               :   1.47 ( 26%)   0.14 ( 12%)   1.50 ( 22%)
  101M ( 14%)
 garbage collection                 :   0.38 (  7%)   0.01 (  1%)   0.38 (  5%)
    0  (  0%)
 dump files                         :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)
    0  (  0%)
 callgraph construction             :   0.06 (  1%)   0.00 (  0%)   0.06 (  1%)
 7472k (  1%)
 callgraph functions expansion      :   0.01 (  0%)   0.00 (  0%)   0.01 (  0%)
  144k (  0%)
 callgraph ipa passes               :   0.02 (  0%)   0.00 (  0%)   0.02 (  0%)
  907k (  0%)
 ipa inheritance graph              :   0.01 (  0%)   0.00 (  0%)   0.01 (  0%)
   16k (  0%)
 preprocessing                      :   0.17 (  3%)   0.24 ( 21%)   0.37 (  5%)
 5702k (  1%)
 parser (global)                    :   0.82 ( 14%)   0.21 ( 18%)   1.06 ( 15%)
  128M ( 18%)
 parser struct body                 :   0.71 ( 12%)   0.12 ( 10%)   0.89 ( 13%)
   98M ( 14%)
 parser enumerator list             :   0.00 (  0%)   0.00 (  0%)   0.04 (  1%)
 2468k (  0%)
 parser function body               :   0.06 (  1%)   0.03 (  3%)   0.07 (  1%)
 5367k (  1%)
 parser inl. func. body             :   0.73 ( 13%)   0.10 (  9%)   0.82 ( 12%)
   68M ( 10%)
 parser inl. meth. body             :   0.37 (  6%)   0.08 (  7%)   0.46 (  7%)
   40M (  6%)
 template instantiation             :   1.91 ( 33%)   0.36 ( 31%)   2.26 ( 33%)
  340M ( 48%)
 constant expression evaluation     :   0.48 (  8%)   0.01 (  1%)   0.47 (  7%)
 4293k (  1%)
 dominator optimization             :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)
   12k (  0%)
 backwards jump threading           :   0.01 (  0%)   0.00 (  0%)   0.00 (  0%)
 1936  (  0%)
 dominance computation              :   0.02 (  0%)   0.00 (  0%)   0.00 (  0%)
    0  (  0%)
 varconst                           :   0.01 (  0%)   0.00 (  0%)   0.01 (  0%)
   58k (  0%)
 branch prediction                  :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)
 6704  (  0%)
 symout                             :   0.01 (  0%)   0.00 (  0%)   0.01 (  0%)
    0  (  0%)
 TOTAL                              :   5.75          1.16          6.94       
  704M

real    0m7.027s
user    0m5.755s
sys     0m1.241s
```

All the time is in the FE and -O0 vs -O2 doesn't make any difference.

Reply via email to