/* PR rtl-optimization/83424 */ /* { dg-do run { target int128 } } */ /* { dg-options "-O -fno-tree-ccp -fno-tree-coalesce-vars" } */ typedef unsigned char u8; typedef unsigned int u32; typedef unsigned __int128 u128; u32 a, c; u8 b; static u128 __attribute__ ((noinline, noclone)) foo (u128 p) { u8 x = ~b; p &= c; x *= -p; x &= a == 0; x >>= 1; return p + x; } int main (void) { u128 x = foo (0); if (x != 0) __builtin_abort (); return 0; }