annotate gcc/testsuite/gcc.dg/pr67089-2.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* PR target/67089 */
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 extern void abort (void);
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 int cnt, d;
kono
parents:
diff changeset
8
kono
parents:
diff changeset
9 __attribute__((noinline, noclone))
kono
parents:
diff changeset
10 void foo (int x)
kono
parents:
diff changeset
11 {
kono
parents:
diff changeset
12 asm volatile ("" : "+m" (d) : "g" (x) : "memory");
kono
parents:
diff changeset
13 cnt++;
kono
parents:
diff changeset
14 }
kono
parents:
diff changeset
15
kono
parents:
diff changeset
16 #define T(n, type, op, cond) \
kono
parents:
diff changeset
17 __attribute__((noinline, noclone)) \
kono
parents:
diff changeset
18 type \
kono
parents:
diff changeset
19 f##n (type x, type y) \
kono
parents:
diff changeset
20 { \
kono
parents:
diff changeset
21 type r = op; \
kono
parents:
diff changeset
22 cond; \
kono
parents:
diff changeset
23 return r; \
kono
parents:
diff changeset
24 }
kono
parents:
diff changeset
25
kono
parents:
diff changeset
26 T (1, unsigned int, x - y, if (r > y) foo (0))
kono
parents:
diff changeset
27 T (2, unsigned long, x - y, if (r <= y) foo (0))
kono
parents:
diff changeset
28 T (3, unsigned short, x - y, if (y < r) foo (r))
kono
parents:
diff changeset
29 T (4, unsigned long long, x - y, if (y >= r) foo (0))
kono
parents:
diff changeset
30 T (5, unsigned int, x - y, if (r >= y) foo (0))
kono
parents:
diff changeset
31 T (6, unsigned long, x - y, if (r < y) foo (0))
kono
parents:
diff changeset
32 T (7, unsigned short, x - y, if (y <= r) foo (r))
kono
parents:
diff changeset
33 T (8, unsigned long long, x - y, if (d || y > r) foo (0))
kono
parents:
diff changeset
34 T (9, unsigned int, x - y, if (d || r > y) foo (0))
kono
parents:
diff changeset
35 T (10, unsigned long, x - y, if (d || r <= y) foo (0))
kono
parents:
diff changeset
36 T (11, unsigned char, x - y, if (d || y < r) foo (0))
kono
parents:
diff changeset
37 T (12, unsigned long long, x - y, if (d || y >= r) foo (0))
kono
parents:
diff changeset
38 T (13, unsigned int, x - y, if (d || r >= y) foo (0))
kono
parents:
diff changeset
39 T (14, unsigned long, x - y, if (d || r < y) foo (0))
kono
parents:
diff changeset
40 T (15, unsigned short, x - y, if (d || y <= r) foo (0))
kono
parents:
diff changeset
41 T (16, unsigned long long, x - y, if (d || y > r) foo (0))
kono
parents:
diff changeset
42
kono
parents:
diff changeset
43 int
kono
parents:
diff changeset
44 main ()
kono
parents:
diff changeset
45 {
kono
parents:
diff changeset
46 if (f1 (5, 3) != 2U || cnt != 0) abort ();
kono
parents:
diff changeset
47 if (f1 (5, 7) != -2U || cnt != 1) abort ();
kono
parents:
diff changeset
48 if (f1 (5, 5) != 0U || cnt != 1) abort ();
kono
parents:
diff changeset
49 if (f1 (5, 0) != 5U || cnt != 2) abort ();
kono
parents:
diff changeset
50 if (f2 (7, 1) != 6UL || cnt != 2) abort ();
kono
parents:
diff changeset
51 if (f2 (7, 8) != -1UL || cnt != 2) abort ();
kono
parents:
diff changeset
52 if (f2 (9, 9) != 0UL || cnt != 3) abort ();
kono
parents:
diff changeset
53 if (f2 (9, 0) != 9UL || cnt != 3) abort ();
kono
parents:
diff changeset
54 if (f3 (15, 14) != 1 || cnt != 3) abort ();
kono
parents:
diff changeset
55 if (f3 (15, 25) != (unsigned short) -10 || cnt != 4) abort ();
kono
parents:
diff changeset
56 if (f3 (15, 15) != 0 || cnt != 4) abort ();
kono
parents:
diff changeset
57 if (f3 (15, 0) != 15 || cnt != 5) abort ();
kono
parents:
diff changeset
58 if (f4 (9132, 9127) != 5ULL || cnt != 6) abort ();
kono
parents:
diff changeset
59 if (f4 (9132, 9137) != -5ULL || cnt != 6) abort ();
kono
parents:
diff changeset
60 if (f4 (9132, 9132) != 0 || cnt != 7) abort ();
kono
parents:
diff changeset
61 if (f4 (9132, 0) != 9132ULL || cnt != 7) abort ();
kono
parents:
diff changeset
62 if (f5 (5, 3) != 2U || cnt != 7) abort ();
kono
parents:
diff changeset
63 if (f5 (5, 7) != -2U || cnt != 8) abort ();
kono
parents:
diff changeset
64 if (f5 (5, 5) != 0U || cnt != 8) abort ();
kono
parents:
diff changeset
65 if (f5 (5, 0) != 5U || cnt != 9) abort ();
kono
parents:
diff changeset
66 if (f6 (7, 1) != 6UL || cnt != 9) abort ();
kono
parents:
diff changeset
67 if (f6 (7, 8) != -1UL || cnt != 9) abort ();
kono
parents:
diff changeset
68 if (f6 (9, 9) != 0UL || cnt != 10) abort ();
kono
parents:
diff changeset
69 if (f6 (9, 0) != 9UL || cnt != 10) abort ();
kono
parents:
diff changeset
70 if (f7 (15, 14) != 1 || cnt != 10) abort ();
kono
parents:
diff changeset
71 if (f7 (15, 25) != (unsigned short) -10 || cnt != 11) abort ();
kono
parents:
diff changeset
72 if (f7 (15, 15) != 0 || cnt != 11) abort ();
kono
parents:
diff changeset
73 if (f7 (15, 0) != 15 || cnt != 12) abort ();
kono
parents:
diff changeset
74 if (f8 (9132, 9127) != 5ULL || cnt != 13) abort ();
kono
parents:
diff changeset
75 if (f8 (9132, 9137) != -5ULL || cnt != 13) abort ();
kono
parents:
diff changeset
76 if (f8 (9132, 9132) != 0 || cnt != 14) abort ();
kono
parents:
diff changeset
77 if (f8 (9132, 0) != 9132ULL || cnt != 14) abort ();
kono
parents:
diff changeset
78 cnt = 0;
kono
parents:
diff changeset
79 if (f9 (5, 3) != 2U || cnt != 0) abort ();
kono
parents:
diff changeset
80 if (f9 (5, 7) != -2U || cnt != 1) abort ();
kono
parents:
diff changeset
81 if (f9 (5, 5) != 0U || cnt != 1) abort ();
kono
parents:
diff changeset
82 if (f9 (5, 0) != 5U || cnt != 2) abort ();
kono
parents:
diff changeset
83 if (f10 (7, 1) != 6UL || cnt != 2) abort ();
kono
parents:
diff changeset
84 if (f10 (7, 8) != -1UL || cnt != 2) abort ();
kono
parents:
diff changeset
85 if (f10 (9, 9) != 0UL || cnt != 3) abort ();
kono
parents:
diff changeset
86 if (f10 (9, 0) != 9UL || cnt != 3) abort ();
kono
parents:
diff changeset
87 if (f11 (15, 14) != 1 || cnt != 3) abort ();
kono
parents:
diff changeset
88 if (f11 (15, 25) != (unsigned char) -10 || cnt != 4) abort ();
kono
parents:
diff changeset
89 if (f11 (15, 15) != 0 || cnt != 4) abort ();
kono
parents:
diff changeset
90 if (f11 (15, 0) != 15 || cnt != 5) abort ();
kono
parents:
diff changeset
91 if (f12 (9132, 9127) != 5ULL || cnt != 6) abort ();
kono
parents:
diff changeset
92 if (f12 (9132, 9137) != -5ULL || cnt != 6) abort ();
kono
parents:
diff changeset
93 if (f12 (9132, 9132) != 0 || cnt != 7) abort ();
kono
parents:
diff changeset
94 if (f12 (9132, 0) != 9132ULL || cnt != 7) abort ();
kono
parents:
diff changeset
95 if (f13 (5, 3) != 2U || cnt != 7) abort ();
kono
parents:
diff changeset
96 if (f13 (5, 7) != -2U || cnt != 8) abort ();
kono
parents:
diff changeset
97 if (f13 (5, 5) != 0U || cnt != 8) abort ();
kono
parents:
diff changeset
98 if (f13 (5, 0) != 5U || cnt != 9) abort ();
kono
parents:
diff changeset
99 if (f14 (7, 1) != 6UL || cnt != 9) abort ();
kono
parents:
diff changeset
100 if (f14 (7, 8) != -1UL || cnt != 9) abort ();
kono
parents:
diff changeset
101 if (f14 (9, 9) != 0UL || cnt != 10) abort ();
kono
parents:
diff changeset
102 if (f14 (9, 0) != 9UL || cnt != 10) abort ();
kono
parents:
diff changeset
103 if (f15 (15, 14) != 1 || cnt != 10) abort ();
kono
parents:
diff changeset
104 if (f15 (15, 25) != (unsigned short) -10 || cnt != 11) abort ();
kono
parents:
diff changeset
105 if (f15 (15, 15) != 0 || cnt != 11) abort ();
kono
parents:
diff changeset
106 if (f15 (15, 0) != 15 || cnt != 12) abort ();
kono
parents:
diff changeset
107 if (f16 (9132, 9127) != 5ULL || cnt != 13) abort ();
kono
parents:
diff changeset
108 if (f16 (9132, 9137) != -5ULL || cnt != 13) abort ();
kono
parents:
diff changeset
109 if (f16 (9132, 9132) != 0 || cnt != 14) abort ();
kono
parents:
diff changeset
110 if (f16 (9132, 0) != 9132ULL || cnt != 14) abort ();
kono
parents:
diff changeset
111 return 0;
kono
parents:
diff changeset
112 }