https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87264
Jonathan Wakely <redi at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution|--- |FIXED
Target Milestone|--- |15.0
--- Comment #9 from Jonathan Wakely <redi at gcc dot gnu.org> ---
The benchmark program needs to be fixed to stop using reserved names that clash
with libstdc++ internals. With that change, GCC 15 performance is close to
Clang's:
tmp$ sed -i 's/_\([_A-Z]\)/\1/g' bench.cpp
tmp$ bash -e run_bench.sh
gcc -O3 -DUNROLL -DWRAP -DFNPTR -DARG: 0.13
clang -O3 -DUNROLL -DWRAP -DFNPTR -DARG: 0.12
gcc -O3 -DWRAP -DFNPTR -DARG: 0.13
clang -O3 -DWRAP -DFNPTR -DARG: 0.13
gcc -O3 -DUNROLL -DFNPTR -DARG: 0.12
clang -O3 -DUNROLL -DFNPTR -DARG: 0.12
gcc -O3 -DUNROLL -DWRAP -DARG: 0.13
clang -O3 -DUNROLL -DWRAP -DARG: 0.13
gcc -O3 -DUNROLL -DWRAP -DFNPTR : 0.13
clang -O3 -DUNROLL -DWRAP -DFNPTR : 0.14
gcc -O3 : 0.12
clang -O3 : 0.12
gcc -O2 -DUNROLL -DWRAP -DFNPTR -DARG: 0.20
clang -O2 -DUNROLL -DWRAP -DFNPTR -DARG: 0.13
gcc -O2 -DWRAP -DFNPTR -DARG: 0.13
clang -O2 -DWRAP -DFNPTR -DARG: 0.14
gcc -O2 -DUNROLL -DFNPTR -DARG: 0.19
clang -O2 -DUNROLL -DFNPTR -DARG: 0.16
gcc -O2 -DUNROLL -DWRAP -DARG: 0.15
clang -O2 -DUNROLL -DWRAP -DARG: 0.14
gcc -O2 -DUNROLL -DWRAP -DFNPTR : 0.23
clang -O2 -DUNROLL -DWRAP -DFNPTR : 0.16
gcc -O2 : 0.15
clang -O2 : 0.13
The slower cases are the ones with -DUNROLL -DFNPTR but libstdc++ no longer
uses an unrolled implementation, so I'm going to close this as fixed.