https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91522
Bug ID: 91522
Summary: [10 Regression] STV is slow
Product: gcc
Version: 10.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: rguenth at gcc dot gnu.org
Target Milestone: ---
Compiling module_domain.fppized.f90 from 521.wrf with -Ofast -march=haswell
reveals
machine dep reorg : 89.07 ( 95%) 0.02 ( 18%) 89.10 ( 95%)
54 kB ( 0%)
TOTAL : 95.13 0.13 95.32
103803 kB
perf reports (checking is enabled but -fno-checking supplied):
83.74% f951 f951 [.] (anonymous
namespace)::scalar_chain::analyze_register_chain
5.80% f951 f951 [.] bitmap_bit_p
5.13% f951 f951 [.] (anonymous
namespace)::general_scalar_chain::mark_dual_mode_def
which is exactly what I noticed when reviewing the pass functionality:
/* ??? The following is quadratic since analyze_register_chain
iterates over all refs to look for dual-mode regs. Instead this
should be done separately for all regs mentioned in the chain once. */