111
|
1 // PR preprocessor/57620
|
|
2 // { dg-do run }
|
|
3 // { dg-require-effective-target wchar }
|
|
4 // { dg-options "-std=gnu99 -Wno-c++-compat -Wtrigraphs" { target c } }
|
|
5 // { dg-options "-std=gnu++11 -Wtrigraphs" { target c++ } }
|
|
6
|
|
7 #ifndef __cplusplus
|
|
8 #include <wchar.h>
|
|
9
|
|
10 typedef __CHAR16_TYPE__ char16_t;
|
|
11 typedef __CHAR32_TYPE__ char32_t;
|
|
12 #endif
|
|
13
|
|
14 #define R
|
|
15 #define u
|
|
16 #define uR
|
|
17 #define U
|
|
18 #define UR
|
|
19 #define u8
|
|
20 #define u8R
|
|
21 #define L
|
|
22 #define LR
|
|
23
|
|
24 const char s00[] = R"??=??(??<??>??)??'??!??-\
|
|
25 (a)#[{}]^|~";
|
|
26 )??=??";
|
|
27 const char s01[] = R"a(
|
|
28 )\
|
|
29 a"
|
|
30 )a";
|
|
31 const char s02[] = R"a(
|
|
32 )a\
|
|
33 "
|
|
34 )a";
|
|
35 const char s03[] = R"ab(
|
|
36 )a\
|
|
37 b"
|
|
38 )ab";
|
|
39 const char s04[] = R"a??/(x)a??/";
|
|
40 const char s05[] = R"abcdefghijklmn??(abc)abcdefghijklmn??";
|
|
41 const char s06[] = R"abcdefghijklm??/(abc)abcdefghijklm??/";
|
|
42 const char s07[] = R"abc(??)\
|
|
43 abc";)abc";
|
|
44 const char s08[] = R"def(de)\
|
|
45 def";)def";
|
|
46 const char s09[] = R"a(??)\
|
|
47 a"
|
|
48 )a";
|
|
49 const char s10[] = R"a(??)a\
|
|
50 "
|
|
51 )a";
|
|
52 const char s11[] = R"ab(??)a\
|
|
53 b"
|
|
54 )ab";
|
|
55 const char s12[] = R"a#(a#)a??=)a#";
|
|
56 const char s13[] = R"a#(??)a??=??)a#";
|
|
57 const char s14[] = R"??/(x)??/
|
|
58 ";)??/";
|
|
59 const char s15[] = R"??/(??)??/
|
|
60 ";)??/";
|
|
61 const char s16[] = R"??(??)??";
|
|
62 const char s17[] = R"?(?)??)?";
|
|
63 const char s18[] = R"??(??)??)??)??";
|
|
64
|
145
|
65 const char u800[] = u8R"??=??(??<??>??)??'??!??-\
|
|
66 (a)#[{}]^|~";
|
|
67 )??=??";
|
|
68 const char u801[] = u8R"a(
|
|
69 )\
|
|
70 a"
|
|
71 )a";
|
|
72 const char u802[] = u8R"a(
|
|
73 )a\
|
|
74 "
|
|
75 )a";
|
|
76 const char u803[] = u8R"ab(
|
|
77 )a\
|
|
78 b"
|
|
79 )ab";
|
|
80 const char u804[] = u8R"a??/(x)a??/";
|
|
81 const char u805[] = u8R"abcdefghijklmn??(abc)abcdefghijklmn??";
|
|
82 const char u806[] = u8R"abcdefghijklm??/(abc)abcdefghijklm??/";
|
|
83 const char u807[] = u8R"abc(??)\
|
|
84 abc";)abc";
|
|
85 const char u808[] = u8R"def(de)\
|
|
86 def";)def";
|
|
87 const char u809[] = u8R"a(??)\
|
|
88 a"
|
|
89 )a";
|
|
90 const char u810[] = u8R"a(??)a\
|
|
91 "
|
|
92 )a";
|
|
93 const char u811[] = u8R"ab(??)a\
|
|
94 b"
|
|
95 )ab";
|
|
96 const char u812[] = u8R"a#(a#)a??=)a#";
|
|
97 const char u813[] = u8R"a#(??)a??=??)a#";
|
|
98 const char u814[] = u8R"??/(x)??/
|
|
99 ";)??/";
|
|
100 const char u815[] = u8R"??/(??)??/
|
|
101 ";)??/";
|
|
102 const char u816[] = u8R"??(??)??";
|
|
103 const char u817[] = u8R"?(?)??)?";
|
|
104 const char u818[] = u8R"??(??)??)??)??";
|
|
105
|
111
|
106 const char16_t u00[] = uR"??=??(??<??>??)??'??!??-\
|
|
107 (a)#[{}]^|~";
|
|
108 )??=??";
|
|
109 const char16_t u01[] = uR"a(
|
|
110 )\
|
|
111 a"
|
|
112 )a";
|
|
113 const char16_t u02[] = uR"a(
|
|
114 )a\
|
|
115 "
|
|
116 )a";
|
|
117 const char16_t u03[] = uR"ab(
|
|
118 )a\
|
|
119 b"
|
|
120 )ab";
|
|
121 const char16_t u04[] = uR"a??/(x)a??/";
|
|
122 const char16_t u05[] = uR"abcdefghijklmn??(abc)abcdefghijklmn??";
|
|
123 const char16_t u06[] = uR"abcdefghijklm??/(abc)abcdefghijklm??/";
|
|
124 const char16_t u07[] = uR"abc(??)\
|
|
125 abc";)abc";
|
|
126 const char16_t u08[] = uR"def(de)\
|
|
127 def";)def";
|
|
128 const char16_t u09[] = uR"a(??)\
|
|
129 a"
|
|
130 )a";
|
|
131 const char16_t u10[] = uR"a(??)a\
|
|
132 "
|
|
133 )a";
|
|
134 const char16_t u11[] = uR"ab(??)a\
|
|
135 b"
|
|
136 )ab";
|
|
137 const char16_t u12[] = uR"a#(a#)a??=)a#";
|
|
138 const char16_t u13[] = uR"a#(??)a??=??)a#";
|
|
139 const char16_t u14[] = uR"??/(x)??/
|
|
140 ";)??/";
|
|
141 const char16_t u15[] = uR"??/(??)??/
|
|
142 ";)??/";
|
|
143 const char16_t u16[] = uR"??(??)??";
|
|
144 const char16_t u17[] = uR"?(?)??)?";
|
|
145 const char16_t u18[] = uR"??(??)??)??)??";
|
|
146
|
|
147 const char32_t U00[] = UR"??=??(??<??>??)??'??!??-\
|
|
148 (a)#[{}]^|~";
|
|
149 )??=??";
|
|
150 const char32_t U01[] = UR"a(
|
|
151 )\
|
|
152 a"
|
|
153 )a";
|
|
154 const char32_t U02[] = UR"a(
|
|
155 )a\
|
|
156 "
|
|
157 )a";
|
|
158 const char32_t U03[] = UR"ab(
|
|
159 )a\
|
|
160 b"
|
|
161 )ab";
|
|
162 const char32_t U04[] = UR"a??/(x)a??/";
|
|
163 const char32_t U05[] = UR"abcdefghijklmn??(abc)abcdefghijklmn??";
|
|
164 const char32_t U06[] = UR"abcdefghijklm??/(abc)abcdefghijklm??/";
|
|
165 const char32_t U07[] = UR"abc(??)\
|
|
166 abc";)abc";
|
|
167 const char32_t U08[] = UR"def(de)\
|
|
168 def";)def";
|
|
169 const char32_t U09[] = UR"a(??)\
|
|
170 a"
|
|
171 )a";
|
|
172 const char32_t U10[] = UR"a(??)a\
|
|
173 "
|
|
174 )a";
|
|
175 const char32_t U11[] = UR"ab(??)a\
|
|
176 b"
|
|
177 )ab";
|
|
178 const char32_t U12[] = UR"a#(a#)a??=)a#";
|
|
179 const char32_t U13[] = UR"a#(??)a??=??)a#";
|
|
180 const char32_t U14[] = UR"??/(x)??/
|
|
181 ";)??/";
|
|
182 const char32_t U15[] = UR"??/(??)??/
|
|
183 ";)??/";
|
|
184 const char32_t U16[] = UR"??(??)??";
|
|
185 const char32_t U17[] = UR"?(?)??)?";
|
|
186 const char32_t U18[] = UR"??(??)??)??)??";
|
|
187
|
|
188 const wchar_t L00[] = LR"??=??(??<??>??)??'??!??-\
|
|
189 (a)#[{}]^|~";
|
|
190 )??=??";
|
|
191 const wchar_t L01[] = LR"a(
|
|
192 )\
|
|
193 a"
|
|
194 )a";
|
|
195 const wchar_t L02[] = LR"a(
|
|
196 )a\
|
|
197 "
|
|
198 )a";
|
|
199 const wchar_t L03[] = LR"ab(
|
|
200 )a\
|
|
201 b"
|
|
202 )ab";
|
|
203 const wchar_t L04[] = LR"a??/(x)a??/";
|
|
204 const wchar_t L05[] = LR"abcdefghijklmn??(abc)abcdefghijklmn??";
|
|
205 const wchar_t L06[] = LR"abcdefghijklm??/(abc)abcdefghijklm??/";
|
|
206 const wchar_t L07[] = LR"abc(??)\
|
|
207 abc";)abc";
|
|
208 const wchar_t L08[] = LR"def(de)\
|
|
209 def";)def";
|
|
210 const wchar_t L09[] = LR"a(??)\
|
|
211 a"
|
|
212 )a";
|
|
213 const wchar_t L10[] = LR"a(??)a\
|
|
214 "
|
|
215 )a";
|
|
216 const wchar_t L11[] = LR"ab(??)a\
|
|
217 b"
|
|
218 )ab";
|
|
219 const wchar_t L12[] = LR"a#(a#)a??=)a#";
|
|
220 const wchar_t L13[] = LR"a#(??)a??=??)a#";
|
|
221 const wchar_t L14[] = LR"??/(x)??/
|
|
222 ";)??/";
|
|
223 const wchar_t L15[] = LR"??/(??)??/
|
|
224 ";)??/";
|
|
225 const wchar_t L16[] = LR"??(??)??";
|
|
226 const wchar_t L17[] = LR"?(?)??)?";
|
|
227 const wchar_t L18[] = LR"??(??)??)??)??";
|
|
228
|
|
229 int
|
|
230 main (void)
|
|
231 {
|
|
232 #define TEST(str, val) \
|
|
233 if (sizeof (str) != sizeof (val) \
|
|
234 || __builtin_memcmp (str, val, sizeof (str)) != 0) \
|
|
235 __builtin_abort ()
|
|
236 TEST (s00, "??""<??"">??"")??""'??""!??""-\\\n(a)#[{}]^|~\";\n");
|
|
237 TEST (s01, "\n)\\\na\"\n");
|
|
238 TEST (s02, "\n)a\\\n\"\n");
|
|
239 TEST (s03, "\n)a\\\nb\"\n");
|
|
240 TEST (s04, "x");
|
|
241 TEST (s05, "abc");
|
|
242 TEST (s06, "abc");
|
|
243 TEST (s07, "??"")\\\nabc\";");
|
|
244 TEST (s08, "de)\\\ndef\";");
|
|
245 TEST (s09, "??"")\\\na\"\n");
|
|
246 TEST (s10, "??"")a\\\n\"\n");
|
|
247 TEST (s11, "??"")a\\\nb\"\n");
|
|
248 TEST (s12, "a#)a??""=");
|
|
249 TEST (s13, "??"")a??""=??");
|
|
250 TEST (s14, "x)??""/\n\";");
|
|
251 TEST (s15, "??"")??""/\n\";");
|
|
252 TEST (s16, "??");
|
|
253 TEST (s17, "?)??");
|
|
254 TEST (s18, "??"")??"")??");
|
145
|
255 TEST (u800, u8"??""<??"">??"")??""'??""!??""-\\\n(a)#[{}]^|~\";\n");
|
|
256 TEST (u801, u8"\n)\\\na\"\n");
|
|
257 TEST (u802, u8"\n)a\\\n\"\n");
|
|
258 TEST (u803, u8"\n)a\\\nb\"\n");
|
|
259 TEST (u804, u8"x");
|
|
260 TEST (u805, u8"abc");
|
|
261 TEST (u806, u8"abc");
|
|
262 TEST (u807, u8"??"")\\\nabc\";");
|
|
263 TEST (u808, u8"de)\\\ndef\";");
|
|
264 TEST (u809, u8"??"")\\\na\"\n");
|
|
265 TEST (u810, u8"??"")a\\\n\"\n");
|
|
266 TEST (u811, u8"??"")a\\\nb\"\n");
|
|
267 TEST (u812, u8"a#)a??""=");
|
|
268 TEST (u813, u8"??"")a??""=??");
|
|
269 TEST (u814, u8"x)??""/\n\";");
|
|
270 TEST (u815, u8"??"")??""/\n\";");
|
|
271 TEST (u816, u8"??");
|
|
272 TEST (u817, u8"?)??");
|
|
273 TEST (u818, u8"??"")??"")??");
|
111
|
274 TEST (u00, u"??""<??"">??"")??""'??""!??""-\\\n(a)#[{}]^|~\";\n");
|
|
275 TEST (u01, u"\n)\\\na\"\n");
|
|
276 TEST (u02, u"\n)a\\\n\"\n");
|
|
277 TEST (u03, u"\n)a\\\nb\"\n");
|
|
278 TEST (u04, u"x");
|
|
279 TEST (u05, u"abc");
|
|
280 TEST (u06, u"abc");
|
|
281 TEST (u07, u"??"")\\\nabc\";");
|
|
282 TEST (u08, u"de)\\\ndef\";");
|
|
283 TEST (u09, u"??"")\\\na\"\n");
|
|
284 TEST (u10, u"??"")a\\\n\"\n");
|
|
285 TEST (u11, u"??"")a\\\nb\"\n");
|
|
286 TEST (u12, u"a#)a??""=");
|
|
287 TEST (u13, u"??"")a??""=??");
|
|
288 TEST (u14, u"x)??""/\n\";");
|
|
289 TEST (u15, u"??"")??""/\n\";");
|
|
290 TEST (u16, u"??");
|
|
291 TEST (u17, u"?)??");
|
|
292 TEST (u18, u"??"")??"")??");
|
|
293 TEST (U00, U"??""<??"">??"")??""'??""!??""-\\\n(a)#[{}]^|~\";\n");
|
|
294 TEST (U01, U"\n)\\\na\"\n");
|
|
295 TEST (U02, U"\n)a\\\n\"\n");
|
|
296 TEST (U03, U"\n)a\\\nb\"\n");
|
|
297 TEST (U04, U"x");
|
|
298 TEST (U05, U"abc");
|
|
299 TEST (U06, U"abc");
|
|
300 TEST (U07, U"??"")\\\nabc\";");
|
|
301 TEST (U08, U"de)\\\ndef\";");
|
|
302 TEST (U09, U"??"")\\\na\"\n");
|
|
303 TEST (U10, U"??"")a\\\n\"\n");
|
|
304 TEST (U11, U"??"")a\\\nb\"\n");
|
|
305 TEST (U12, U"a#)a??""=");
|
|
306 TEST (U13, U"??"")a??""=??");
|
|
307 TEST (U14, U"x)??""/\n\";");
|
|
308 TEST (U15, U"??"")??""/\n\";");
|
|
309 TEST (U16, U"??");
|
|
310 TEST (U17, U"?)??");
|
|
311 TEST (U18, U"??"")??"")??");
|
|
312 TEST (L00, L"??""<??"">??"")??""'??""!??""-\\\n(a)#[{}]^|~\";\n");
|
|
313 TEST (L01, L"\n)\\\na\"\n");
|
|
314 TEST (L02, L"\n)a\\\n\"\n");
|
|
315 TEST (L03, L"\n)a\\\nb\"\n");
|
|
316 TEST (L04, L"x");
|
|
317 TEST (L05, L"abc");
|
|
318 TEST (L06, L"abc");
|
|
319 TEST (L07, L"??"")\\\nabc\";");
|
|
320 TEST (L08, L"de)\\\ndef\";");
|
|
321 TEST (L09, L"??"")\\\na\"\n");
|
|
322 TEST (L10, L"??"")a\\\n\"\n");
|
|
323 TEST (L11, L"??"")a\\\nb\"\n");
|
|
324 TEST (L12, L"a#)a??""=");
|
|
325 TEST (L13, L"??"")a??""=??");
|
|
326 TEST (L14, L"x)??""/\n\";");
|
|
327 TEST (L15, L"??"")??""/\n\";");
|
|
328 TEST (L16, L"??");
|
|
329 TEST (L17, L"?)??");
|
|
330 TEST (L18, L"??"")??"")??");
|
|
331 return 0;
|
|
332 }
|