/* PR rtl-optimization/97459 */
/* { dg-do run } */
/* { dg-options "-O2" } */
/* { dg-additional-options "-DEXPENSIVE" { target run_expensive_tests } } */

#ifdef __SIZEOF_INT128__
typedef __int128_t T;
typedef __uint128_t U;
#else
typedef long long T;
typedef unsigned long long U;
#endif

T __attribute__((noipa)) foo (T x, T n) { return x % n; }
#define C(n) T __attribute__((noipa)) foo##n (T x) { return x % (n - 10000); }

#define C1(n) C(n##1) C(n##3) C(n##5) C(n##7) C(n##9)
#define C2(n) C1(n##0) C1(n##1) C1(n##2) C1(n##3) C1(n##4) \
	      C1(n##5) C1(n##6) C1(n##7) C1(n##8) C1(n##9)
#ifdef EXPENSIVE
#define C3(n) C2(n##0) C2(n##1) C2(n##2) C2(n##3) C2(n##4) \
	      C2(n##5) C2(n##6) C2(n##7) C2(n##8) C2(n##9)
#define C4(n) C3(n##0) C3(n##1) C3(n##2) C3(n##3) C3(n##4) \
	      C3(n##5) C3(n##6) C3(n##7) C3(n##8) C3(n##9)
#else
#define C3(n) C2(n##0) C2(n##4) C2(n##9)
#define C4(n) C3(n##0) C3(n##3) C3(n##7)
#endif
#define TESTS C4(1) C1(10010) C1(10012) C1(16144)

TESTS

struct S { T x; T (*foo) (T); };

#undef C
#define C(n) { n - 10000, foo##n },

struct S tests[] = {
TESTS
  { 0, 0 }
};

int
main ()
{
  int i, j, k;
  for (k = 0; tests[k].x; k++)
    for (i = 0; i < sizeof (T) * __CHAR_BIT__; i++)
      for (j = -5; j <= 5; j++)
	{
	  U x = ((U) 1 << i) + j;
	  if (foo ((T) x, tests[k].x) != tests[k].foo ((T) x)
	      || foo ((T) -x, tests[k].x) != tests[k].foo ((T) -x))
	    __builtin_abort ();
	}
  return 0;
}
