https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117091
--- Comment #10 from ak at gcc dot gnu.org --- https://github.com/andikleen/gcc/commit/9a71a4dbdd7094241bcdb0b89d7261c19dcc4b34 fixes the test case by checking early that bit clustering only works when multiple labels point to the same code. It still needs a limit on the clusters however. With that fixes the test case shows a new issue in late combine undoing and redoing things constantly. Is that a known problem? - 35.83% cc1 cc1 [.] temporarily_undo_changes(int) ◆ 35.82% temporarily_undo_changes(int) ▒ rtl_ssa::insn_info::calculate_cost() const ▒ rtl_ssa::changes_are_worthwhile(array_slice<rtl_ssa::insn_change* const>, bool) ▒ (anonymous namespace)::late_combine::combine_into_uses(rtl_ssa::insn_info*, rtl_ssa::insn_info*) ▒ (anonymous namespace)::pass_late_combine::execute(function*) ▒ execute_one_pass(opt_pass*) ▒ execute_pass_list_1(opt_pass*) ▒ + execute_pass_list_1(opt_pass*) ▒ - 34.44% cc1 cc1 [.] redo_changes(int) ▒ 34.43% rtl_ssa::insn_info::calculate_cost() const ▒ rtl_ssa::changes_are_worthwhile(array_slice<rtl_ssa::insn_change* const>, bool) ▒ (anonymous namespace)::late_combine::combine_into_uses(rtl_ssa::insn_info*, rtl_ssa::insn_info*) ▒ (anonymous namespace)::pass_late_combine::execute(function*) ▒ execute_one_pass(opt_pass*) ▒ execute_pass_list_1(opt_pass*) ▒ + execute_pass_list_1(opt_pass*) ▒