[PATCH] Optimize macro: make it more predictable

Martin Liška mliska@suse.cz
Fri Aug 27 08:35:45 GMT 2021


On 8/26/21 14:39, Martin Liška wrote:
> I can investigate that.

So there are statistics about #pragma GCC optimize and optimize attribute in openSUSE:Factory.
The numbers at the line beginning represent number of functions affected by the pragma or attribute.
Are we smarter in what we want?

Processed 14026 packages, attr/pragma used in 111


--- Mesa-drivers.log ---

1x: "O1"

--- Mesa.log ---

1x: "O1"

--- PrusaSlicer.log ---

44x: "-fno-unsafe-math-optimizations"

--- SVT-AV1.log ---

2x: "unroll-loops"

--- abseil-cpp.log ---

4x: "no-optimize-sibling-calls"

--- analitza.log ---

1x: "-fno-unsafe-math-optimizations"

--- argon2.log ---

2x: "O0"

--- arpack-ng:serial.log ---

2x: "-fno-unsafe-math-optimizations"

--- avogadrolibs.log ---

106x: "-fno-unsafe-math-optimizations"

--- caddy.log ---

32x: "no-tree-vectorize"

--- calligra.log ---

1x: "-fno-unsafe-math-optimizations"

--- ceph-test.log ---

2x: "no-tree-vectorize"

--- ceph.log ---

2x: "no-tree-vectorize"

--- ceres-solver.log ---

130x: "-fno-unsafe-math-optimizations"

--- cmake:mini.log ---

1x: "no-tree-vectorize"

--- cpustat.log ---

15x: "-O3"

--- cross-aarch64-gcc11-bootstrap.log ---

32x: "no-omit-frame-pointer"

--- cross-amdgcn-gcc11.log ---

12x: "O2"

10x: "-fno-tree-loop-distribute-patterns"

1x: "-fno-tree-loop-distribute-patterns""-fno-tree-loop-distribute-patterns"

--- cross-nvptx-gcc11.log ---

6x: "-fno-tree-loop-distribute-patterns"

2x: "O2"

--- csound.log ---

6x: "no-finite-math-only"

1x: "-fno-unsafe-math-optimizations"

--- darktable.log ---

65213x: "unroll-loops", "tree-loop-if-convert", "tree-loop-distribution", "no-strict-aliasing", "loop-interchange", "loop-nest-optimize", "tree-loop-im", "unswitch-loops", "tree-loop-ivcanon", "ira-loop-pressure", "split-ivs-in-unroller", "tree-loop-vectorize", "variable-expansion-in-unroller", "split-loops", "ivopts", "predictive-commoning", "tree-loop-linear", "loop-block", "loop-strip-mine", "finite-math-only", "fp-contract=fast", "fast-math", "no-math-errno"

4981x: "unroll-loops", "tree-loop-if-convert", "tree-loop-distribution", "no-strict-aliasing", "loop-interchange", "loop-nest-optimize", "tree-loop-im", "unswitch-loops", "tree-loop-ivcanon", "ira-loop-pressure", "split-ivs-in-unroller", "variable-expansion-in-unroller", "split-loops", "ivopts", "predictive-commoning", "tree-loop-linear", "loop-block", "loop-strip-mine", "finite-math-only", "fp-contract=fast", "fast-math"

1021x: "unroll-loops", "tree-loop-if-convert", "tree-loop-distribution", "no-strict-aliasing", "loop-interchange", "loop-nest-optimize", "tree-loop-im", "unswitch-loops", "tree-loop-ivcanon", "ira-loop-pressure", "split-ivs-in-unroller", "variable-expansion-in-unroller", "split-loops", "ivopts", "predictive-commoning", "tree-loop-linear", "loop-block", "loop-strip-mine", "fp-contract=fast", "tree-vectorize"

