https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90128
Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |marxin at gcc dot gnu.org --- Comment #4 from Martin Liška <marxin at gcc dot gnu.org> --- (In reply to Richard Biener from comment #2) > Ugh. Cactus is really ugly code :/ For one there's an invariant switch () > in the innermost loop, expanded to a binary tree (slightly different split > point > GCC 8 vs. trunk), obviously unswitching cannot handle this. Yes, the binary tree is bit different, but equally good to me: GCC 8: if (fdOrder_15741 == 4) goto <bb 193>; [20.00%] else goto <bb 188>; [80.00%] <bb 188> [local count: 955630223]: if (fdOrder_15741 > 4) goto <bb 190>; [62.50%] else goto <bb 189>; [37.50%] <bb 189> [local count: 955630223]: if (fdOrder_15741 == 2) goto <bb 192>; [66.67%] else goto <bb 196>; [33.33%] <bb 190> [local count: 955630223]: if (fdOrder_15741 == 6) goto <bb 194>; [40.00%] else goto <bb 191>; [60.00%] <bb 191> [local count: 955630223]: if (fdOrder_15741 == 8) goto <bb 195>; [66.67%] else goto <bb 196>; [33.33%] GCC 9: if (fdOrder_13024 == 6) goto <bb 194>; [20.00%] else goto <bb 188>; [80.00%] <bb 188> [local count: 955630224]: if (fdOrder_13024 > 6) goto <bb 191>; [37.50%] else goto <bb 189>; [62.50%] <bb 189> [local count: 955630224]: if (fdOrder_13024 == 2) goto <bb 192>; [40.00%] else goto <bb 190>; [60.00%] <bb 190> [local count: 955630224]: if (fdOrder_13024 == 4) goto <bb 193>; [100.00%] else goto <bb 196>; [0.00%] <bb 191> [local count: 955630224]: if (fdOrder_13024 == 8) goto <bb 195>; [66.67%] else goto <bb 196>; [33.33%]