llvm.org GIT mirror llvm / 86c04a0
[MS demangler] Use a slightly shorter unmangling for mangled strings. Before: const wchar_t * {L"%"} Now: L"%" See also PR39593. Differential Revision: https://reviews.llvm.org/D54294 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@346544 91177308-0d34-0410-b5e6-96231b3b80d8 Nico Weber 10 months ago
3 changed file(s) with 376 addition(s) and 377 deletion(s). Raw diff Collapse all Expand all
160160 OutputFlags Flags) const {
161161 switch (Char) {
162162 case CharKind::Wchar:
163 OS << "const wchar_t * {L\"";
163 OS << "L\"";
164164 break;
165165 case CharKind::Char:
166 OS << "const char * {\"";
166 OS << "\"";
167167 break;
168168 case CharKind::Char16:
169 OS << "const char16_t * {u\"";
169 OS << "u\"";
170170 break;
171171 case CharKind::Char32:
172 OS << "const char32_t * {U\"";
172 OS << "U\"";
173173 break;
174174 }
175175 OS << DecodedString << "\"";
176176 if (IsTruncated)
177177 OS << "...";
178 OS << "}";
179178 }
180179
181180 void IntegerLiteralNode::output(OutputStream &OS, OutputFlags Flags) const {
152152 ; CHECK: `struct S & __cdecl getS(void)'::`2'::`local static guard'{2}
153153
154154 ??_C@_02PCEFGMJL@hi?$AA@
155 ; CHECK: const char * {"hi"}
155 ; CHECK: "hi"
156156
157157 ??_DDiamond@@QEAAXXZ
158158 ; CHECK: void __cdecl Diamond::`vbase dtor'(void)
258258 ??_C@_01KHDNNMEB@?$AB?$AA@
259259 ??_C@_01LOCGONAA@?$AA?$AA@
260260
261 ; CHECK: const char * {"\xFF"}
262 ; CHECK: const char * {"\xFE"}
263 ; CHECK: const char * {"\xFD"}
264 ; CHECK: const char * {"\xFC"}
265 ; CHECK: const char * {"\xFB"}
266 ; CHECK: const char * {"\xFA"}
267 ; CHECK: const char * {"\xF9"}
268 ; CHECK: const char * {"\xF8"}
269 ; CHECK: const char * {"\xF7"}
270 ; CHECK: const char * {"\xF6"}
271 ; CHECK: const char * {"\xF5"}
272 ; CHECK: const char * {"\xF4"}
273 ; CHECK: const char * {"\xF3"}
274 ; CHECK: const char * {"\xF2"}
275 ; CHECK: const char * {"\xF1"}
276 ; CHECK: const char * {"\xF0"}
277 ; CHECK: const char * {"\xEF"}
278 ; CHECK: const char * {"\xEE"}
279 ; CHECK: const char * {"\xED"}
280 ; CHECK: const char * {"\xEC"}
281 ; CHECK: const char * {"\xEB"}
282 ; CHECK: const char * {"\xEA"}
283 ; CHECK: const char * {"\xE9"}
284 ; CHECK: const char * {"\xE8"}
285 ; CHECK: const char * {"\xE7"}
286 ; CHECK: const char * {"\xE6"}
287 ; CHECK: const char * {"\xE5"}
288 ; CHECK: const char * {"\xE4"}
289 ; CHECK: const char * {"\xE3"}
290 ; CHECK: const char * {"\xE2"}
291 ; CHECK: const char * {"\xE1"}
292 ; CHECK: const char * {"\xE0"}
293 ; CHECK: const char * {"\xDF"}
294 ; CHECK: const char * {"\xDE"}
295 ; CHECK: const char * {"\xDD"}
296 ; CHECK: const char * {"\xDC"}
297 ; CHECK: const char * {"\xDB"}
298 ; CHECK: const char * {"\xDA"}
299 ; CHECK: const char * {"\xD9"}
300 ; CHECK: const char * {"\xD8"}
301 ; CHECK: const char * {"\xD7"}
302 ; CHECK: const char * {"\xD6"}
303 ; CHECK: const char * {"\xD5"}
304 ; CHECK: const char * {"\xD4"}
305 ; CHECK: const char * {"\xD3"}
306 ; CHECK: const char * {"\xD2"}
307 ; CHECK: const char * {"\xD1"}
308 ; CHECK: const char * {"\xD0"}
309 ; CHECK: const char * {"\xCF"}
310 ; CHECK: const char * {"\xCE"}
311 ; CHECK: const char * {"\xCD"}
312 ; CHECK: const char * {"\xCC"}
313 ; CHECK: const char * {"\xCB"}
314 ; CHECK: const char * {"\xCA"}
315 ; CHECK: const char * {"\xC9"}
316 ; CHECK: const char * {"\xC8"}
317 ; CHECK: const char * {"\xC7"}
318 ; CHECK: const char * {"\xC6"}
319 ; CHECK: const char * {"\xC5"}
320 ; CHECK: const char * {"\xC4"}
321 ; CHECK: const char * {"\xC3"}
322 ; CHECK: const char * {"\xC2"}
323 ; CHECK: const char * {"\xC1"}
324 ; CHECK: const char * {"\xC0"}
325 ; CHECK: const char * {"\xBF"}
326 ; CHECK: const char * {"\xBE"}
327 ; CHECK: const char * {"\xBD"}
328 ; CHECK: const char * {"\xBC"}
329 ; CHECK: const char * {"\xBB"}
330 ; CHECK: const char * {"\xBA"}
331 ; CHECK: const char * {"\xB9"}
332 ; CHECK: const char * {"\xB8"}
333 ; CHECK: const char * {"\xB7"}
334 ; CHECK: const char * {"\xB6"}
335 ; CHECK: const char * {"\xB5"}
336 ; CHECK: const char * {"\xB4"}
337 ; CHECK: const char * {"\xB3"}
338 ; CHECK: const char * {"\xB2"}
339 ; CHECK: const char * {"\xB1"}
340 ; CHECK: const char * {"\xB0"}
341 ; CHECK: const char * {"\xAF"}
342 ; CHECK: const char * {"\xAE"}
343 ; CHECK: const char * {"\xAD"}
344 ; CHECK: const char * {"\xAC"}
345 ; CHECK: const char * {"\xAB"}
346 ; CHECK: const char * {"\xAA"}
347 ; CHECK: const char * {"\xA9"}
348 ; CHECK: const char * {"\xA8"}
349 ; CHECK: const char * {"\xA7"}
350 ; CHECK: const char * {"\xA6"}
351 ; CHECK: const char * {"\xA5"}
352 ; CHECK: const char * {"\xA4"}
353 ; CHECK: const char * {"\xA3"}
354 ; CHECK: const char * {"\xA2"}
355 ; CHECK: const char * {"\xA1"}
356 ; CHECK: const char * {"\xA0"}
357 ; CHECK: const char * {"\x9F"}
358 ; CHECK: const char * {"\x9E"}
359 ; CHECK: const char * {"\x9D"}
360 ; CHECK: const char * {"\x9C"}
361 ; CHECK: const char * {"\x9B"}
362 ; CHECK: const char * {"\x9A"}
363 ; CHECK: const char * {"\x99"}
364 ; CHECK: const char * {"\x98"}
365 ; CHECK: const char * {"\x97"}
366 ; CHECK: const char * {"\x96"}
367 ; CHECK: const char * {"\x95"}
368 ; CHECK: const char * {"\x94"}
369 ; CHECK: const char * {"\x93"}
370 ; CHECK: const char * {"\x92"}
371 ; CHECK: const char * {"\x91"}
372 ; CHECK: const char * {"\x90"}
373 ; CHECK: const char * {"\x8F"}
374 ; CHECK: const char * {"\x8E"}
375 ; CHECK: const char * {"\x8D"}
376 ; CHECK: const char * {"\x8C"}
377 ; CHECK: const char * {"\x8B"}
378 ; CHECK: const char * {"\x8A"}
379 ; CHECK: const char * {"\x89"}
380 ; CHECK: const char * {"\x88"}
381 ; CHECK: const char * {"\x87"}
382 ; CHECK: const char * {"\x86"}
383 ; CHECK: const char * {"\x85"}
384 ; CHECK: const char * {"\x84"}
385 ; CHECK: const char * {"\x83"}
386 ; CHECK: const char * {"\x82"}
387 ; CHECK: const char * {"\x81"}
388 ; CHECK: const char * {"\x80"}
389 ; CHECK: const char * {"\x7F"}
390 ; CHECK: const char * {"~"}
391 ; CHECK: const char * {"}"}
392 ; CHECK: const char * {"|"}
393 ; CHECK: const char * {"{"}
394 ; CHECK: const char * {"z"}
395 ; CHECK: const char * {"y"}
396 ; CHECK: const char * {"x"}
397 ; CHECK: const char * {"w"}
398 ; CHECK: const char * {"v"}
399 ; CHECK: const char * {"u"}
400 ; CHECK: const char * {"t"}
401 ; CHECK: const char * {"s"}
402 ; CHECK: const char * {"r"}
403 ; CHECK: const char * {"q"}
404 ; CHECK: const char * {"p"}
405 ; CHECK: const char * {"o"}
406 ; CHECK: const char * {"n"}
407 ; CHECK: const char * {"m"}
408 ; CHECK: const char * {"l"}
409 ; CHECK: const char * {"k"}
410 ; CHECK: const char * {"j"}
411 ; CHECK: const char * {"i"}
412 ; CHECK: const char * {"h"}
413 ; CHECK: const char * {"g"}
414 ; CHECK: const char * {"f"}
415 ; CHECK: const char * {"e"}
416 ; CHECK: const char * {"d"}
417 ; CHECK: const char * {"c"}
418 ; CHECK: const char * {"b"}
419 ; CHECK: const char * {"a"}
420 ; CHECK: const char * {"`"}
421 ; CHECK: const char * {"_"}
422 ; CHECK: const char * {"^"}
423 ; CHECK: const char * {"]"}
424 ; CHECK: const char * {"\\"}
425 ; CHECK: const char * {"["}
426 ; CHECK: const char * {"Z"}
427 ; CHECK: const char * {"Y"}
428 ; CHECK: const char * {"X"}
429 ; CHECK: const char * {"W"}
430 ; CHECK: const char * {"V"}
431 ; CHECK: const char * {"U"}
432 ; CHECK: const char * {"T"}
433 ; CHECK: const char * {"S"}
434 ; CHECK: const char * {"R"}
435 ; CHECK: const char * {"Q"}
436 ; CHECK: const char * {"P"}
437 ; CHECK: const char * {"O"}
438 ; CHECK: const char * {"N"}
439 ; CHECK: const char * {"M"}
440 ; CHECK: const char * {"L"}
441 ; CHECK: const char * {"K"}
442 ; CHECK: const char * {"J"}
443 ; CHECK: const char * {"I"}
444 ; CHECK: const char * {"H"}
445 ; CHECK: const char * {"G"}
446 ; CHECK: const char * {"F"}
447 ; CHECK: const char * {"E"}
448 ; CHECK: const char * {"D"}
449 ; CHECK: const char * {"C"}
450 ; CHECK: const char * {"B"}
451 ; CHECK: const char * {"A"}
452 ; CHECK: const char * {"@"}
453 ; CHECK: const char * {"?"}
454 ; CHECK: const char * {">"}
455 ; CHECK: const char * {"="}
456 ; CHECK: const char * {"<"}
457 ; CHECK: const char * {";"}
458 ; CHECK: const char * {":"}
459 ; CHECK: const char * {"9"}
460 ; CHECK: const char * {"8"}
461 ; CHECK: const char * {"7"}
462 ; CHECK: const char * {"6"}
463 ; CHECK: const char * {"5"}
464 ; CHECK: const char * {"4"}
465 ; CHECK: const char * {"3"}
466 ; CHECK: const char * {"2"}
467 ; CHECK: const char * {"1"}
468 ; CHECK: const char * {"0"}
469 ; CHECK: const char * {"/"}
470 ; CHECK: const char * {"."}
471 ; CHECK: const char * {"-"}
472 ; CHECK: const char * {","}
473 ; CHECK: const char * {"+"}
474 ; CHECK: const char * {"*"}
475 ; CHECK: const char * {")"}
476 ; CHECK: const char * {"("}
477 ; CHECK: const char * {"\'"}
478 ; CHECK: const char * {"&"}
479 ; CHECK: const char * {"%"}
480 ; CHECK: const char * {"$"}
481 ; CHECK: const char * {"#"}
482 ; CHECK: const char * {"\""}
483 ; CHECK: const char * {"!"}
484 ; CHECK: const char * {" "}
485 ; CHECK: const char * {"\x1F"}
486 ; CHECK: const char * {"\x1E"}
487 ; CHECK: const char * {"\x1D"}
488 ; CHECK: const char * {"\x1C"}
489 ; CHECK: const char * {"\x1B"}
490 ; CHECK: const char * {"\x1A"}
491 ; CHECK: const char * {"\x19"}
492 ; CHECK: const char * {"\x18"}
493 ; CHECK: const char * {"\x17"}
494 ; CHECK: const char * {"\x16"}
495 ; CHECK: const char * {"\x15"}
496 ; CHECK: const char * {"\x14"}
497 ; CHECK: const char * {"\x13"}
498 ; CHECK: const char * {"\x12"}
499 ; CHECK: const char * {"\x11"}
500 ; CHECK: const char * {"\x10"}
501 ; CHECK: const char * {"\x0F"}
502 ; CHECK: const char * {"\x0E"}
503 ; CHECK: const char * {"\r"}
504 ; CHECK: const char * {"\f"}
505 ; CHECK: const char * {"\v"}
506 ; CHECK: const char * {"\n"}
507 ; CHECK: const char * {"\t"}
508 ; CHECK: const char * {"\b"}
509 ; CHECK: const char * {"\a"}
510 ; CHECK: const char * {"\x06"}
511 ; CHECK: const char * {"\x05"}
512 ; CHECK: const char * {"\x04"}
513 ; CHECK: const char * {"\x03"}
514 ; CHECK: const char * {"\x02"}
515 ; CHECK: const char * {"\x01"}
261 ; CHECK: "\xFF"
262 ; CHECK: "\xFE"
263 ; CHECK: "\xFD"
264 ; CHECK: "\xFC"
265 ; CHECK: "\xFB"
266 ; CHECK: "\xFA"
267 ; CHECK: "\xF9"
268 ; CHECK: "\xF8"
269 ; CHECK: "\xF7"
270 ; CHECK: "\xF6"
271 ; CHECK: "\xF5"
272 ; CHECK: "\xF4"
273 ; CHECK: "\xF3"
274 ; CHECK: "\xF2"
275 ; CHECK: "\xF1"
276 ; CHECK: "\xF0"
277 ; CHECK: "\xEF"
278 ; CHECK: "\xEE"
279 ; CHECK: "\xED"
280 ; CHECK: "\xEC"
281 ; CHECK: "\xEB"
282 ; CHECK: "\xEA"
283 ; CHECK: "\xE9"
284 ; CHECK: "\xE8"
285 ; CHECK: "\xE7"
286 ; CHECK: "\xE6"
287 ; CHECK: "\xE5"
288 ; CHECK: "\xE4"
289 ; CHECK: "\xE3"
290 ; CHECK: "\xE2"
291 ; CHECK: "\xE1"
292 ; CHECK: "\xE0"
293 ; CHECK: "\xDF"
294 ; CHECK: "\xDE"
295 ; CHECK: "\xDD"
296 ; CHECK: "\xDC"
297 ; CHECK: "\xDB"
298 ; CHECK: "\xDA"
299 ; CHECK: "\xD9"
300 ; CHECK: "\xD8"
301 ; CHECK: "\xD7"
302 ; CHECK: "\xD6"
303 ; CHECK: "\xD5"
304 ; CHECK: "\xD4"
305 ; CHECK: "\xD3"
306 ; CHECK: "\xD2"
307 ; CHECK: "\xD1"
308 ; CHECK: "\xD0"
309 ; CHECK: "\xCF"
310 ; CHECK: "\xCE"
311 ; CHECK: "\xCD"
312 ; CHECK: "\xCC"
313 ; CHECK: "\xCB"
314 ; CHECK: "\xCA"
315 ; CHECK: "\xC9"
316 ; CHECK: "\xC8"
317 ; CHECK: "\xC7"
318 ; CHECK: "\xC6"
319 ; CHECK: "\xC5"
320 ; CHECK: "\xC4"
321 ; CHECK: "\xC3"
322 ; CHECK: "\xC2"
323 ; CHECK: "\xC1"
324 ; CHECK: "\xC0"
325 ; CHECK: "\xBF"
326 ; CHECK: "\xBE"
327 ; CHECK: "\xBD"
328 ; CHECK: "\xBC"
329 ; CHECK: "\xBB"
330 ; CHECK: "\xBA"
331 ; CHECK: "\xB9"
332 ; CHECK: "\xB8"
333 ; CHECK: "\xB7"
334 ; CHECK: "\xB6"
335 ; CHECK: "\xB5"
336 ; CHECK: "\xB4"
337 ; CHECK: "\xB3"
338 ; CHECK: "\xB2"
339 ; CHECK: "\xB1"
340 ; CHECK: "\xB0"
341 ; CHECK: "\xAF"
342 ; CHECK: "\xAE"
343 ; CHECK: "\xAD"
344 ; CHECK: "\xAC"
345 ; CHECK: "\xAB"
346 ; CHECK: "\xAA"
347 ; CHECK: "\xA9"
348 ; CHECK: "\xA8"
349 ; CHECK: "\xA7"
350 ; CHECK: "\xA6"
351 ; CHECK: "\xA5"
352 ; CHECK: "\xA4"
353 ; CHECK: "\xA3"
354 ; CHECK: "\xA2"
355 ; CHECK: "\xA1"
356 ; CHECK: "\xA0"
357 ; CHECK: "\x9F"
358 ; CHECK: "\x9E"
359 ; CHECK: "\x9D"
360 ; CHECK: "\x9C"
361 ; CHECK: "\x9B"
362 ; CHECK: "\x9A"
363 ; CHECK: "\x99"
364 ; CHECK: "\x98"
365 ; CHECK: "\x97"
366 ; CHECK: "\x96"
367 ; CHECK: "\x95"
368 ; CHECK: "\x94"
369 ; CHECK: "\x93"
370 ; CHECK: "\x92"
371 ; CHECK: "\x91"
372 ; CHECK: "\x90"
373 ; CHECK: "\x8F"
374 ; CHECK: "\x8E"
375 ; CHECK: "\x8D"
376 ; CHECK: "\x8C"
377 ; CHECK: "\x8B"
378 ; CHECK: "\x8A"
379 ; CHECK: "\x89"
380 ; CHECK: "\x88"
381 ; CHECK: "\x87"
382 ; CHECK: "\x86"
383 ; CHECK: "\x85"
384 ; CHECK: "\x84"
385 ; CHECK: "\x83"
386 ; CHECK: "\x82"
387 ; CHECK: "\x81"
388 ; CHECK: "\x80"
389 ; CHECK: "\x7F"
390 ; CHECK: "~"
391 ; CHECK: "}"
392 ; CHECK: "|"
393 ; CHECK: "{"
394 ; CHECK: "z"
395 ; CHECK: "y"
396 ; CHECK: "x"
397 ; CHECK: "w"
398 ; CHECK: "v"
399 ; CHECK: "u"
400 ; CHECK: "t"
401 ; CHECK: "s"
402 ; CHECK: "r"
403 ; CHECK: "q"
404 ; CHECK: "p"
405 ; CHECK: "o"
406 ; CHECK: "n"
407 ; CHECK: "m"
408 ; CHECK: "l"
409 ; CHECK: "k"
410 ; CHECK: "j"
411 ; CHECK: "i"
412 ; CHECK: "h"
413 ; CHECK: "g"
414 ; CHECK: "f"
415 ; CHECK: "e"
416 ; CHECK: "d"
417 ; CHECK: "c"
418 ; CHECK: "b"
419 ; CHECK: "a"
420 ; CHECK: "`"
421 ; CHECK: "_"
422 ; CHECK: "^"
423 ; CHECK: "]"
424 ; CHECK: "\\"
425 ; CHECK: "["
426 ; CHECK: "Z"
427 ; CHECK: "Y"
428 ; CHECK: "X"
429 ; CHECK: "W"
430 ; CHECK: "V"
431 ; CHECK: "U"
432 ; CHECK: "T"
433 ; CHECK: "S"
434 ; CHECK: "R"
435 ; CHECK: "Q"
436 ; CHECK: "P"
437 ; CHECK: "O"
438 ; CHECK: "N"
439 ; CHECK: "M"
440 ; CHECK: "L"
441 ; CHECK: "K"
442 ; CHECK: "J"
443 ; CHECK: "I"
444 ; CHECK: "H"
445 ; CHECK: "G"
446 ; CHECK: "F"
447 ; CHECK: "E"
448 ; CHECK: "D"
449 ; CHECK: "C"
450 ; CHECK: "B"
451 ; CHECK: "A"
452 ; CHECK: "@"
453 ; CHECK: "?"
454 ; CHECK: ">"
455 ; CHECK: "="
456 ; CHECK: "<"
457 ; CHECK: ";"
458 ; CHECK: ":"
459 ; CHECK: "9"
460 ; CHECK: "8"
461 ; CHECK: "7"
462 ; CHECK: "6"
463 ; CHECK: "5"
464 ; CHECK: "4"
465 ; CHECK: "3"
466 ; CHECK: "2"
467 ; CHECK: "1"
468 ; CHECK: "0"
469 ; CHECK: "/"
470 ; CHECK: "."
471 ; CHECK: "-"
472 ; CHECK: ","
473 ; CHECK: "+"
474 ; CHECK: "*"
475 ; CHECK: ")"
476 ; CHECK: "("
477 ; CHECK: "\'"
478 ; CHECK: "&"
479 ; CHECK: "%"
480 ; CHECK: "$"
481 ; CHECK: "#"
482 ; CHECK: "\""
483 ; CHECK: "!"
484 ; CHECK: " "
485 ; CHECK: "\x1F"
486 ; CHECK: "\x1E"
487 ; CHECK: "\x1D"
488 ; CHECK: "\x1C"
489 ; CHECK: "\x1B"
490 ; CHECK: "\x1A"
491 ; CHECK: "\x19"
492 ; CHECK: "\x18"
493 ; CHECK: "\x17"
494 ; CHECK: "\x16"
495 ; CHECK: "\x15"
496 ; CHECK: "\x14"
497 ; CHECK: "\x13"
498 ; CHECK: "\x12"
499 ; CHECK: "\x11"
500 ; CHECK: "\x10"
501 ; CHECK: "\x0F"
502 ; CHECK: "\x0E"
503 ; CHECK: "\r"
504 ; CHECK: "\f"
505 ; CHECK: "\v"
506 ; CHECK: "\n"
507 ; CHECK: "\t"
508 ; CHECK: "\b"
509 ; CHECK: "\a"
510 ; CHECK: "\x06"
511 ; CHECK: "\x05"
512 ; CHECK: "\x04"
513 ; CHECK: "\x03"
514 ; CHECK: "\x02"
515 ; CHECK: "\x01"
516516
517517 ; The mangling doesn't distinguish between char and char16 types, so even though
518 ; this was originally written as a char * with one embedded null, it mangles
519 ; identically to a char16_t * that is empty. So when demangling, we choose the
518 ; this was originally written as a char[] with one embedded null, it mangles
519 ; identically to a char16_t[] that is empty. So when demangling, we choose the
520520 ; "smartest" one, which happened to be wrong, but it's still a "better"
521521 ; demangling.
522 ; CHECK: const char16_t * {u""}
522 ; CHECK: u""
523523
524524
525525 ??_C@_13KDLDGPGJ@?$AA?7?$AA?$AA@
621621 ??_C@_13EHOOFIKC@?$AA?$HN?$AA?$AA@
622622 ??_C@_13FFFLPHEM@?$AA?$HO?$AA?$AA@
623623
624 ; CHECK: const wchar_t * {L"\t"}
625 ; CHECK: const wchar_t * {L"\n"}
626 ; CHECK: const wchar_t * {L"\v"}
627 ; CHECK: const wchar_t * {L" "}
628 ; CHECK: const wchar_t * {L"!"}
629 ; CHECK: const wchar_t * {L"\""}
630 ; CHECK: const wchar_t * {L"#"}
631 ; CHECK: const wchar_t * {L"$"}
632 ; CHECK: const wchar_t * {L"%"}
633 ; CHECK: const wchar_t * {L"&"}
634 ; CHECK: const wchar_t * {L"\'"}
635 ; CHECK: const wchar_t * {L"("}
636 ; CHECK: const wchar_t * {L")"}
637 ; CHECK: const wchar_t * {L"*"}
638 ; CHECK: const wchar_t * {L"+"}
639 ; CHECK: const wchar_t * {L","}
640 ; CHECK: const wchar_t * {L"-"}
641 ; CHECK: const wchar_t * {L"."}
642 ; CHECK: const wchar_t * {L"/"}
643 ; CHECK: const wchar_t * {L"0"}
644 ; CHECK: const wchar_t * {L"1"}
645 ; CHECK: const wchar_t * {L"2"}
646 ; CHECK: const wchar_t * {L"3"}
647 ; CHECK: const wchar_t * {L"4"}
648 ; CHECK: const wchar_t * {L"5"}
649 ; CHECK: const wchar_t * {L"6"}
650 ; CHECK: const wchar_t * {L"7"}
651 ; CHECK: const wchar_t * {L"8"}
652 ; CHECK: const wchar_t * {L"9"}
653 ; CHECK: const wchar_t * {L":"}
654 ; CHECK: const wchar_t * {L";"}
655 ; CHECK: const wchar_t * {L"<"}
656 ; CHECK: const wchar_t * {L"="}
657 ; CHECK: const wchar_t * {L">"}
658 ; CHECK: const wchar_t * {L"?"}
659 ; CHECK: const wchar_t * {L"@"}
660 ; CHECK: const wchar_t * {L"A"}
661 ; CHECK: const wchar_t * {L"B"}
662 ; CHECK: const wchar_t * {L"C"}
663 ; CHECK: const wchar_t * {L"D"}
664 ; CHECK: const wchar_t * {L"E"}
665 ; CHECK: const wchar_t * {L"F"}
666 ; CHECK: const wchar_t * {L"G"}
667 ; CHECK: const wchar_t * {L"H"}
668 ; CHECK: const wchar_t * {L"I"}
669 ; CHECK: const wchar_t * {L"J"}
670 ; CHECK: const wchar_t * {L"K"}
671 ; CHECK: const wchar_t * {L"L"}
672 ; CHECK: const wchar_t * {L"M"}
673 ; CHECK: const wchar_t * {L"N"}
674 ; CHECK: const wchar_t * {L"O"}
675 ; CHECK: const wchar_t * {L"P"}
676 ; CHECK: const wchar_t * {L"Q"}
677 ; CHECK: const wchar_t * {L"R"}
678 ; CHECK: const wchar_t * {L"S"}
679 ; CHECK: const wchar_t * {L"T"}
680 ; CHECK: const wchar_t * {L"U"}
681 ; CHECK: const wchar_t * {L"V"}
682 ; CHECK: const wchar_t * {L"W"}
683 ; CHECK: const wchar_t * {L"X"}
684 ; CHECK: const wchar_t * {L"Y"}
685 ; CHECK: const wchar_t * {L"Z"}
686 ; CHECK: const wchar_t * {L"["}
687 ; CHECK: const wchar_t * {L"\\"}
688 ; CHECK: const wchar_t * {L"]"}
689 ; CHECK: const wchar_t * {L"^"}
690 ; CHECK: const wchar_t * {L"_"}
691 ; CHECK: const wchar_t * {L"`"}
692 ; CHECK: const wchar_t * {L"a"}
693 ; CHECK: const wchar_t * {L"b"}
694 ; CHECK: const wchar_t * {L"c"}
695 ; CHECK: const wchar_t * {L"d"}
696 ; CHECK: const wchar_t * {L"e"}
697 ; CHECK: const wchar_t * {L"f"}
698 ; CHECK: const wchar_t * {L"g"}
699 ; CHECK: const wchar_t * {L"h"}
700 ; CHECK: const wchar_t * {L"i"}
701 ; CHECK: const wchar_t * {L"j"}
702 ; CHECK: const wchar_t * {L"k"}
703 ; CHECK: const wchar_t * {L"l"}
704 ; CHECK: const wchar_t * {L"m"}
705 ; CHECK: const wchar_t * {L"n"}
706 ; CHECK: const wchar_t * {L"o"}
707 ; CHECK: const wchar_t * {L"p"}
708 ; CHECK: const wchar_t * {L"q"}
709 ; CHECK: const wchar_t * {L"r"}
710 ; CHECK: const wchar_t * {L"s"}
711 ; CHECK: const wchar_t * {L"t"}
712 ; CHECK: const wchar_t * {L"u"}
713 ; CHECK: const wchar_t * {L"v"}
714 ; CHECK: const wchar_t * {L"w"}
715 ; CHECK: const wchar_t * {L"x"}
716 ; CHECK: const wchar_t * {L"y"}
717 ; CHECK: const wchar_t * {L"z"}
718 ; CHECK: const wchar_t * {L"{"}
719 ; CHECK: const wchar_t * {L"|"}
720 ; CHECK: const wchar_t * {L"}"}
721 ; CHECK: const wchar_t * {L"~"}
624 ; CHECK: L"\t"
625 ; CHECK: L"\n"
626 ; CHECK: L"\v"
627 ; CHECK: L" "
628 ; CHECK: L"!"
629 ; CHECK: L"\""
630 ; CHECK: L"#"
631 ; CHECK: L"$"
632 ; CHECK: L"%"
633 ; CHECK: L"&"
634 ; CHECK: L"\'"
635 ; CHECK: L"("
636 ; CHECK: L")"
637 ; CHECK: L"*"
638 ; CHECK: L"+"
639 ; CHECK: L","
640 ; CHECK: L"-"
641 ; CHECK: L"."
642 ; CHECK: L"/"
643 ; CHECK: L"0"
644 ; CHECK: L"1"
645 ; CHECK: L"2"
646 ; CHECK: L"3"
647 ; CHECK: L"4"
648 ; CHECK: L"5"
649 ; CHECK: L"6"
650 ; CHECK: L"7"
651 ; CHECK: L"8"
652 ; CHECK: L"9"
653 ; CHECK: L":"
654 ; CHECK: L";"
655 ; CHECK: L"<"
656 ; CHECK: L"="
657 ; CHECK: L">"
658 ; CHECK: L"?"
659 ; CHECK: L"@"
660 ; CHECK: L"A"
661 ; CHECK: L"B"
662 ; CHECK: L"C"
663 ; CHECK: L"D"
664 ; CHECK: L"E"
665 ; CHECK: L"F"
666 ; CHECK: L"G"
667 ; CHECK: L"H"
668 ; CHECK: L"I"
669 ; CHECK: L"J"
670 ; CHECK: L"K"
671 ; CHECK: L"L"
672 ; CHECK: L"M"
673 ; CHECK: L"N"
674 ; CHECK: L"O"
675 ; CHECK: L"P"
676 ; CHECK: L"Q"
677 ; CHECK: L"R"
678 ; CHECK: L"S"
679 ; CHECK: L"T"
680 ; CHECK: L"U"
681 ; CHECK: L"V"
682 ; CHECK: L"W"
683 ; CHECK: L"X"
684 ; CHECK: L"Y"
685 ; CHECK: L"Z"
686 ; CHECK: L"["
687 ; CHECK: L"\\"
688 ; CHECK: L"]"
689 ; CHECK: L"^"
690 ; CHECK: L"_"
691 ; CHECK: L"`"
692 ; CHECK: L"a"
693 ; CHECK: L"b"
694 ; CHECK: L"c"
695 ; CHECK: L"d"
696 ; CHECK: L"e"
697 ; CHECK: L"f"
698 ; CHECK: L"g"
699 ; CHECK: L"h"
700 ; CHECK: L"i"
701 ; CHECK: L"j"
702 ; CHECK: L"k"
703 ; CHECK: L"l"
704 ; CHECK: L"m"
705 ; CHECK: L"n"
706 ; CHECK: L"o"
707 ; CHECK: L"p"
708 ; CHECK: L"q"
709 ; CHECK: L"r"
710 ; CHECK: L"s"
711 ; CHECK: L"t"
712 ; CHECK: L"u"
713 ; CHECK: L"v"
714 ; CHECK: L"w"
715 ; CHECK: L"x"
716 ; CHECK: L"y"
717 ; CHECK: L"z"
718 ; CHECK: L"{"
719 ; CHECK: L"|"
720 ; CHECK: L"}"
721 ; CHECK: L"~"
722722
723723
724724
725725 ??_C@_0CF@LABBIIMO@012345678901234567890123456789AB@
726 ; CHECK: const char * {"012345678901234567890123456789AB"...}
726 ; CHECK: "012345678901234567890123456789AB"...
727727
728728 ??_C@_1EK@KFPEBLPK@?$AA0?$AA1?$AA2?$AA3?$AA4?$AA5?$AA6?$AA7?$AA8?$AA9?$AA0?$AA1?$AA2?$AA3?$AA4?$AA5?$AA6?$AA7?$AA8?$AA9?$AA0?$AA1?$AA2?$AA3?$AA4?$AA5?$AA6?$AA7?$AA8?$AA9?$AAA?$AAB@
729 ; CHECK: const wchar_t * {L"012345678901234567890123456789AB"...}
729 ; CHECK: L"012345678901234567890123456789AB"...
730730
731731 ??_C@_13IIHIAFKH@?W?$PP?$AA?$AA@
732 ; CHECK: const wchar_t * {L"\xD7\xFF"}
732 ; CHECK: L"\xD7\xFF"
733733
734734 ??_C@_02PCEFGMJL@hi?$AA@
735 ; CHECK: const char * {"hi"}
735 ; CHECK: "hi"
736736
737737 ??_C@_05OMLEGLOC@h?$AAi?$AA?$AA?$AA@
738 ; CHECK: const char16_t * {u"hi"}
738 ; CHECK: u"hi"
739739
740740 ??_C@_0EK@FEAOBHPP@o?$AA1?$AA2?$AA3?$AA4?$AA5?$AA6?$AA7?$AA8?$AA9?$AA0?$AA1?$AA2?$AA3?$AA4?$AA5?$AA@
741 ; CHECK: const char16_t * {u"o123456789012345"...}
741 ; CHECK: u"o123456789012345"...
742742
743743 ??_C@_0M@GFNAJIPG@h?$AA?$AA?$AAi?$AA?$AA?$AA?$AA?$AA?$AA?$AA@
744 ; CHECK: const char32_t * {U"hi"}
744 ; CHECK: U"hi"
745745
746746 ??_C@_0JE@IMHFEDAA@0?$AA?$AA?$AA1?$AA?$AA?$AA2?$AA?$AA?$AA3?$AA?$AA?$AA4?$AA?$AA?$AA5?$AA?$AA?$AA6?$AA?$AA?$AA7?$AA?$AA?$AA@
747 ; CHECK: const char32_t * {U"01234567"...}
747 ; CHECK: U"01234567"...
748748
749749 ; These all have just the right length that the trailing 0 just fits.
750750 ??_C@_0CA@NMANGEKF@012345678901234567890123456789A?$AA@
751 ; CHECK: const char * {"012345678901234567890123456789A"}
751 ; CHECK: "012345678901234567890123456789A"
752752
753753 ??_C@_1EA@LJAFPILO@?$AA0?$AA1?$AA2?$AA3?$AA4?$AA5?$AA6?$AA7?$AA8?$AA9?$AA0?$AA1?$AA2?$AA3?$AA4?$AA5?$AA6?$AA7?$AA8?$AA9?$AA0?$AA1?$AA2?$AA3?$AA4?$AA5?$AA6?$AA7?$AA8?$AA9?$AAA?$AA?$AA@
754 ; CHECK: const wchar_t * {L"012345678901234567890123456789A"}
754 ; CHECK: L"012345678901234567890123456789A"
755755
756756 ??_C@_0CA@NMANGEKF@012345678901234567890123456789A?$AA@
757 ; CHECK: const char * {"012345678901234567890123456789A"}
757 ; CHECK: "012345678901234567890123456789A"
758758
759759 ??_C@_0CA@NFEFHIFO@0?$AA1?$AA2?$AA3?$AA4?$AA5?$AA6?$AA7?$AA8?$AA9?$AA0?$AA1?$AA2?$AA3?$AA4?$AA?$AA?$AA@
760 ; CHECK: const char16_t * {u"012345678901234"}
760 ; CHECK: u"012345678901234"
761761
762762 ??_C@_0CA@KFPHPCC@0?$AA?$AA?$AA1?$AA?$AA?$AA2?$AA?$AA?$AA3?$AA?$AA?$AA4?$AA?$AA?$AA5?$AA?$AA?$AA6?$AA?$AA?$AA?$AA?$AA?$AA?$AA@
763 ; CHECK: const char32_t * {U"0123456"}
763 ; CHECK: U"0123456"
764764
765765 ; There are too many bytes encoded in this string literal (it should encode a max of 32 bytes)
766766 ; but some buggy compilers will incorrectly generate this, so we need to be able to demangle
767767 ; both the correct and incorrect versions.
768768 ??_C@_0CG@HJGBPLNO@l?$AAo?$AAo?$AAk?$AAA?$AAh?$AAe?$AAa?$AAd?$AAH?$AAa?$AAr?$AAd?$AAB?$AAr?$AAe?$AAa?$AAk?$AA?$AA?$AA@
769 ; CHECK: const char16_t * {u"lookAheadHardBreak"}
769 ; CHECK: u"lookAheadHardBreak"
770770
771771 ??_C@_0CG@HJGBPLNO@l?$AAo?$AAo?$AAk?$AAA?$AAh?$AAe?$AAa?$AAd?$AAH?$AAa?$AAr?$AAd?$AAB?$AAr?$AAe?$AA@
772 ; CHECK: const char16_t * {u"lookAheadHardBre"...}
772 ; CHECK: u"lookAheadHardBre"...