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.  */

Reply via email to