1018x: "unroll-loops", "tree-loop-if-convert", "tree-loop-distribution", "no-strict-aliasing", "loop-interchange", "loop-nest-optimize", "tree-loop-im", "unswitch-loops", "tree-loop-ivcanon", "ira-loop-pressure", "split-ivs-in-unroller", "variable-expansion-in-unroller", "split-loops", "ivopts", "predictive-commoning", "tree-loop-linear", "loop-block", "loop-strip-mine", "finite-math-only", "fp-contract=fast", "fast-math", "unroll-loops", "tree-loop-if-convert", "tree-loop-distribution", "no-strict-aliasing", "loop-interchange", "loop-nest-optimize", "tree-loop-im", "unswitch-loops", "tree-loop-ivcanon", "ira-loop-pressure", "split-ivs-in-unroller", "variable-expansion-in-unroller", "split-loops", "ivopts", "predictive-commoning", "tree-loop-linear", "loop-block", "loop-strip-mine", "finite-math-only", "fp-contract=fast", "fast-math", "unroll-loops", "tree-loop-if-convert", "tree-loop-distribution", "no-strict-aliasing", "loop-interchange", "loop-nest-optimize", "tree-loop-im", "unsw
 itch-loops", "tree-loop-ivcanon", "ira-loop-pressure", "split-ivs-in-unroller", "variable-expansion-in-unroller", "split-loops", "ivopts", "predictive-commoning", "tree-loop-linear", "loop-block", "loop-strip-mine", "finite-math-only", "fp-contract=fast", "fast-math", "unroll-loops", "tree-loop-if-convert", "tree-loop-distribution", "no-strict-aliasing", "loop-interchange", "loop-nest-optimize", "tree-loop-im", "unswitch-loops", "tree-loop-ivcanon", "ira-loop-pressure", "split-ivs-in-unroller", "variable-expansion-in-unroller", "split-loops", "ivopts", "predictive-commoning", "tree-loop-linear", "loop-block", "loop-strip-mine", "finite-math-only", "fp-contract=fast", "fast-math", "tree-vectorize"

1011x: "unroll-loops", "tree-loop-if-convert", "tree-loop-distribution", "no-strict-aliasing", "loop-interchange", "loop-nest-optimize", "tree-loop-im", "unswitch-loops", "tree-loop-ivcanon", "ira-loop-pressure", "split-ivs-in-unroller", "variable-expansion-in-unroller", "split-loops", "ivopts", "predictive-commoning", "tree-loop-linear", "loop-block", "loop-strip-mine", "finite-math-only", "fp-contract=fast", "fast-math", "tree-vectorize", "no-math-errno"

315x: "unroll-loops", "tree-loop-if-convert", "tree-loop-distribution", "no-strict-aliasing", "loop-interchange", "loop-nest-optimize", "tree-loop-im", "unswitch-loops", "tree-loop-ivcanon", "ira-loop-pressure", "split-ivs-in-unroller", "variable-expansion-in-unroller", "split-loops", "ivopts", "predictive-commoning", "tree-loop-linear", "loop-block", "loop-strip-mine", "finite-math-only", "fp-contract=fast", "fast-math", "unroll-loops", "tree-loop-if-convert", "tree-loop-distribution", "no-strict-aliasing", "loop-interchange", "loop-nest-optimize", "tree-loop-im", "unswitch-loops", "tree-loop-ivcanon", "ira-loop-pressure", "split-ivs-in-unroller", "variable-expansion-in-unroller", "split-loops", "ivopts", "predictive-commoning", "tree-loop-linear", "loop-block", "loop-strip-mine", "finite-math-only", "fp-contract=fast", "fast-math"

71x: "unroll-loops", "tree-loop-if-convert", "tree-loop-distribution", "no-strict-aliasing", "loop-interchange", "loop-nest-optimize", "tree-loop-im", "unswitch-loops", "tree-loop-ivcanon", "ira-loop-pressure", "split-ivs-in-unroller", "variable-expansion-in-unroller", "split-loops", "ivopts", "predictive-commoning", "tree-loop-linear", "loop-block", "loop-strip-mine", "finite-math-only", "fp-contract=fast", "fast-math", "no-math-errno"

54x: "finite-math-only"

