https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95018
--- Comment #2 from Thomas Koenig <tkoenig at gcc dot gnu.org> --- Created attachment 48490 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=48490&action=edit -fdump-tree-optimized dumpj Finally, the -fdump-tree-optimized dump. Unrolling already appears to happen in the middle end, all the way up to 15 (which is not good). The PHI nodes are also something to behold: <bb 41> [local count: 96219245]: # src_79 = PHI <src_268(36), src_251(34), src_285(38), src_74(14), src_70(16), src_115(18), src_132(20), src_149(22), src_166(24), src_183(26), src_200(28), src_217(30), src_234(32), src_62(40)> # count_I_lsm.31_531 = PHI <count_I_lsm.31_530(36), count_I_lsm.31_530(34), count_I_lsm.31_530(38), count_I_lsm.31_530(14), count_I_lsm.31_530(16), count_I_lsm.31_530(18), count_I_lsm.31_530(20), count_I_lsm.31_530(22), count_I_lsm.31_530(24), count_I_lsm.31_530(26), count_I_lsm.31_530(28), count_I_lsm.31_530(30), count_I_lsm.31_530(32), _21(40)> # count_I_lsm.33_537 = PHI <0(36), 0(34), 0(38), _98(14), 0(16), 0(18), 0(20), 0(22), 0(24), 0(26), 0(28), 0(30), 0(32), 0(40)> # count_I_lsm.35_543 = PHI <0(36), 0(34), 0(38), count_I_lsm.35_542(14), _104(16), 0(18), 0(20), 0(22), 0(24), 0(26), 0(28), 0(30), 0(32), 0(40)> # count_I_lsm.37_549 = PHI <0(36), 0(34), 0(38), count_I_lsm.37_548(14), count_I_lsm.37_548(16), _109(18), 0(20), 0(22), 0(24), 0(26), 0(28), 0(30), 0(32), 0(40)> # count_I_lsm.39_555 = PHI <0(36), 0(34), 0(38), count_I_lsm.39_554(14), count_I_lsm.39_554(16), count_I_lsm.39_554(18), _126(20), 0(22), 0(24), 0(26), 0(28), 0(30), 0(32), 0(40)> # count_I_lsm.41_561 = PHI <0(36), 0(34), 0(38), count_I_lsm.41_560(14), count_I_lsm.41_560(16), count_I_lsm.41_560(18), count_I_lsm.41_560(20), _143(22), 0(24), 0(26), 0(28), 0(30), 0(32), 0(40)> # count_I_lsm.43_567 = PHI <0(36), 0(34), 0(38), count_I_lsm.43_566(14), count_I_lsm.43_566(16), count_I_lsm.43_566(18), count_I_lsm.43_566(20), count_I_lsm.43_566(22), _160(24), 0(26), 0(28), 0(30), 0(32), 0(40)> # count_I_lsm.45_573 = PHI <0(36), 0(34), 0(38), count_I_lsm.45_572(14), count_I_lsm.45_572(16), count_I_lsm.45_572(18), count_I_lsm.45_572(20), count_I_lsm.45_572(22), count_I_lsm.45_572(24), _177(26), 0(28), 0(30), 0(32), 0(40)> # count_I_lsm.47_579 = PHI <0(36), 0(34), 0(38), count_I_lsm.47_578(14), count_I_lsm.47_578(16), count_I_lsm.47_578(18), count_I_lsm.47_578(20), count_I_lsm.47_578(22), count_I_lsm.47_578(24), count_I_lsm.47_578(26), _194(28), 0(30), 0(32), 0(40)> # count_I_lsm.49_585 = PHI <0(36), 0(34), 0(38), count_I_lsm.49_584(14), count_I_lsm.49_584(16), count_I_lsm.49_584(18), count_I_lsm.49_584(20), count_I_lsm.49_584(22), count_I_lsm.49_584(24), count_I_lsm.49_584(26), count_I_lsm.49_584(28), _211(30), 0(32), 0(40)> # count_I_lsm.51_591 = PHI <0(36), 0(34), 0(38), count_I_lsm.51_590(14), count_I_lsm.51_590(16), count_I_lsm.51_590(18), count_I_lsm.51_590(20), count_I_lsm.51_590(22), count_I_lsm.51_590(24), count_I_lsm.51_590(26), count_I_lsm.51_590(28), count_I_lsm.51_590(30), _228(32), 0(40)> # count_I_lsm.53_597 = PHI <0(36), _245(34), 0(38), count_I_lsm.53_596(14), count_I_lsm.53_596(16), count_I_lsm.53_596(18), count_I_lsm.53_596(20), count_I_lsm.53_596(22), count_I_lsm.53_596(24), count_I_lsm.53_596(26), count_I_lsm.53_596(28), count_I_lsm.53_596(30), count_I_lsm.53_596(32), 0(40)> # count_I_lsm.55_603 = PHI <_262(36), count_I_lsm.55_602(34), 0(38), count_I_lsm.55_602(14), count_I_lsm.55_602(16), count_I_lsm.55_602(18), count_I_lsm.55_602(20), count_I_lsm.55_602(22), count_I_lsm.55_602(24), count_I_lsm.55_602(26), count_I_lsm.55_602(28), count_I_lsm.55_602(30), count_I_lsm.55_602(32), 0(40)> # count_I_lsm.57_609 = PHI <count_I_lsm.57_608(36), count_I_lsm.57_608(34), _279(38), count_I_lsm.57_608(14), count_I_lsm.57_608(16), count_I_lsm.57_608(18), count_I_lsm.57_608(20), count_I_lsm.57_608(22), count_I_lsm.57_608(24), count_I_lsm.57_608(26), count_I_lsm.57_608(28), count_I_lsm.57_608(30), count_I_lsm.57_608(32), 0(40)> <bb 42> [local count: 102536739]: # src_33 = PHI <src_79(41), src_57(12)> # count_I_lsm.8_29 = PHI <0(41), _15(12)> # count_I_lsm.31_532 = PHI <count_I_lsm.31_531(41), count_I_lsm.31_530(12)> # count_I_lsm.33_538 = PHI <count_I_lsm.33_537(41), count_I_lsm.33_536(12)> # count_I_lsm.35_544 = PHI <count_I_lsm.35_543(41), count_I_lsm.35_542(12)> # count_I_lsm.37_550 = PHI <count_I_lsm.37_549(41), count_I_lsm.37_548(12)> # count_I_lsm.39_556 = PHI <count_I_lsm.39_555(41), count_I_lsm.39_554(12)> # count_I_lsm.41_562 = PHI <count_I_lsm.41_561(41), count_I_lsm.41_560(12)> # count_I_lsm.43_568 = PHI <count_I_lsm.43_567(41), count_I_lsm.43_566(12)> # count_I_lsm.45_574 = PHI <count_I_lsm.45_573(41), count_I_lsm.45_572(12)> # count_I_lsm.47_580 = PHI <count_I_lsm.47_579(41), count_I_lsm.47_578(12)> # count_I_lsm.49_586 = PHI <count_I_lsm.49_585(41), count_I_lsm.49_584(12)> # count_I_lsm.51_592 = PHI <count_I_lsm.51_591(41), count_I_lsm.51_590(12)> # count_I_lsm.53_598 = PHI <count_I_lsm.53_597(41), count_I_lsm.53_596(12)> # count_I_lsm.55_604 = PHI <count_I_lsm.55_603(41), count_I_lsm.55_602(12)> # count_I_lsm.57_610 = PHI <count_I_lsm.57_609(41), count_I_lsm.57_608(12)> goto <bb 12>; [100.00%] <bb 43> [local count: 29043813]: # _35 = PHI <_63(3), destptr_52(39), destptr_52(10), destptr_52(13), destptr_52(37), destptr_52(15), destptr_52(17), destptr_52(19), destptr_52(21), destptr_52(23), destptr_52(25), destptr_52(27), destptr_52(29), destptr_52(31), destptr_52(33), destptr_52(35), destptr_52(40)>