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

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
With -fno-ext-dce -fno-fold-mem-offsets on trunk the identified regressions
distribute to

 if-conversion 2                    :   3.98 (  2%)    55k (  0%)
 `- dominance computation           :   1.02 (  0%)     0  (  0%)
 `- loop init                       :   0.20 (  0%)  1512  (  0%)
 `- df live regs                    :  17.28 (  7%)     0  (  0%)
 `- df live&initialized regs        :  15.76 (  6%)     0  (  0%)

 hard reg cprop                     :   4.05 (  2%)  9072  (  0%)
 `- df reg dead/unused notes        :   0.11 (  0%)   278k (  0%)
 `- df live regs                    :  11.19 (  4%)     0  (  0%)
 `- df live&initialized regs        :  10.37 (  4%)     0  (  0%)

 reorder blocks                     :  13.82 (  5%)  4663M ( 80%)
 `- rebuild jump labels             :   0.04 (  0%)     0  (  0%)
 `- cfg cleanup                     :   1.41 (  1%)   904  (  0%)

a quick theory is that sinking increases the number of BBs by sinking
into empty forwarders (that might have been created by splitting critical
edges).

> grep '<bb [^>]*>.*:' all.i.151t.pre | wc -l
46800
> grep '<bb [^>]*>.*:' all.i.152t.sink1 | wc -l
51971

mostly caused by sink operations

-  ___host_label_270380 = _19861->host_label;
   _19864 = _19861->host;
   if (_19864 == ___H__20_all_2e_o1)
-    goto <bb 6>; [98.00%]
+    goto <bb 7431>; [98.00%]
   else
-    goto <bb 46003>; [2.00%]
+    goto <bb 51173>; [2.00%]
+
+  <bb 7431> [local count: 396545]:
+  ___host_label_270380 = _19861->host_label;
+  goto <bb 7>; [100.00%]

compared to disabling sinking alltogether sinking increases BB count from
46853 to 52024 at .optimize.

This doesn't immediately explain a 100% increase in compile-time, when
this pushes the bitmap work set from cache to main memory it might.

Reply via email to