]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/testsuite/gcc.dg/pr97459-6.c
Update copyright years.
[thirdparty/gcc.git] / gcc / testsuite / gcc.dg / pr97459-6.c
CommitLineData
037fe26e
JJ
1/* PR rtl-optimization/97459 */
2/* { dg-do run } */
3/* { dg-options "-O2" } */
4/* { dg-additional-options "-DEXPENSIVE" { target run_expensive_tests } } */
5
6#ifdef __SIZEOF_INT128__
7typedef __int128_t T;
8typedef __uint128_t U;
9#else
10typedef long long T;
11typedef unsigned long long U;
12#endif
13
14T __attribute__((noipa)) foo (T x, T n, T *r) { *r = x % n; return x / n; }
15#define C(n) T __attribute__((noipa)) foo##n (T x, T *r) { *r = x % (n - 10000); return x / (n - 10000); }
16
17#define C1(n) C(n##1) C(n##3) C(n##5) C(n##7) C(n##9)
18#define C2(n) C1(n##0) C1(n##1) C1(n##2) C1(n##3) C1(n##4) \
19 C1(n##5) C1(n##6) C1(n##7) C1(n##8) C1(n##9)
20#ifdef EXPENSIVE
21#define C3(n) C2(n##0) C2(n##1) C2(n##2) C2(n##3) C2(n##4) \
22 C2(n##5) C2(n##6) C2(n##7) C2(n##8) C2(n##9)
23#define C4(n) C3(n##0) C3(n##1) C3(n##2) C3(n##3) C3(n##4) \
24 C3(n##5) C3(n##6) C3(n##7) C3(n##8) C3(n##9)
25#else
26#define C3(n) C2(n##0) C2(n##4) C2(n##9)
27#define C4(n) C3(n##0) C3(n##3) C3(n##7)
28#endif
29#define TESTS C4(1) C1(10010) C1(10012) C1(16144)
30
31TESTS
32
33struct S { T x; T (*foo) (T, T *); };
34
35#undef C
36#define C(n) { n - 10000, foo##n },
37
38struct S tests[] = {
39TESTS
40 { 0, 0 }
41};
42
43int
44main ()
45{
46 int i, j, k;
47 for (k = 0; tests[k].x; k++)
48 for (i = 0; i < sizeof (T) * __CHAR_BIT__; i++)
49 for (j = -5; j <= 5; j++)
50 {
51 U x = ((U) 1 << i) + j;
52 T r1 = 0, r2 = 0;
53 if (foo ((T) x, tests[k].x, &r1) != tests[k].foo ((T) x, &r2)
54 || r1 != r2)
55 __builtin_abort ();
56 r1 = 0; r2 = 0;
57 if (foo ((T) -x, tests[k].x, &r1) != tests[k].foo ((T) -x, &r2)
58 || r1 != r2)
59 __builtin_abort ();
60 }
61 return 0;
62}