Hi! This PR has been fixed by the PR112526 fix.
Tested on x86_64-linux and i686-linux, committed to trunk as obvious. 2023-11-22 Jakub Jelinek <ja...@redhat.com> PR target/65368 * gcc.target/i386/bmi2-pr112518.c: New test. --- gcc/testsuite/gcc.target/i386/bmi2-pr112518.c.jj 2023-11-21 19:55:21.948132480 +0100 +++ gcc/testsuite/gcc.target/i386/bmi2-pr112518.c 2023-11-21 19:57:13.694570877 +0100 @@ -0,0 +1,25 @@ +/* PR target/65368 */ +/* { dg-do run { target { bmi2 && int128 } } } */ +/* { dg-options "-Os -mbmi2" } */ + +#include "bmi2-check.h" + +unsigned u; +int g; + +unsigned long long +foo (int i) +{ + unsigned long long x = u; + g = __builtin_mul_overflow_p (u, ((unsigned __int128) 4292468825) << 64 | 150, 0); + x |= g % i; + return x; +} + +static __attribute__((noipa)) void +bmi2_test () +{ + unsigned long long x = foo (3); + if (x) + __builtin_abort (); +} Jakub