https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97623
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |ASSIGNED Ever confirmed|0 |1 Summary|Extremely slow O2 compile |[9/10/11 Regression] |(>>O(n^2)) |Extremely slow O2 compile | |(>>O(n^2)) Known to work| |7.5.0 Component|middle-end |tree-optimization Last reconfirmed| |2020-10-29 --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- tree PRE : 6.83 ( 96%) 0.02 ( 50%) 6.90 ( 96%) 11764 kB ( 37%) Confirmed. insert iterations == 187: 1 RPO blocks: 843 RPO iterations == 10: 1 compute_antic iterations == 2: 1 RPO blocks visited: 843 New PHIs: 15021 RPO num values == 7009: 1 Insertions: 23846 RPO max_rpo iterations == 0: 1 RPO blocks executable: 843 RPO block visited times == 1: 843 HOIST inserted: 13098 RPO num lattice == 7009: 1 RPO num avail == 6755: 1 Symbol to SSA rewrite: 1 Eliminated: 27807 So the number of insert iterations is troubling. Now the testcase is a bit big to analyze what's going on there, we seem to need about 2 insert iterations for each of the statements. It looks like the statements are 1:1 copies besides sometimes changing the constant index into the tbt__rvtop__swerv__ifu__bp__bht_bank_wr_data array? I will have a closer look.