tree-optimization/115959 - ICE with SLP condition reduction
[official-gcc.git] / gcc / testsuite / gcc.c-torture / execute / 20041011-1.c
blobb726641f7c88748ac7198010e38dd2d227d87542
1 void abort (void);
2 void exit (int);
4 typedef unsigned long long ull;
5 volatile int gvol[32];
6 ull gull;
8 #define MULTI(X) \
9 X( 1), X( 2), X( 3), X( 4), X( 5), X( 6), X( 7), X( 8), X( 9), X(10), \
10 X(11), X(12), X(13), X(14), X(15), X(16), X(17), X(18), X(19), X(20), \
11 X(21), X(22), X(23), X(24), X(25), X(26), X(27), X(28), X(29), X(30)
13 #define DECLARE(INDEX) x##INDEX
14 #define COPYIN(INDEX) x##INDEX = gvol[INDEX]
15 #define COPYOUT(INDEX) gvol[INDEX] = x##INDEX
17 #define BUILD_TEST(NAME, N) \
18 ull __attribute__((noinline)) \
19 NAME (int n, ull x) \
20 { \
21 while (n--) \
22 { \
23 int MULTI (DECLARE); \
24 MULTI (COPYIN); \
25 MULTI (COPYOUT); \
26 x += N; \
27 } \
28 return x; \
31 #define RUN_TEST(NAME, N) \
32 if (NAME (3, ~0ULL) != N * 3 - 1) \
33 abort (); \
34 if (NAME (3, 0xffffffffULL) \
35 != N * 3 + 0xffffffffULL) \
36 abort ();
38 #define DO_TESTS(DO_TEST) \
39 DO_TEST (t1, -2048) \
40 DO_TEST (t2, -513) \
41 DO_TEST (t3, -512) \
42 DO_TEST (t4, -511) \
43 DO_TEST (t5, -1) \
44 DO_TEST (t6, 1) \
45 DO_TEST (t7, 511) \
46 DO_TEST (t8, 512) \
47 DO_TEST (t9, 513) \
48 DO_TEST (t10, gull) \
49 DO_TEST (t11, -gull)
51 DO_TESTS (BUILD_TEST)
53 ull neg (ull x) { return -x; }
55 int
56 main ()
58 gull = 100;
59 DO_TESTS (RUN_TEST)
60 if (neg (gull) != -100ULL)
61 abort ();
62 exit (0);