13x: "unroll-loops", "tree-loop-if-convert", "tree-loop-distribution", "no-strict-aliasing", "loop-interchange", "loop-nest-optimize", "tree-loop-im", "unswitch-loops", "tree-loop-ivcanon", "ira-loop-pressure", "split-ivs-in-unroller", "variable-expansion-in-unroller", "split-loops", "ivopts", "predictive-commoning", "tree-loop-linear", "loop-block", "loop-strip-mine", "finite-math-only", "fp-contract=fast", "fast-math", "unroll-loops", "tree-loop-if-convert", "tree-loop-distribution", "no-strict-aliasing", "loop-interchange", "loop-nest-optimize", "tree-loop-im", "unswitch-loops", "tree-loop-ivcanon", "ira-loop-pressure", "split-ivs-in-unroller", "variable-expansion-in-unroller", "split-loops", "ivopts", "predictive-commoning", "tree-loop-linear", "loop-block", "loop-strip-mine", "finite-math-only", "fp-contract=fast", "fast-math", "unroll-loops", "tree-loop-if-convert", "tree-loop-distribution", "no-strict-aliasing", "loop-interchange", "loop-nest-optimize", "tree-loop-im", "unswit
 ch-loops", "tree-loop-ivcanon", "ira-loop-pressure", "split-ivs-in-unroller", "variable-expansion-in-unroller", "split-loops", "ivopts", "predictive-commoning", "tree-loop-linear", "loop-block", "loop-strip-mine", "finite-math-only", "fp-contract=fast", "fast-math"

5x: "fast-math", "fp-contract=fast"

--- eigen3:docs.log ---

378x: "-fno-unsafe-math-optimizations"

--- eventstat.log ---

2x: "-O3"

--- frr.log ---

3x: "3"

--- fwts.log ---

4x: "-O0"

--- fwupd.log ---

1x: "0"

--- gcc11-testresults.log ---

4151x: "no-isolate-erroneous-paths-dereference"

12x: "O2"

8x: "-fno-optimize-sibling-calls"

3x: ATTR="no-isolate-erroneous-paths-dereference""no-isolate-erroneous-paths-dereference"

2x: ATTR="no-isolate-erroneous-paths-dereference"

1x: "no-isolate-erroneous-paths-dereference"ATTR=

--- gcc11.log ---

5572x: "no-isolate-erroneous-paths-dereference"

16x: "O2"

8x: "-fno-optimize-sibling-calls"

--- ghc-cryptonite.log ---

3x: "O0"

--- glibc.log ---

308x: "-fno-stack-protector"

1x: "-fno-stack-protector"../sysdeps/x86_64/multiarch/memcpy.c:29:1: note: XXX:optimize attribute:

1x: ATTR="-fno-stack-protector"

1x: ATTR="-fno-stack-protector""-fno-stack-protector"

--- glibc:testsuite.log ---

318x: "-fno-stack-protector"

--- glibc:utils.log ---

216x: "-fno-stack-protector"

1x: "-fno-stack-protector"ATTR=

--- icinga2.log ---

5x: "O0"

--- java-16-openjdk.log ---

24167x: "O0"

--- keepalived.log ---

1x: "O0"

--- kstars.log ---

187x: "-fno-unsafe-math-optimizations"

--- lammps.log ---

6x: "no-var-tracking-assignments"

--- lastpass-cli.log ---

1x: "unroll-loops"

--- libgcrypt.log ---

28x: "O0"

--- libkeccak.log ---

378x: "-O0"

--- libopenshot-audio.log ---

7x: "no-associative-math"

--- libqt5-qtbase.log ---

1x: "omit-frame-pointer"

1x: "no-tree-vectorize"

--- libraw.log ---

12x: "no-aggressive-loop-optimizations"

--- libretro-beetle-psx-hw.log ---

10217x: "unroll-loops"

56x: "unroll-loops", "unroll-loops"

--- libretro-beetle-psx.log ---

11428x: "unroll-loops"

56x: "unroll-loops", "unroll-loops"

--- libretro-beetle-saturn.log ---

132x: "no-crossjumping,no-gcse"

39x: "Os"

1x: "no-unroll-loops,no-peel-loops,no-crossjumping"

1x: "O2,no-unroll-loops,no-peel-loops,no-crossjumping"

--- libsemigroups.log ---

3x: "-fno-unsafe-math-optimizations"

--- libunwind.log ---

4x: "-O1"

--- libxtrx.log ---

5x: "O3"

--- libxtrxdsp.log ---

2x: "unroll-loops"

--- links.log ---

464942x: "-ftree-vectorize", "-ffast-math"

--- mariadb.log ---

2x: "-O0"

--- memtest86+.log ---

1x: "O0"

--- mercurial.log ---

19x: "no-tree-vectorize"

--- monitoring-plugins.log ---

11x: "wrapv"

--- mono-core.log ---

3x: "O0"

--- movit.log ---

