https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124042
Filip Kastl <pheeck at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |artemiyv at gcc dot gnu.org
Keywords|needs-bisection |
Summary|[16 regression] Miscompare |[16 regression] Miscompare
|of 482.sphinx3 on aarch64 |of 482.sphinx3 on aarch64
| |since
| |r16-3628-g41b0c7a674e870
--- Comment #6 from Filip Kastl <pheeck at gcc dot gnu.org> ---
Bisected to r16-3628-g41b0c7a674e870
41b0c7a674e87074fdc8088479cb93f6fe1e070f is the first bad commit
commit 41b0c7a674e87074fdc8088479cb93f6fe1e070f
Author: Artemiy Volkov <[email protected]>
Date: Sat Sep 6 15:06:36 2025 -0600
gcc: introduce the dep_fusion pass
Presently, the scheduler code only considers consecutive instructions
for macro-op fusion (see sched-deps.cc::sched_macro_fuse_insns () for
details). This patch introduces the new dep_fusion pass, which is
intended to uncover more fusion opportunities by reordering eligible
instructions to form fusible pairs (based solely on the value of the
TARGET_SCHED_MACRO_FUSION_PAIR_P hook). This is achieved by using
the RTL-SSA framework, and only the single-use instructions are
considered for the first instruction of a pair.
Aside from reordering instructions, this pass also sets the SCHED_GROUP
flag for the second instruction so that following passes can implement
special handling of the fused pairs. For instance, RA and regrename
should make use of this information to preserve single-output property
for some of such pairs. Accordingly, in passes.def, this patch adds two
invocations of the new pass: just before IRA and just before regrename.
The new pass is enabled at -O2+ and -Os.
gcc/ChangeLog:
* Makefile.in (OBJS): Add dep-fusion.o.
* common.opt (fdep-fusion): Add option.
* dep-fusion.cc: New pass.
* doc/invoke.texi: Document it.
* opts.cc (default_options_table): Enable it at -O2+ and -Os.
* passes.def: Insert two instances of dep_fusion.
* tree-pass.h (make_pass_dep_fusion): Declare new function.
gcc/Makefile.in | 1 +
gcc/common.opt | 4 ++
gcc/dep-fusion.cc | 148 ++++++++++++++++++++++++++++++++++++++++++++++++++++
gcc/doc/invoke.texi | 15 ++++--
gcc/opts.cc | 1 +
gcc/passes.def | 2 +
gcc/tree-pass.h | 1 +
7 files changed, 169 insertions(+), 3 deletions(-)
create mode 100644 gcc/dep-fusion.cc
bisect found first bad commit