Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/gcc.dg/vect/vect-alias-check-8.c @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | |
children | 1830386684a0 |
comparison
equal
deleted
inserted
replaced
111:04ced10e8804 | 131:84e7813d76e9 |
---|---|
1 #define N 200 | |
2 #define DIST 32 | |
3 | |
4 typedef signed char sc; | |
5 typedef unsigned char uc; | |
6 typedef signed short ss; | |
7 typedef unsigned short us; | |
8 typedef int si; | |
9 typedef unsigned int ui; | |
10 typedef signed long long sll; | |
11 typedef unsigned long long ull; | |
12 | |
13 #define FOR_EACH_TYPE(M) \ | |
14 M (sc) M (uc) \ | |
15 M (ss) M (us) \ | |
16 M (si) M (ui) \ | |
17 M (sll) M (ull) \ | |
18 M (float) M (double) | |
19 | |
20 #define TEST_VALUE(I) ((I) * 5 / 2) | |
21 | |
22 #define ADD_TEST(TYPE) \ | |
23 TYPE a_##TYPE[N * 2]; \ | |
24 void __attribute__((noinline, noclone)) \ | |
25 test_##TYPE (int x, int y) \ | |
26 { \ | |
27 for (int i = 0; i < N; ++i) \ | |
28 a_##TYPE[i + x] += a_##TYPE[i + y]; \ | |
29 } | |
30 | |
31 #define DO_TEST(TYPE) \ | |
32 for (int i = 0; i < DIST * 2; ++i) \ | |
33 { \ | |
34 for (int j = 0; j < N + DIST * 2; ++j) \ | |
35 a_##TYPE[j] = TEST_VALUE (j); \ | |
36 test_##TYPE (i, DIST); \ | |
37 for (int j = 0; j < N + DIST * 2; ++j) \ | |
38 { \ | |
39 TYPE expected; \ | |
40 if (j < i || j >= i + N) \ | |
41 expected = TEST_VALUE (j); \ | |
42 else if (i <= DIST) \ | |
43 expected = ((TYPE) TEST_VALUE (j) \ | |
44 + (TYPE) TEST_VALUE (j - i + DIST)); \ | |
45 else \ | |
46 expected = ((TYPE) TEST_VALUE (j) \ | |
47 + a_##TYPE[j - i + DIST]); \ | |
48 if (expected != a_##TYPE[j]) \ | |
49 __builtin_abort (); \ | |
50 } \ | |
51 } | |
52 | |
53 FOR_EACH_TYPE (ADD_TEST) | |
54 | |
55 int | |
56 main (void) | |
57 { | |
58 FOR_EACH_TYPE (DO_TEST) | |
59 return 0; | |
60 } |