annotate gcc/testsuite/gcc.dg/pr35691-6.c @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* PR middle-end/35691 */
kono
parents:
diff changeset
2 /* { dg-do run } */
kono
parents:
diff changeset
3 /* { dg-options "-O2" } */
kono
parents:
diff changeset
4
kono
parents:
diff changeset
5 __attribute__((noinline, noclone)) int
kono
parents:
diff changeset
6 foo (int *p, unsigned long long *q)
kono
parents:
diff changeset
7 {
kono
parents:
diff changeset
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];
kono
parents:
diff changeset
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];
kono
parents:
diff changeset
10 return p0 == 0 && q0 == -1 && p10 == 0 && q10 == -1 && p12 == 0 && q12 == -1
kono
parents:
diff changeset
11 && p32 == 0 && q32 == -1 && p77 == 0 && q77 == -1 && p85 == 0 && q85 == -1
kono
parents:
diff changeset
12 && p86 == 0 && q86 == -1 && p97 == 0 && q97 == -1 && p98 == 0 && q98 == -1;
kono
parents:
diff changeset
13 }
kono
parents:
diff changeset
14
kono
parents:
diff changeset
15 __attribute__((noinline, noclone)) int
kono
parents:
diff changeset
16 bar (int *p, unsigned long long *q)
kono
parents:
diff changeset
17 {
kono
parents:
diff changeset
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];
kono
parents:
diff changeset
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];
kono
parents:
diff changeset
20 return p0 != 0 | q0 != -1 | p10 != 0 | q10 != -1 | p12 != 0 | q12 != -1
kono
parents:
diff changeset
21 | p32 != 0 | q32 != -1 | p77 != 0 | q77 != -1 | p85 != 0 | q85 != -1
kono
parents:
diff changeset
22 | p86 != 0 | q86 != -1 | p97 != 0 | q97 != -1 | p98 != 0 | q98 != -1;
kono
parents:
diff changeset
23 }
kono
parents:
diff changeset
24
kono
parents:
diff changeset
25 int p[100];
kono
parents:
diff changeset
26 unsigned long long q[100];
kono
parents:
diff changeset
27
kono
parents:
diff changeset
28 int
kono
parents:
diff changeset
29 main ()
kono
parents:
diff changeset
30 {
kono
parents:
diff changeset
31 int i;
kono
parents:
diff changeset
32 for (i = 0; i < 100; i++)
kono
parents:
diff changeset
33 {
kono
parents:
diff changeset
34 p[i] = 0;
kono
parents:
diff changeset
35 q[i] = -1;
kono
parents:
diff changeset
36 }
kono
parents:
diff changeset
37 asm volatile ("" : : "g" (p), "g" (q) : "memory");
kono
parents:
diff changeset
38 if (foo (p, q) != 1 || bar (p, q) != 0)
kono
parents:
diff changeset
39 __builtin_abort ();
kono
parents:
diff changeset
40 for (i = 0; i < 100; i++)
kono
parents:
diff changeset
41 {
kono
parents:
diff changeset
42 int f1, b1, f2, b2;
kono
parents:
diff changeset
43 p[i] = 1;
kono
parents:
diff changeset
44 f1 = foo (p, q);
kono
parents:
diff changeset
45 b1 = bar (p, q);
kono
parents:
diff changeset
46 p[i] = 0;
kono
parents:
diff changeset
47 q[i] = 0;
kono
parents:
diff changeset
48 f2 = foo (p, q);
kono
parents:
diff changeset
49 b2 = bar (p, q);
kono
parents:
diff changeset
50 q[i] = -1;
kono
parents:
diff changeset
51 switch (i)
kono
parents:
diff changeset
52 {
kono
parents:
diff changeset
53 case 0:
kono
parents:
diff changeset
54 case 10:
kono
parents:
diff changeset
55 case 12:
kono
parents:
diff changeset
56 case 32:
kono
parents:
diff changeset
57 case 77:
kono
parents:
diff changeset
58 case 85:
kono
parents:
diff changeset
59 case 86:
kono
parents:
diff changeset
60 case 97:
kono
parents:
diff changeset
61 case 98:
kono
parents:
diff changeset
62 if (f1 != 0 || b1 != 1 || f2 != 0 || b2 != 1)
kono
parents:
diff changeset
63 __builtin_abort ();
kono
parents:
diff changeset
64 break;
kono
parents:
diff changeset
65 default:
kono
parents:
diff changeset
66 if (f1 != 1 || b1 != 0 || f2 != 1 || b2 != 0)
kono
parents:
diff changeset
67 __builtin_abort ();
kono
parents:
diff changeset
68 break;
kono
parents:
diff changeset
69 }
kono
parents:
diff changeset
70 }
kono
parents:
diff changeset
71 return 0;
kono
parents:
diff changeset
72 }