aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/i386/pr85860.c
blob: aef78a4b958c74faff5f776e80b72b255f276817 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/* { dg-do compile { target lp64 } } */
/* { dg-options "-O2 -fno-guess-branch-probability -flive-range-shrinkage -mbmi2" } */

int a, b, c, d, e;

extern int bar(void);

__int128
foo (unsigned g, int h, long i, __int128 j, short k, __int128 l)
{
  unsigned __int128 m = j;
  do
    {
      j %= 5;
      c = c >> (m & 31);
      e = __builtin_sub_overflow (b, 0, &m);
      d = bar ();
      l *= __builtin_mul_overflow_p ((unsigned) d, ~(unsigned __int128) 1,
				     (unsigned __int128) 0);
    }
  while (a);
  return m + j + k + l;
}