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

Reply via email to