Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/gcc.dg/precedence-1.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 /* Test precedence and associativity in expressions. */ | |
2 /* Origin: Joseph Myers <joseph@codesourcery.com> */ | |
3 /* { dg-do compile } */ | |
4 /* { dg-options "" } */ | |
5 | |
6 struct s { int *a; } *p, q, *r[2], *g(); | |
7 int *i[2]; | |
8 int j[2]; | |
9 _Complex double c[2]; | |
10 | |
11 void | |
12 f (void) | |
13 { | |
14 #define ASSERT(expr) do { char x[(expr) ? 1 : -1]; } while (0) | |
15 /* Postfix and unary operators and casts. */ | |
16 *p++; | |
17 *p--; | |
18 *p->a; | |
19 *q.a; | |
20 *r[1]; | |
21 (*g()).a; | |
22 ++i[0]; | |
23 --i[0]; | |
24 +j[0]; | |
25 -j[0]; | |
26 ~j[0]; | |
27 !j[0]; | |
28 __real__ c[1]; | |
29 __imag__ c[1]; | |
30 ASSERT ((sizeof p++) == (sizeof p)); | |
31 ASSERT ((sizeof (int) + 1) == ((sizeof (int)) + 1)); | |
32 ASSERT ((__alignof p++) == (__alignof p)); | |
33 ASSERT ((__alignof (int) + 1) == ((__alignof (int)) + 1)); | |
34 ASSERT ((sizeof __extension__ 1 + 1) == ((sizeof 1) + 1)); | |
35 /* Binary operators. */ | |
36 ASSERT (((_Bool) 1 * 2) == 2); | |
37 ASSERT (((_Bool) 8 / 4) == 0); | |
38 ASSERT (((_Bool) 8 % 4) == 1); | |
39 #define ASSERT_BIN(C1, O1, C2, O2, C3, V1, V2, V3) \ | |
40 do { \ | |
41 ASSERT ((C1 O1 C2 O2 C3) == V1); \ | |
42 ASSERT (((C1 O1 C2) O2 C3) == V2); \ | |
43 ASSERT ((C1 O1 (C2 O2 C3)) == V3); \ | |
44 } while (0); | |
45 ASSERT_BIN (1, *, 2, *, 3, 6, 6, 6); | |
46 ASSERT_BIN (2, *, 2, /, 3, 1, 1, 0); | |
47 ASSERT_BIN (2, *, 2, %, 3, 1, 1, 4); | |
48 ASSERT_BIN (2, /, 2, *, 3, 3, 3, 0); | |
49 ASSERT_BIN (2, /, 2, /, 2, 0, 0, 2); | |
50 ASSERT_BIN (2, /, 4, %, 3, 0, 0, 2); | |
51 ASSERT_BIN (2, %, 2, *, 3, 0, 0, 2); | |
52 ASSERT_BIN (2, %, 9, /, 3, 0, 0, 2); | |
53 ASSERT_BIN (2, %, 4, %, 3, 2, 2, 0); | |
54 ASSERT_BIN (2, *, 3, +, 4, 10, 10, 14); | |
55 ASSERT_BIN (2, *, 3, -, 4, 2, 2, -2); | |
56 ASSERT_BIN (2, /, 3, +, 4, 4, 4, 0); | |
57 ASSERT_BIN (2, /, 3, -, 4, -4, -4, -2); | |
58 ASSERT_BIN (2, %, 3, +, 4, 6, 6, 2); | |
59 ASSERT_BIN (2, %, 3, -, 4, -2, -2, 0); | |
60 ASSERT_BIN (2, +, 3, *, 4, 14, 20, 14); | |
61 ASSERT_BIN (2, +, 3, /, 4, 2, 1, 2); | |
62 ASSERT_BIN (2, +, 3, %, 4, 5, 1, 5); | |
63 ASSERT_BIN (2, -, 3, *, 4, -10, -4, -10); | |
64 ASSERT_BIN (2, -, 3, /, 4, 2, 0, 2); | |
65 ASSERT_BIN (2, -, 4, %, 4, 2, -2, 2); | |
66 ASSERT_BIN (2, +, 3, +, 4, 9, 9, 9); | |
67 ASSERT_BIN (2, +, 3, -, 4, 1, 1, 1); | |
68 ASSERT_BIN (2, -, 3, +, 4, 3, 3, -5); | |
69 ASSERT_BIN (2, -, 3, -, 4, -5, -5, 3); | |
70 ASSERT_BIN (3, +, 2, <<, 4, 80, 80, 35); | |
71 ASSERT_BIN (3, +, 2, >>, 4, 0, 0, 3); | |
72 ASSERT_BIN (3, -, 2, <<, 4, 16, 16, -29); | |
73 ASSERT_BIN (3, -, 2, >>, 4, 0, 0, 3); | |
74 ASSERT_BIN (2, <<, 4, +, 3, 256, 35, 256); | |
75 ASSERT_BIN (2, <<, 4, -, 3, 4, 29, 4); | |
76 ASSERT_BIN (2, >>, 4, +, 3, 0, 3, 0); | |
77 ASSERT_BIN (2, >>, 4, -, 3, 1, -3, 1); | |
78 ASSERT_BIN (4L, <<, 2L, <<, 3L, 128L, 128L, 262144L); | |
79 ASSERT_BIN (4L, <<, 2L, >>, 3L, 2L, 2L, 4L); | |
80 ASSERT_BIN (4L, >>, 2L, <<, 3L, 8L, 8L, 0L); | |
81 ASSERT_BIN (4L, >>, 2L, >>, 3L, 0L, 0L, 4L); | |
82 ASSERT_BIN (2, <<, 5, <, 4, 0, 0, 2); | |
83 ASSERT_BIN (2, <<, 5, >, 4, 1, 1, 4); | |
84 ASSERT_BIN (2, <<, 5, <=, 4, 0, 0, 2); | |
85 ASSERT_BIN (2, <<, 5, >=, 4, 1, 1, 4); | |
86 ASSERT_BIN (2, >>, 5, <, 4, 1, 1, 2); | |
87 ASSERT_BIN (2, >>, 5, >, 4, 0, 0, 1); | |
88 ASSERT_BIN (2, >>, 5, <=, 4, 1, 1, 2); | |
89 ASSERT_BIN (2, >>, 5, >=, 4, 0, 0, 1); | |
90 ASSERT_BIN (4, <, 3, <<, 2, 1, 0, 1); | |
91 ASSERT_BIN (4, <, 20, >>, 2, 1, 0, 1); | |
92 ASSERT_BIN (4, >, 3, <<, 2, 0, 4, 0); | |
93 ASSERT_BIN (4, >, 3, >>, 2, 1, 0, 1); | |
94 ASSERT_BIN (4, <=, 3, <<, 2, 1, 0, 1); | |
95 ASSERT_BIN (4, <=, 20, >>, 2, 1, 0, 1); | |
96 ASSERT_BIN (4, >=, 3, <<, 2, 0, 4, 0); | |
97 ASSERT_BIN (4, >=, 3, >>, 2, 1, 0, 1); | |
98 ASSERT_BIN (1, <, 2, <, 3, 1, 1, 0); | |
99 ASSERT_BIN (1, <, 2, >, 0, 1, 1, 0); | |
100 ASSERT_BIN (1, <, 2, <=, 3, 1, 1, 0); | |
101 ASSERT_BIN (0, <, 4, >=, 3, 0, 0, 1); | |
102 ASSERT_BIN (1, >, 2, <, 3, 1, 1, 0); | |
103 ASSERT_BIN (1, >, 2, >, 3, 0, 0, 1); | |
104 ASSERT_BIN (1, >, 2, <=, 3, 1, 1, 0); | |
105 ASSERT_BIN (1, >, 2, >=, 3, 0, 0, 1); | |
106 ASSERT_BIN (3, <=, 2, <, 3, 1, 1, 0); | |
107 ASSERT_BIN (2, <=, 3, >, 0, 1, 1, 0); | |
108 ASSERT_BIN (2, <=, 3, <=, 4, 1, 1, 0); | |
109 ASSERT_BIN (2, <=, 3, >=, 1, 1, 1, 0); | |
110 ASSERT_BIN (0, >=, 2, <, 3, 1, 1, 0); | |
111 ASSERT_BIN (1, >=, 2, >, 3, 0, 0, 1); | |
112 ASSERT_BIN (0, >=, 2, <=, 3, 1, 1, 0); | |
113 ASSERT_BIN (1, >=, 2, >=, 3, 0, 0, 1); | |
114 ASSERT_BIN (-1, <, 2, ==, 3, 0, 0, 1); | |
115 ASSERT_BIN (1, <, 2, !=, 3, 1, 1, 0); | |
116 ASSERT_BIN (1, >, 2, ==, 3, 0, 0, 1); | |
117 ASSERT_BIN (1, >, 2, !=, 3, 1, 1, 0); | |
118 ASSERT_BIN (0, <=, 2, ==, 3, 0, 0, 1); | |
119 ASSERT_BIN (2, <=, 2, !=, 3, 1, 1, 0); | |
120 ASSERT_BIN (1, >=, 2, ==, 3, 0, 0, 1); | |
121 ASSERT_BIN (0, >=, 2, !=, 3, 1, 1, 0); | |
122 ASSERT_BIN (1, ==, 3, <, 2, 0, 1, 0); | |
123 ASSERT_BIN (1, ==, 3, >, 2, 1, 0, 1); | |
124 ASSERT_BIN (1, ==, 3, <=, 2, 0, 1, 0); | |
125 ASSERT_BIN (1, ==, 3, >=, 2, 1, 0, 1); | |
126 ASSERT_BIN (1, !=, 2, <, 3, 0, 1, 0); | |
127 ASSERT_BIN (1, !=, 2, >, 3, 1, 0, 1); | |
128 ASSERT_BIN (1, !=, 2, <=, 3, 0, 1, 0); | |
129 ASSERT_BIN (1, !=, 2, >=, 3, 1, 0, 1); | |
130 ASSERT_BIN (1, ==, 2, ==, 0, 1, 1, 0); | |
131 ASSERT_BIN (1, ==, 2, !=, 0, 0, 0, 1); | |
132 ASSERT_BIN (1, !=, 2, ==, 3, 0, 0, 1); | |
133 ASSERT_BIN (1, !=, 2, !=, 3, 1, 1, 0); | |
134 ASSERT_BIN (0, ==, 2, &, 1, 0, 0, 1); | |
135 ASSERT_BIN (0, !=, 2, &, 1, 1, 1, 0); | |
136 ASSERT_BIN (1, &, 2, ==, 0, 0, 1, 0); | |
137 ASSERT_BIN (1, &, 2, !=, 0, 1, 0, 1); | |
138 ASSERT_BIN (1, &, 2, ^, 3, 3, 3, 1); | |
139 ASSERT_BIN (3, ^, 2, &, 1, 3, 1, 3); | |
140 ASSERT_BIN (3, ^, 2, |, 1, 1, 1, 0); | |
141 ASSERT_BIN (3, |, 2, ^, 1, 3, 2, 3); | |
142 ASSERT_BIN (2, |, 0, &&, 2, 1, 1, 2); | |
143 ASSERT_BIN (2, &&, 0, |, 2, 1, 2, 1); | |
144 ASSERT_BIN (0, &&, 0, ||, 1, 1, 1, 0); | |
145 ASSERT_BIN (1, ||, 0, &&, 0, 1, 0, 1); | |
146 /* Conditional expressions. */ | |
147 ASSERT ((1 || 2 ? 3 : 4) == 3); | |
148 ASSERT ((1 || (2 ? 3 : 4)) == 1); | |
149 /* Assignment expressions. */ | |
150 p = p = p; | |
151 /* Expressions. */ | |
152 p, p = p; | |
153 } |