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

            Bug ID: 119389
           Summary: [15 Regression] tree FRE very slow when dealing with
                    big switch statements
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Keywords: compile-time-hog, needs-bisection
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: pheeck at gcc dot gnu.org
  Target Milestone: ---
              Host: x86_64-pc-linux-gnu
            Target: x86_64-pc-linux-gnu

Created attachment 60833
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=60833&action=edit
Testcase from pr117091

Consider the testcase from pr117091 (attached).  It basically creates a giant
switch using the preprocessor.  Compiling it with the current trunk GCC with at
least -O1 takes hours (I haven't even seen it finish).  When I make the
testcase significantly smaller

-    XXXXX(1)
+    XXXX(1)

I actually see the compilation finish but it is still slow.  GCC reports that
the time is spent in tree FRE.

> gcc bugreport.c -O1 -c -ftime-report
Time variable                                  wall           GGC
 tree FRE                           : 263.85 (100%)   496  (  0%)
 TOTAL                              : 265.14           43M

So I believe there's something at least quadratic in FRE that this testcase
triggers.

Btw this is with --enable-checking=release.

Reply via email to