On Wed, Dec 17, 2025 at 5:10 AM Andrew Pinski <[email protected]> wrote: > > Looks like Honza messed up the return value for > __builtin_unreachable/__builtin_trap > in unlikely_executed_stmt_p (with r16-2639-g1d3e713dda99e2). These are > inserted > by the user or optimizers but they are always unlikely. So fix the return > value > to be true for these. > > A minor update to gcc.target/i386/pr121572-1a.c is needed as the never > executed > predicate causes the trap instruction (ud2) to be in a new partition which > interfers > with the dg-final check-body check. Also the code generation goes back to > what it > was in GCC 15 also. > > Bootstrapped and tested on x86_64-linux-gnu.
OK. > gcc/ChangeLog: > > * predict.cc (unlikely_executed_stmt_p): Fix up return for > __builtin_unreachable/__builtin_trap. > > gcc/testsuite/ChangeLog: > > * gcc.target/i386/pr121572-1a.c: Turn off > -freorder-blocks-and-partition > as it interferes with the check-body. > > Signed-off-by: Andrew Pinski <[email protected]> > --- > gcc/predict.cc | 2 +- > gcc/testsuite/gcc.target/i386/pr121572-1a.c | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/gcc/predict.cc b/gcc/predict.cc > index d937cc699b0..704a4b574f9 100644 > --- a/gcc/predict.cc > +++ b/gcc/predict.cc > @@ -839,7 +839,7 @@ unlikely_executed_stmt_p (gimple *stmt) > if (gimple_call_builtin_p (stmt, BUILT_IN_UNREACHABLE) > || gimple_call_builtin_p (stmt, BUILT_IN_UNREACHABLE_TRAP) > || gimple_call_builtin_p (stmt, BUILT_IN_TRAP)) > - return false; > + return true; > > /* Checks below do not need to be fully reliable. Cold attribute may be > misplaced by user and in the presence of comdat we may result in call to > diff --git a/gcc/testsuite/gcc.target/i386/pr121572-1a.c > b/gcc/testsuite/gcc.target/i386/pr121572-1a.c > index 270d8ff5cb6..c96c3f046a5 100644 > --- a/gcc/testsuite/gcc.target/i386/pr121572-1a.c > +++ b/gcc/testsuite/gcc.target/i386/pr121572-1a.c > @@ -19,7 +19,7 @@ extern __thread int tv_cache __attribute__ ((visibility > ("hidden"))); > extern void use_cache (int); > extern int val (int v); > > -__attribute__ ((optimize (2))) > +__attribute__ ((optimize (2,"-fno-reorder-blocks-and-partition"))) > void > bug (void) > { > -- > 2.43.0 >
