1 /* { dg-do compile { target int128 } } */
2 /* { dg-options "-O2 -fno-guess-branch-probability -flive-range-shrinkage -mbmi2" } */
3 
4 int a, b, c, d, e;
5 
6 extern int bar(void);
7 
8 __int128
foo(unsigned g,int h,long i,__int128 j,short k,__int128 l)9 foo (unsigned g, int h, long i, __int128 j, short k, __int128 l)
10 {
11   unsigned __int128 m = j;
12   do
13     {
14       j %= 5;
15       c = c >> (m & 31);
16       e = __builtin_sub_overflow (b, 0, &m);
17       d = bar ();
18       l *= __builtin_mul_overflow_p ((unsigned) d, ~(unsigned __int128) 1,
19 				     (unsigned __int128) 0);
20     }
21   while (a);
22   return m + j + k + l;
23 }
24