https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108738

--- Comment #8 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Richard Biener <rgue...@gcc.gnu.org>:

https://gcc.gnu.org/g:6010189923908501ca5b02bd1f4aee05d2283118

commit r13-6439-g6010189923908501ca5b02bd1f4aee05d2283118
Author: Richard Biener <rguent...@suse.de>
Date:   Thu Mar 2 13:43:51 2023 +0100

    target/108738 - limit STV chain discovery

    The following puts a hard limit on the inherently quadratic STV chain
    discovery.  Without a limit for the compiler.i testcase in PR26854
    we see at -O2

     machine dep reorg                  : 574.45 ( 53%)

    with release checking while with the proposed limit it's

     machine dep reorg                  :   2.86 (  1%)

            PR target/108738
            * config/i386/i386.opt (--param x86-stv-max-visits): New param.
            * doc/invoke.texi (--param x86-stv-max-visits): Document it.
            * config/i386/i386-features.h (scalar_chain::max_visits): New.
            (scalar_chain::build): Add bitmap parameter, return boolean.
            (scalar_chain::add_insn): Likewise.
            (scalar_chain::analyze_register_chain): Likewise.
            * config/i386/i386-features.cc (scalar_chain::scalar_chain):
            Initialize max_visits.
            (scalar_chain::analyze_register_chain): When we exhaust
            max_visits, abort.  Also abort when running into any
            disallowed insn.
            (scalar_chain::add_insn): Propagate abort.
            (scalar_chain::build): Likewise.  When aborting amend
            the set of disallowed insn with the insns set.
            (convert_scalars_to_vector): Adjust.  Do not convert aborted
            chains.

Reply via email to