https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122734
--- Comment #11 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The trunk branch has been updated by Andrew Pinski <[email protected]>: https://gcc.gnu.org/g:135fe58ec9a989fc301d762547325fd90ea37397 commit r16-6233-g135fe58ec9a989fc301d762547325fd90ea37397 Author: Andrew Pinski <[email protected]> Date: Mon Dec 15 12:36:44 2025 -0800 ch: Fix detection of non-executed loop exit After r16-6104-gb5c64db0a49d46, we try to duplicate bb's that contain loop exit that have "never exit" but we check against the propability of the exit to very_unlikely. If we have PGO, then a loop exit might be very unlikely to be taken if we interate the loop more than 2000 times. The problem is the check for very_unlikely is just wrong. It should just be never. So let's remove that. Also adds a testcase for __builtin_abort instead of __builtin_unreachable since there are slightly different pathes to get the probilities. Bootstrapped and tested on x86_64-linux-gnu. PR tree-optimization/122734 gcc/ChangeLog: * tree-ssa-loop-ch.cc (should_duplicate_loop_header_p): Remove check on very_unlikely probability. gcc/testsuite/ChangeLog: * gcc.dg/tree-ssa/copy-headers-13.c: New test. Signed-off-by: Andrew Pinski <[email protected]>