41x: "-fno-unsafe-math-optimizations"

--- mvapich2:gnu-hpc-testsuite.log ---

1x: "O0"

--- mvapich2:gnu-hpc.log ---

1x: "O0"

--- mvapich2:standard.log ---

1x: "O0"

--- mvapich2:testsuite.log ---

1x: "O0"

--- mysql-connector-cpp.log ---

36x: "no-tree-vectorize"

--- newlib:epiphany.log ---

3x: "-fno-tree-loop-distribute-patterns"

--- newlib:riscv64.log ---

5x: "-fno-tree-loop-distribute-patterns"

--- o2scl.log ---

92x: "-fno-unsafe-math-optimizations"

--- ocaml.log ---

8x: "tree-vectorize"

--- openbabel.log ---

14x: "-fno-unsafe-math-optimizations"

--- openucx.log ---

220x: "O0"

--- pdns.log ---

6x: "no-associative-math"

--- perl-Cpanel-JSON-XS.log ---

1x: "O0"

--- perl-Sereal-Decoder.log ---

2x: "no-tree-vectorize"

--- perl-Sereal-Encoder.log ---

2x: "no-tree-vectorize"

--- php7.log ---

67x: "Os"

--- php7:apache2.log ---

67x: "Os"

--- php7:embed.log ---

67x: "Os"

--- php7:fastcgi.log ---

67x: "Os"

--- php7:fpm.log ---

67x: "Os"

--- php8.log ---

75x: "Os"

--- php8:apache2.log ---

75x: "Os"

--- php8:embed.log ---

75x: "Os"

--- php8:fastcgi.log ---

75x: "Os"

--- php8:fpm.log ---

74x: "Os"

--- picom.log ---

27x: "-fno-fast-math"

--- python-Bottleneck.log ---

25x: "O3"

--- python-grpcio.log ---

12x: "no-optimize-sibling-calls"

--- python-numpy.log ---

9715x: "O3"

48x: "unroll-loops"

--- python-numpy:gnu-hpc.log ---

9709x: "O3"

48x: "unroll-loops"

--- python-pyroomacoustics.log ---

2x: "-fno-unsafe-math-optimizations"

--- python-scipy:gnu-hpc.log ---

6179x: "tree-vectorize", "unsafe-math-optimizations", "unroll-loops"

1006x: "unroll-loops"

1x: "unroll-loops"gcc: scipy/special/cephes/rgamma.c

--- python-scipy:standard.log ---

6179x: "tree-vectorize", "unsafe-math-optimizations", "unroll-loops"

1005x: "unroll-loops"

1x: "unroll-loops"gcc: scipy/special/cephes/tandg.c

1x: ATTR="unroll-loops"

--- python-thewalrus.log ---

2x: "-fno-unsafe-math-optimizations"

--- python-torch:standard.log ---

230x: "-fno-unsafe-math-optimizations"

--- python-zstandard.log ---

12x: "no-tree-vectorize"

--- python3-espressomd.log ---

2x: "no-associative-math"

--- qt6-base.log ---

1x: "omit-frame-pointer"

1x: "no-tree-vectorize"

--- rspamd.log ---

22x: "unroll-loops"

2x: "no-tree-vectorize"

--- sha3sum.log ---

120x: "-O0"

--- shim.log ---

4x: "0"

--- snd.log ---

223x: "tree-vectorize"

--- step.log ---

49x: "-fno-unsafe-math-optimizations"

--- stress-ng.log ---

1070x: "-O3"

7x: "-O0"

2x: "-O1"

--- subversion.log ---

184x: "-O0"

--- sympol.log ---

2x: "-fno-unsafe-math-optimizations"

--- tensorflow2:lite.log ---

80x: "-fno-unsafe-math-optimizations"

--- texlive.log ---

1x: "fast-math"

--- votca-csg.log ---

93x: "-fno-unsafe-math-optimizations"

--- votca-tools.log ---

60x: "-fno-unsafe-math-optimizations"

--- votca-xtp.log ---

215x: "-fno-unsafe-math-optimizations"

--- xf86-video-intel.log ---

625x: "Ofast"

15x: "Ofast", "Ofast"

--- xmrig.log ---

1x: "O0"

--- zstd.log ---

6x: "no-tree-vectorize"




More information about the Gcc-patches mailing list