[PATCH] Optimize macro: make it more predictable

Richard Biener richard.guenther@gmail.com
Fri Aug 27 09:05:16 GMT 2021


On Fri, Aug 27, 2021 at 10:35 AM Martin Liška <mliska@suse.cz> wrote:
>
> 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?

So with ignoring darktable which seems completely insane the cases
will likely continue
to work as intended if we change from the current scheme to appending
as proposed.

Richard.

> 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