Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/gcc.dg/pr35691-6.c @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 /* PR middle-end/35691 */ | |
2 /* { dg-do run } */ | |
3 /* { dg-options "-O2" } */ | |
4 | |
5 __attribute__((noinline, noclone)) int | |
6 foo (int *p, unsigned long long *q) | |
7 { | |
8 int p0 = p[0], p10 = p[10], p12 = p[12], p32 = p[32], p77 = p[77], p85 = p[85], p86 = p[86], p97 = p[97], p98 = p[98]; | |
9 unsigned long long q0 = q[0], q10 = q[10], q12 = q[12], q32 = q[32], q77 = q[77], q85 = q[85], q86 = q[86], q97 = q[97], q98 = q[98]; | |
10 return p0 == 0 && q0 == -1 && p10 == 0 && q10 == -1 && p12 == 0 && q12 == -1 | |
11 && p32 == 0 && q32 == -1 && p77 == 0 && q77 == -1 && p85 == 0 && q85 == -1 | |
12 && p86 == 0 && q86 == -1 && p97 == 0 && q97 == -1 && p98 == 0 && q98 == -1; | |
13 } | |
14 | |
15 __attribute__((noinline, noclone)) int | |
16 bar (int *p, unsigned long long *q) | |
17 { | |
18 int p0 = p[0], p10 = p[10], p12 = p[12], p32 = p[32], p77 = p[77], p85 = p[85], p86 = p[86], p97 = p[97], p98 = p[98]; | |
19 unsigned long long q0 = q[0], q10 = q[10], q12 = q[12], q32 = q[32], q77 = q[77], q85 = q[85], q86 = q[86], q97 = q[97], q98 = q[98]; | |
20 return p0 != 0 | q0 != -1 | p10 != 0 | q10 != -1 | p12 != 0 | q12 != -1 | |
21 | p32 != 0 | q32 != -1 | p77 != 0 | q77 != -1 | p85 != 0 | q85 != -1 | |
22 | p86 != 0 | q86 != -1 | p97 != 0 | q97 != -1 | p98 != 0 | q98 != -1; | |
23 } | |
24 | |
25 int p[100]; | |
26 unsigned long long q[100]; | |
27 | |
28 int | |
29 main () | |
30 { | |
31 int i; | |
32 for (i = 0; i < 100; i++) | |
33 { | |
34 p[i] = 0; | |
35 q[i] = -1; | |
36 } | |
37 asm volatile ("" : : "g" (p), "g" (q) : "memory"); | |
38 if (foo (p, q) != 1 || bar (p, q) != 0) | |
39 __builtin_abort (); | |
40 for (i = 0; i < 100; i++) | |
41 { | |
42 int f1, b1, f2, b2; | |
43 p[i] = 1; | |
44 f1 = foo (p, q); | |
45 b1 = bar (p, q); | |
46 p[i] = 0; | |
47 q[i] = 0; | |
48 f2 = foo (p, q); | |
49 b2 = bar (p, q); | |
50 q[i] = -1; | |
51 switch (i) | |
52 { | |
53 case 0: | |
54 case 10: | |
55 case 12: | |
56 case 32: | |
57 case 77: | |
58 case 85: | |
59 case 86: | |
60 case 97: | |
61 case 98: | |
62 if (f1 != 0 || b1 != 1 || f2 != 0 || b2 != 1) | |
63 __builtin_abort (); | |
64 break; | |
65 default: | |
66 if (f1 != 1 || b1 != 0 || f2 != 1 || b2 != 0) | |
67 __builtin_abort (); | |
68 break; | |
69 } | |
70 } | |
71 return 0; | |
72 } |