; RUN: llvm-undname < %s | FileCheck %s ; CHECK-NOT: Invalid mangled name ??_C@_01CNACBAHC@?$PP?$AA@ ??_C@_01DEBJCBDD@?$PO?$AA@ ??_C@_01BPDEHCPA@?$PN?$AA@ ??_C@_01GCPEDLB@?$PM?$AA@ ??_C@_01EJGONFHG@?$PL?$AA@ ??_C@_01FAHFOEDH@?z?$AA@ ??_C@_01HLFILHPE@?y?$AA@ ??_C@_01GCEDIGLF@?x?$AA@ ??_C@_01OFNLJKHK@?w?$AA@ ??_C@_01PMMAKLDL@?v?$AA@ ??_C@_01NHONPIPI@?u?$AA@ ??_C@_01MOPGMJLJ@?t?$AA@ ??_C@_01IBLHFPHO@?s?$AA@ ??_C@_01JIKMGODP@?r?$AA@ ??_C@_01LDIBDNPM@?q?$AA@ ??_C@_01KKJKAMLN@?p?$AA@ ??_C@_01GHMAACCD@?o?$AA@ ??_C@_01HONLDDGC@?n?$AA@ ??_C@_01FFPGGAKB@?m?$AA@ ??_C@_01EMONFBOA@?l?$AA@ ??_C@_01DKMMHCH@?k?$AA@ ??_C@_01BKLHPGGG@?j?$AA@ ??_C@_01DBJKKFKF@?i?$AA@ ??_C@_01CIIBJEOE@?h?$AA@ ??_C@_01KPBJIICL@?g?$AA@ ??_C@_01LGACLJGK@?f?$AA@ ??_C@_01JNCPOKKJ@?e?$AA@ ??_C@_01IEDENLOI@?d?$AA@ ??_C@_01MLHFENCP@?c?$AA@ ??_C@_01NCGOHMGO@?b?$AA@ ??_C@_01PJEDCPKN@?a?$AA@ ??_C@_01OAFIBOOM@?$OA?$AA@ ??_C@_01LIIGDENA@?$NP?$AA@ ??_C@_01KBJNAFJB@?$NO?$AA@ ??_C@_01IKLAFGFC@?$NN?$AA@ ??_C@_01JDKLGHBD@?$NM?$AA@ ??_C@_01NMOKPBNE@?$NL?$AA@ ??_C@_01MFPBMAJF@?Z?$AA@ ??_C@_01OONMJDFG@?Y?$AA@ ??_C@_01PHMHKCBH@?X?$AA@ ??_C@_01HAFPLONI@?W?$AA@ ??_C@_01GJEEIPJJ@?V?$AA@ ??_C@_01ECGJNMFK@?U?$AA@ ??_C@_01FLHCONBL@?T?$AA@ ??_C@_01BEDDHLNM@?S?$AA@ ??_C@_01NCIEKJN@?R?$AA@ ??_C@_01CGAFBJFO@?Q?$AA@ ??_C@_01DPBOCIBP@?P?$AA@ ??_C@_01PCEECGIB@?O?$AA@ ??_C@_01OLFPBHMA@?N?$AA@ ??_C@_01MAHCEEAD@?M?$AA@ ??_C@_01NJGJHFEC@?L?$AA@ ??_C@_01JGCIODIF@?K?$AA@ ??_C@_01IPDDNCME@?J?$AA@ ??_C@_01KEBOIBAH@?I?$AA@ ??_C@_01LNAFLAEG@?H?$AA@ ??_C@_01DKJNKMIJ@?G?$AA@ ??_C@_01CDIGJNMI@?F?$AA@ ??_C@_01IKLMOAL@?E?$AA@ ??_C@_01BBLAPPEK@?D?$AA@ ??_C@_01FOPBGJIN@?C?$AA@ ??_C@_01EHOKFIMM@?B?$AA@ ??_C@_01GMMHALAP@?A?$AA@ ??_C@_01HFNMDKEO@?$MA?$AA@ ??_C@_01NNHLFPHH@?$LP?$AA@ ??_C@_01MEGAGODG@?$LO?$AA@ ??_C@_01OPENDNPF@?$LN?$AA@ ??_C@_01PGFGAMLE@?$LM?$AA@ ??_C@_01LJBHJKHD@?$LL?$AA@ ??_C@_01KAAMKLDC@?$LK?$AA@ ??_C@_01ILCBPIPB@?$LJ?$AA@ ??_C@_01JCDKMJLA@?$LI?$AA@ ??_C@_01BFKCNFHP@?$LH?$AA@ ??_C@_01MLJOEDO@?$LG?$AA@ ??_C@_01CHJELHPN@?$LF?$AA@ ??_C@_01DOIPIGLM@?$LE?$AA@ ??_C@_01HBMOBAHL@?$LD?$AA@ ??_C@_01GINFCBDK@?$LC?$AA@ ??_C@_01EDPIHCPJ@?$LB?$AA@ ??_C@_01FKODEDLI@?$LA?$AA@ ??_C@_01JHLJENCG@?$KP?$AA@ ??_C@_01IOKCHMGH@?$KO?$AA@ ??_C@_01KFIPCPKE@?$KN?$AA@ ??_C@_01LMJEBOOF@?$KM?$AA@ ??_C@_01PDNFIICC@?$KL?$AA@ ??_C@_01OKMOLJGD@?$KK?$AA@ ??_C@_01MBODOKKA@?$KJ?$AA@ ??_C@_01NIPINLOB@?$KI?$AA@ ??_C@_01FPGAMHCO@?$KH?$AA@ ??_C@_01EGHLPGGP@?$KG?$AA@ ??_C@_01GNFGKFKM@?$KF?$AA@ ??_C@_01HEENJEON@?$KE?$AA@ ??_C@_01DLAMACCK@?$KD?$AA@ ??_C@_01CCBHDDGL@?$KC?$AA@ ??_C@_01JDKGAKI@?$KB?$AA@ ??_C@_01BACBFBOJ@?$KA?$AA@ ??_C@_01EIPPHLNF@?$JP?$AA@ ??_C@_01FBOEEKJE@?$JO?$AA@ ??_C@_01HKMJBJFH@?$JN?$AA@ ??_C@_01GDNCCIBG@?$JM?$AA@ ??_C@_01CMJDLONB@?$JL?$AA@ ??_C@_01DFIIIPJA@?$JK?$AA@ ??_C@_01BOKFNMFD@?$JJ?$AA@ ??_C@_01HLOONBC@?$JI?$AA@ ??_C@_01IACGPBNN@?$JH?$AA@ ??_C@_01JJDNMAJM@?$JG?$AA@ ??_C@_01LCBAJDFP@?$JF?$AA@ ??_C@_01KLALKCBO@?$JE?$AA@ ??_C@_01OEEKDENJ@?$JD?$AA@ ??_C@_01PNFBAFJI@?$JC?$AA@ ??_C@_01NGHMFGFL@?$JB?$AA@ ??_C@_01MPGHGHBK@?$JA?$AA@ ??_C@_01CDNGJIE@?$IP?$AA@ ??_C@_01BLCGFIMF@?$IO?$AA@ ??_C@_01DAALALAG@?$IN?$AA@ ??_C@_01CJBADKEH@?$IM?$AA@ ??_C@_01GGFBKMIA@?$IL?$AA@ ??_C@_01HPEKJNMB@?$IK?$AA@ ??_C@_01FEGHMOAC@?$IJ?$AA@ ??_C@_01ENHMPPED@?$II?$AA@ ??_C@_01MKOEODIM@?$IH?$AA@ ??_C@_01NDPPNCMN@?$IG?$AA@ ??_C@_01PINCIBAO@?$IF?$AA@ ??_C@_01OBMJLAEP@?$IE?$AA@ ??_C@_01KOIICGII@?$ID?$AA@ ??_C@_01LHJDBHMJ@?$IC?$AA@ ??_C@_01JMLOEEAK@?$IB?$AA@ ??_C@_01IFKFHFEL@?$IA?$AA@ ??_C@_01BGIBIIDJ@?$HP?$AA@ ??_C@_01PJKLJHI@?$HO?$AA@ ??_C@_01CELHOKLL@?$HN?$AA@ ??_C@_01DNKMNLPK@?$HM?$AA@ ??_C@_01HCONENDN@?$HL?$AA@ ??_C@_01GLPGHMHM@z?$AA@ ??_C@_01EANLCPLP@y?$AA@ ??_C@_01FJMABOPO@x?$AA@ ??_C@_01NOFIACDB@w?$AA@ ??_C@_01MHEDDDHA@v?$AA@ ??_C@_01OMGOGALD@u?$AA@ ??_C@_01PFHFFBPC@t?$AA@ ??_C@_01LKDEMHDF@s?$AA@ ??_C@_01KDCPPGHE@r?$AA@ ??_C@_01IIACKFLH@q?$AA@ ??_C@_01JBBJJEPG@p?$AA@ ??_C@_01FMEDJKGI@o?$AA@ ??_C@_01EFFIKLCJ@n?$AA@ ??_C@_01GOHFPIOK@m?$AA@ ??_C@_01HHGOMJKL@l?$AA@ ??_C@_01DICPFPGM@k?$AA@ ??_C@_01CBDEGOCN@j?$AA@ ??_C@_01KBJDNOO@i?$AA@ ??_C@_01BDACAMKP@h?$AA@ ??_C@_01JEJKBAGA@g?$AA@ ??_C@_01INIBCBCB@f?$AA@ ??_C@_01KGKMHCOC@e?$AA@ ??_C@_01LPLHEDKD@d?$AA@ ??_C@_01PAPGNFGE@c?$AA@ ??_C@_01OJONOECF@b?$AA@ ??_C@_01MCMALHOG@a?$AA@ ??_C@_01NLNLIGKH@?$GA?$AA@ ??_C@_01IDAFKMJL@_?$AA@ ??_C@_01JKBOJNNK@?$FO?$AA@ ??_C@_01LBDDMOBJ@?$FN?$AA@ ??_C@_01KICIPPFI@?2?$AA@ ??_C@_01OHGJGJJP@?$FL?$AA@ ??_C@_01POHCFINO@Z?$AA@ ??_C@_01NFFPALBN@Y?$AA@ ??_C@_01MMEEDKFM@X?$AA@ ??_C@_01ELNMCGJD@W?$AA@ ??_C@_01FCMHBHNC@V?$AA@ ??_C@_01HJOKEEBB@U?$AA@ ??_C@_01GAPBHFFA@T?$AA@ ??_C@_01CPLAODJH@S?$AA@ ??_C@_01DGKLNCNG@R?$AA@ ??_C@_01BNIGIBBF@Q?$AA@ ??_C@_01EJNLAFE@P?$AA@ ??_C@_01MJMHLOMK@O?$AA@ ??_C@_01NANMIPIL@N?$AA@ ??_C@_01PLPBNMEI@M?$AA@ ??_C@_01OCOKONAJ@L?$AA@ ??_C@_01KNKLHLMO@K?$AA@ ??_C@_01LELAEKIP@J?$AA@ ??_C@_01JPJNBJEM@I?$AA@ ??_C@_01IGIGCIAN@H?$AA@ ??_C@_01BBODEMC@G?$AA@ ??_C@_01BIAFAFID@F?$AA@ ??_C@_01DDCIFGEA@E?$AA@ ??_C@_01CKDDGHAB@D?$AA@ ??_C@_01GFHCPBMG@C?$AA@ ??_C@_01HMGJMAIH@B?$AA@ ??_C@_01FHEEJDEE@A?$AA@ ??_C@_01EOFPKCAF@?$EA?$AA@ ??_C@_01OGPIMHDM@?$DP?$AA@ ??_C@_01PPODPGHN@?$DO?$AA@ ??_C@_01NEMOKFLO@?$DN?$AA@ ??_C@_01MNNFJEPP@?$DM?$AA@ ??_C@_01ICJEACDI@?$DL?$AA@ ??_C@_01JLIPDDHJ@?3?$AA@ ??_C@_01LAKCGALK@9?$AA@ ??_C@_01KJLJFBPL@8?$AA@ ??_C@_01COCBENDE@7?$AA@ ??_C@_01DHDKHMHF@6?$AA@ ??_C@_01BMBHCPLG@5?$AA@ ??_C@_01FAMBOPH@4?$AA@ ??_C@_01EKENIIDA@3?$AA@ ??_C@_01FDFGLJHB@2?$AA@ ??_C@_01HIHLOKLC@1?$AA@ ??_C@_01GBGANLPD@0?$AA@ ??_C@_01KMDKNFGN@?1?$AA@ ??_C@_01LFCBOECM@?4?$AA@ ??_C@_01JOAMLHOP@?9?$AA@ ??_C@_01IHBHIGKO@?0?$AA@ ??_C@_01MIFGBAGJ@?$CL?$AA@ ??_C@_01NBENCBCI@?$CK?$AA@ ??_C@_01PKGAHCOL@?$CJ?$AA@ ??_C@_01ODHLEDKK@?$CI?$AA@ ??_C@_01GEODFPGF@?8?$AA@ ??_C@_01HNPIGOCE@?$CG?$AA@ ??_C@_01FGNFDNOH@?$CF?$AA@ ??_C@_01EPMOAMKG@$?$AA@ ??_C@_01IPJKGB@?$CD?$AA@ ??_C@_01BJJEKLCA@?$CC?$AA@ ??_C@_01DCLJPIOD@?$CB?$AA@ ??_C@_01CLKCMJKC@?5?$AA@ ??_C@_01HDHMODJO@?$BP?$AA@ ??_C@_01GKGHNCNP@?$BO?$AA@ ??_C@_01EBEKIBBM@?$BN?$AA@ ??_C@_01FIFBLAFN@?$BM?$AA@ ??_C@_01BHBACGJK@?$BL?$AA@ ??_C@_01OALBHNL@?$BK?$AA@ ??_C@_01CFCGEEBI@?$BJ?$AA@ ??_C@_01DMDNHFFJ@?$BI?$AA@ ??_C@_01LLKFGJJG@?$BH?$AA@ ??_C@_01KCLOFINH@?$BG?$AA@ ??_C@_01IJJDALBE@?$BF?$AA@ ??_C@_01JAIIDKFF@?$BE?$AA@ ??_C@_01NPMJKMJC@?$BD?$AA@ ??_C@_01MGNCJNND@?$BC?$AA@ ??_C@_01ONPPMOBA@?$BB?$AA@ ??_C@_01PEOEPPFB@?$BA?$AA@ ??_C@_01DJLOPBMP@?$AP?$AA@ ??_C@_01CAKFMAIO@?$AO?$AA@ ??_C@_01LIIJDEN@?$AN?$AA@ ??_C@_01BCJDKCAM@?$AM?$AA@ ??_C@_01FNNCDEML@?$AL?$AA@ ??_C@_01EEMJAFIK@?6?$AA@ ??_C@_01GPOEFGEJ@?7?$AA@ ??_C@_01HGPPGHAI@?$AI?$AA@ ??_C@_01PBGHHLMH@?$AH?$AA@ ??_C@_01OIHMEKIG@?$AG?$AA@ ??_C@_01MDFBBJEF@?$AF?$AA@ ??_C@_01NKEKCIAE@?$AE?$AA@ ??_C@_01JFALLOMD@?$AD?$AA@ ??_C@_01IMBAIPIC@?$AC?$AA@ ??_C@_01KHDNNMEB@?$AB?$AA@ ??_C@_01LOCGONAA@?$AA?$AA@ ; CHECK: "\xFF" ; CHECK: "\xFE" ; CHECK: "\xFD" ; CHECK: "\xFC" ; CHECK: "\xFB" ; CHECK: "\xFA" ; CHECK: "\xF9" ; CHECK: "\xF8" ; CHECK: "\xF7" ; CHECK: "\xF6" ; CHECK: "\xF5" ; CHECK: "\xF4" ; CHECK: "\xF3" ; CHECK: "\xF2" ; CHECK: "\xF1" ; CHECK: "\xF0" ; CHECK: "\xEF" ; CHECK: "\xEE" ; CHECK: "\xED" ; CHECK: "\xEC" ; CHECK: "\xEB" ; CHECK: "\xEA" ; CHECK: "\xE9" ; CHECK: "\xE8" ; CHECK: "\xE7" ; CHECK: "\xE6" ; CHECK: "\xE5" ; CHECK: "\xE4" ; CHECK: "\xE3" ; CHECK: "\xE2" ; CHECK: "\xE1" ; CHECK: "\xE0" ; CHECK: "\xDF" ; CHECK: "\xDE" ; CHECK: "\xDD" ; CHECK: "\xDC" ; CHECK: "\xDB" ; CHECK: "\xDA" ; CHECK: "\xD9" ; CHECK: "\xD8" ; CHECK: "\xD7" ; CHECK: "\xD6" ; CHECK: "\xD5" ; CHECK: "\xD4" ; CHECK: "\xD3" ; CHECK: "\xD2" ; CHECK: "\xD1" ; CHECK: "\xD0" ; CHECK: "\xCF" ; CHECK: "\xCE" ; CHECK: "\xCD" ; CHECK: "\xCC" ; CHECK: "\xCB" ; CHECK: "\xCA" ; CHECK: "\xC9" ; CHECK: "\xC8" ; CHECK: "\xC7" ; CHECK: "\xC6" ; CHECK: "\xC5" ; CHECK: "\xC4" ; CHECK: "\xC3" ; CHECK: "\xC2" ; CHECK: "\xC1" ; CHECK: "\xC0" ; CHECK: "\xBF" ; CHECK: "\xBE" ; CHECK: "\xBD" ; CHECK: "\xBC" ; CHECK: "\xBB" ; CHECK: "\xBA" ; CHECK: "\xB9" ; CHECK: "\xB8" ; CHECK: "\xB7" ; CHECK: "\xB6" ; CHECK: "\xB5" ; CHECK: "\xB4" ; CHECK: "\xB3" ; CHECK: "\xB2" ; CHECK: "\xB1" ; CHECK: "\xB0" ; CHECK: "\xAF" ; CHECK: "\xAE" ; CHECK: "\xAD" ; CHECK: "\xAC" ; CHECK: "\xAB" ; CHECK: "\xAA" ; CHECK: "\xA9" ; CHECK: "\xA8" ; CHECK: "\xA7" ; CHECK: "\xA6" ; CHECK: "\xA5" ; CHECK: "\xA4" ; CHECK: "\xA3" ; CHECK: "\xA2" ; CHECK: "\xA1" ; CHECK: "\xA0" ; CHECK: "\x9F" ; CHECK: "\x9E" ; CHECK: "\x9D" ; CHECK: "\x9C" ; CHECK: "\x9B" ; CHECK: "\x9A" ; CHECK: "\x99" ; CHECK: "\x98" ; CHECK: "\x97" ; CHECK: "\x96" ; CHECK: "\x95" ; CHECK: "\x94" ; CHECK: "\x93" ; CHECK: "\x92" ; CHECK: "\x91" ; CHECK: "\x90" ; CHECK: "\x8F" ; CHECK: "\x8E" ; CHECK: "\x8D" ; CHECK: "\x8C" ; CHECK: "\x8B" ; CHECK: "\x8A" ; CHECK: "\x89" ; CHECK: "\x88" ; CHECK: "\x87" ; CHECK: "\x86" ; CHECK: "\x85" ; CHECK: "\x84" ; CHECK: "\x83" ; CHECK: "\x82" ; CHECK: "\x81" ; CHECK: "\x80" ; CHECK: "\x7F" ; CHECK: "~" ; CHECK: "}" ; CHECK: "|" ; CHECK: "{" ; CHECK: "z" ; CHECK: "y" ; CHECK: "x" ; CHECK: "w" ; CHECK: "v" ; CHECK: "u" ; CHECK: "t" ; CHECK: "s" ; CHECK: "r" ; CHECK: "q" ; CHECK: "p" ; CHECK: "o" ; CHECK: "n" ; CHECK: "m" ; CHECK: "l" ; CHECK: "k" ; CHECK: "j" ; CHECK: "i" ; CHECK: "h" ; CHECK: "g" ; CHECK: "f" ; CHECK: "e" ; CHECK: "d" ; CHECK: "c" ; CHECK: "b" ; CHECK: "a" ; CHECK: "`" ; CHECK: "_" ; CHECK: "^" ; CHECK: "]" ; CHECK: "\\" ; CHECK: "[" ; CHECK: "Z" ; CHECK: "Y" ; CHECK: "X" ; CHECK: "W" ; CHECK: "V" ; CHECK: "U" ; CHECK: "T" ; CHECK: "S" ; CHECK: "R" ; CHECK: "Q" ; CHECK: "P" ; CHECK: "O" ; CHECK: "N" ; CHECK: "M" ; CHECK: "L" ; CHECK: "K" ; CHECK: "J" ; CHECK: "I" ; CHECK: "H" ; CHECK: "G" ; CHECK: "F" ; CHECK: "E" ; CHECK: "D" ; CHECK: "C" ; CHECK: "B" ; CHECK: "A" ; CHECK: "@" ; CHECK: "?" ; CHECK: ">" ; CHECK: "=" ; CHECK: "<" ; CHECK: ";" ; CHECK: ":" ; CHECK: "9" ; CHECK: "8" ; CHECK: "7" ; CHECK: "6" ; CHECK: "5" ; CHECK: "4" ; CHECK: "3" ; CHECK: "2" ; CHECK: "1" ; CHECK: "0" ; CHECK: "/" ; CHECK: "." ; CHECK: "-" ; CHECK: "," ; CHECK: "+" ; CHECK: "*" ; CHECK: ")" ; CHECK: "(" ; CHECK: "\'" ; CHECK: "&" ; CHECK: "%" ; CHECK: "$" ; CHECK: "#" ; CHECK: "\"" ; CHECK: "!" ; CHECK: " " ; CHECK: "\x1F" ; CHECK: "\x1E" ; CHECK: "\x1D" ; CHECK: "\x1C" ; CHECK: "\x1B" ; CHECK: "\x1A" ; CHECK: "\x19" ; CHECK: "\x18" ; CHECK: "\x17" ; CHECK: "\x16" ; CHECK: "\x15" ; CHECK: "\x14" ; CHECK: "\x13" ; CHECK: "\x12" ; CHECK: "\x11" ; CHECK: "\x10" ; CHECK: "\x0F" ; CHECK: "\x0E" ; CHECK: "\r" ; CHECK: "\f" ; CHECK: "\v" ; CHECK: "\n" ; CHECK: "\t" ; CHECK: "\b" ; CHECK: "\a" ; CHECK: "\x06" ; CHECK: "\x05" ; CHECK: "\x04" ; CHECK: "\x03" ; CHECK: "\x02" ; CHECK: "\x01" ; The mangling doesn't distinguish between char and char16 types, so even though ; this was originally written as a char[] with one embedded null, it mangles ; identically to a char16_t[] that is empty. So when demangling, we choose the ; "smartest" one, which happened to be wrong, but it's still a "better" ; demangling. ; CHECK: u"" ??_C@_13KDLDGPGJ@?$AA?7?$AA?$AA@ ??_C@_13LBAGMAIH@?$AA?6?$AA?$AA@ ??_C@_13JLKKHOC@?$AA?$AL?$AA?$AA@ ??_C@_13HOIJIPNN@?$AA?5?$AA?$AA@ ??_C@_13MGDFOILI@?$AA?$CB?$AA?$AA@ ??_C@_13NEIAEHFG@?$AA?$CC?$AA?$AA@ ??_C@_13GMDMCADD@?$AA?$CD?$AA?$AA@ ??_C@_13PBOLBIIK@?$AA$?$AA?$AA@ ??_C@_13EJFHHPOP@?$AA?$CF?$AA?$AA@ ??_C@_13FLOCNAAB@?$AA?$CG?$AA?$AA@ ??_C@_13ODFOLHGE@?$AA?8?$AA?$AA@ ??_C@_13LLDNKHDC@?$AA?$CI?$AA?$AA@ ??_C@_13DIBMAFH@?$AA?$CJ?$AA?$AA@ ??_C@_13BBDEGPLJ@?$AA?$CK?$AA?$AA@ ??_C@_13KJIIAINM@?$AA?$CL?$AA?$AA@ ??_C@_13DEFPDAGF@?$AA?0?$AA?$AA@ ??_C@_13IMODFHAA@?$AA?9?$AA?$AA@ ??_C@_13JOFGPIOO@?$AA?4?$AA?$AA@ ??_C@_13CGOKJPIL@?$AA?1?$AA?$AA@ ??_C@_13COJANIEC@?$AA0?$AA?$AA@ ??_C@_13JGCMLPCH@?$AA1?$AA?$AA@ ??_C@_13IEJJBAMJ@?$AA2?$AA?$AA@ ??_C@_13DMCFHHKM@?$AA3?$AA?$AA@ ??_C@_13KBPCEPBF@?$AA4?$AA?$AA@ ??_C@_13BJEOCIHA@?$AA5?$AA?$AA@ ??_C@_13LPLIHJO@?$AA6?$AA?$AA@ ??_C@_13LDEHOAPL@?$AA7?$AA?$AA@ ??_C@_13OLCEPAKN@?$AA8?$AA?$AA@ ??_C@_13FDJIJHMI@?$AA9?$AA?$AA@ ??_C@_13EBCNDICG@?$AA?3?$AA?$AA@ ??_C@_13PJJBFPED@?$AA?$DL?$AA?$AA@ ??_C@_13GEEGGHPK@?$AA?$DM?$AA?$AA@ ??_C@_13NMPKAAJP@?$AA?$DN?$AA?$AA@ ??_C@_13MOEPKPHB@?$AA?$DO?$AA?$AA@ ??_C@_13HGPDMIBE@?$AA?$DP?$AA?$AA@ ??_C@_13EFKPHINO@?$AA?$EA?$AA?$AA@ ??_C@_13PNBDBPLL@?$AAA?$AA?$AA@ ??_C@_13OPKGLAFF@?$AAB?$AA?$AA@ ??_C@_13FHBKNHDA@?$AAC?$AA?$AA@ ??_C@_13MKMNOPIJ@?$AAD?$AA?$AA@ ??_C@_13HCHBIIOM@?$AAE?$AA?$AA@ ??_C@_13GAMECHAC@?$AAF?$AA?$AA@ ??_C@_13NIHIEAGH@?$AAG?$AA?$AA@ ??_C@_13IABLFADB@?$AAH?$AA?$AA@ ??_C@_13DIKHDHFE@?$AAI?$AA?$AA@ ??_C@_13CKBCJILK@?$AAJ?$AA?$AA@ ??_C@_13JCKOPPNP@?$AAK?$AA?$AA@ ??_C@_13PHJMHGG@?$AAL?$AA?$AA@ ??_C@_13LHMFKAAD@?$AAM?$AA?$AA@ ??_C@_13KFHAAPON@?$AAN?$AA?$AA@ ??_C@_13BNMMGIII@?$AAO?$AA?$AA@ ??_C@_13BFLGCPEB@?$AAP?$AA?$AA@ ??_C@_13KNAKEICE@?$AAQ?$AA?$AA@ ??_C@_13LPLPOHMK@?$AAR?$AA?$AA@ ??_C@_13HADIAKP@?$AAS?$AA?$AA@ ??_C@_13JKNELIBG@?$AAT?$AA?$AA@ ??_C@_13CCGINPHD@?$AAU?$AA?$AA@ ??_C@_13DANNHAJN@?$AAV?$AA?$AA@ ??_C@_13IIGBBHPI@?$AAW?$AA?$AA@ ??_C@_13NAACAHKO@?$AAX?$AA?$AA@ ??_C@_13GILOGAML@?$AAY?$AA?$AA@ ??_C@_13HKALMPCF@?$AAZ?$AA?$AA@ ??_C@_13MCLHKIEA@?$AA?$FL?$AA?$AA@ ??_C@_13FPGAJAPJ@?$AA?2?$AA?$AA@ ??_C@_13OHNMPHJM@?$AA?$FN?$AA?$AA@ ??_C@_13PFGJFIHC@?$AA?$FO?$AA?$AA@ ??_C@_13ENNFDPBH@?$AA_?$AA?$AA@ ??_C@_13OFJNNHOA@?$AA?$GA?$AA?$AA@ ??_C@_13FNCBLAIF@?$AAa?$AA?$AA@ ??_C@_13EPJEBPGL@?$AAb?$AA?$AA@ ??_C@_13PHCIHIAO@?$AAc?$AA?$AA@ ??_C@_13GKPPEALH@?$AAd?$AA?$AA@ ??_C@_13NCEDCHNC@?$AAe?$AA?$AA@ ??_C@_13MAPGIIDM@?$AAf?$AA?$AA@ ??_C@_13HIEKOPFJ@?$AAg?$AA?$AA@ ??_C@_13CACJPPAP@?$AAh?$AA?$AA@ ??_C@_13JIJFJIGK@?$AAi?$AA?$AA@ ??_C@_13IKCADHIE@?$AAj?$AA?$AA@ ??_C@_13DCJMFAOB@?$AAk?$AA?$AA@ ??_C@_13KPELGIFI@?$AAl?$AA?$AA@ ??_C@_13BHPHAPDN@?$AAm?$AA?$AA@ ??_C@_13FECKAND@?$AAn?$AA?$AA@ ??_C@_13LNPOMHLG@?$AAo?$AA?$AA@ ??_C@_13LFIEIAHP@?$AAp?$AA?$AA@ ??_C@_13NDIOHBK@?$AAq?$AA?$AA@ ??_C@_13BPINEIPE@?$AAr?$AA?$AA@ ??_C@_13KHDBCPJB@?$AAs?$AA?$AA@ ??_C@_13DKOGBHCI@?$AAt?$AA?$AA@ ??_C@_13ICFKHAEN@?$AAu?$AA?$AA@ ??_C@_13JAOPNPKD@?$AAv?$AA?$AA@ ??_C@_13CIFDLIMG@?$AAw?$AA?$AA@ ??_C@_13HADAKIJA@?$AAx?$AA?$AA@ ??_C@_13MIIMMPPF@?$AAy?$AA?$AA@ ??_C@_13NKDJGABL@?$AAz?$AA?$AA@ ??_C@_13GCIFAHHO@?$AA?$HL?$AA?$AA@ ??_C@_13PPFCDPMH@?$AA?$HM?$AA?$AA@ ??_C@_13EHOOFIKC@?$AA?$HN?$AA?$AA@ ??_C@_13FFFLPHEM@?$AA?$HO?$AA?$AA@ ; CHECK: L"\t" ; CHECK: L"\n" ; CHECK: L"\v" ; CHECK: L" " ; CHECK: L"!" ; CHECK: L"\"" ; CHECK: L"#" ; CHECK: L"$" ; CHECK: L"%" ; CHECK: L"&" ; CHECK: L"\'" ; CHECK: L"(" ; CHECK: L")" ; CHECK: L"*" ; CHECK: L"+" ; CHECK: L"," ; CHECK: L"-" ; CHECK: L"." ; CHECK: L"/" ; CHECK: L"0" ; CHECK: L"1" ; CHECK: L"2" ; CHECK: L"3" ; CHECK: L"4" ; CHECK: L"5" ; CHECK: L"6" ; CHECK: L"7" ; CHECK: L"8" ; CHECK: L"9" ; CHECK: L":" ; CHECK: L";" ; CHECK: L"<" ; CHECK: L"=" ; CHECK: L">" ; CHECK: L"?" ; CHECK: L"@" ; CHECK: L"A" ; CHECK: L"B" ; CHECK: L"C" ; CHECK: L"D" ; CHECK: L"E" ; CHECK: L"F" ; CHECK: L"G" ; CHECK: L"H" ; CHECK: L"I" ; CHECK: L"J" ; CHECK: L"K" ; CHECK: L"L" ; CHECK: L"M" ; CHECK: L"N" ; CHECK: L"O" ; CHECK: L"P" ; CHECK: L"Q" ; CHECK: L"R" ; CHECK: L"S" ; CHECK: L"T" ; CHECK: L"U" ; CHECK: L"V" ; CHECK: L"W" ; CHECK: L"X" ; CHECK: L"Y" ; CHECK: L"Z" ; CHECK: L"[" ; CHECK: L"\\" ; CHECK: L"]" ; CHECK: L"^" ; CHECK: L"_" ; CHECK: L"`" ; CHECK: L"a" ; CHECK: L"b" ; CHECK: L"c" ; CHECK: L"d" ; CHECK: L"e" ; CHECK: L"f" ; CHECK: L"g" ; CHECK: L"h" ; CHECK: L"i" ; CHECK: L"j" ; CHECK: L"k" ; CHECK: L"l" ; CHECK: L"m" ; CHECK: L"n" ; CHECK: L"o" ; CHECK: L"p" ; CHECK: L"q" ; CHECK: L"r" ; CHECK: L"s" ; CHECK: L"t" ; CHECK: L"u" ; CHECK: L"v" ; CHECK: L"w" ; CHECK: L"x" ; CHECK: L"y" ; CHECK: L"z" ; CHECK: L"{" ; CHECK: L"|" ; CHECK: L"}" ; CHECK: L"~" ??_C@_0CF@LABBIIMO@012345678901234567890123456789AB@ ; CHECK: "012345678901234567890123456789AB"... ??_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@ ; CHECK: L"012345678901234567890123456789AB"... ??_C@_13IIHIAFKH@?W?$PP?$AA?$AA@ ; CHECK: L"\xD7FF" ??_C@_03IIHIAFKH@?$PP?W?$AA?$AA@ ; CHECK: u"\xD7FF" ??_C@_02PCEFGMJL@hi?$AA@ ; CHECK: "hi" ??_C@_05OMLEGLOC@h?$AAi?$AA?$AA?$AA@ ; CHECK: u"hi" ??_C@_0EK@FEAOBHPP@o?$AA1?$AA2?$AA3?$AA4?$AA5?$AA6?$AA7?$AA8?$AA9?$AA0?$AA1?$AA2?$AA3?$AA4?$AA5?$AA@ ; CHECK: u"o123456789012345"... ??_C@_0M@GFNAJIPG@h?$AA?$AA?$AAi?$AA?$AA?$AA?$AA?$AA?$AA?$AA@ ; CHECK: U"hi" ??_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@ ; CHECK: U"01234567"... ; These all have just the right length that the trailing 0 just fits. ??_C@_0CA@NMANGEKF@012345678901234567890123456789A?$AA@ ; CHECK: "012345678901234567890123456789A" ??_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@ ; CHECK: L"012345678901234567890123456789A" ??_C@_0CA@NMANGEKF@012345678901234567890123456789A?$AA@ ; CHECK: "012345678901234567890123456789A" ??_C@_0CA@NFEFHIFO@0?$AA1?$AA2?$AA3?$AA4?$AA5?$AA6?$AA7?$AA8?$AA9?$AA0?$AA1?$AA2?$AA3?$AA4?$AA?$AA?$AA@ ; CHECK: u"012345678901234" ??_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@ ; CHECK: U"0123456" ; There are too many bytes encoded in this string literal (it should encode a max of 32 bytes) ; but some buggy compilers will incorrectly generate this, so we need to be able to demangle ; both the correct and incorrect versions. ??_C@_0CG@HJGBPLNO@l?$AAo?$AAo?$AAk?$AAA?$AAh?$AAe?$AAa?$AAd?$AAH?$AAa?$AAr?$AAd?$AAB?$AAr?$AAe?$AAa?$AAk?$AA?$AA?$AA@ ; CHECK: u"lookAheadHardBreak" ??_C@_0CG@HJGBPLNO@l?$AAo?$AAo?$AAk?$AAA?$AAh?$AAe?$AAa?$AAd?$AAH?$AAa?$AAr?$AAd?$AAB?$AAr?$AAe?$AA@ ; CHECK: u"lookAheadHardBre"... ; These are u16 strings that the diagnostic would classify as u32 -- except ; that their byte length % 4 is 2, so they can't be u32. ??_C@_05LABPAAN@b?$AA?$AA?$AA?$AA?$AA@ ; CHECK: u"b\0" ??_C@_0CC@MBPKDIAM@a?$AA?$AA?$AAb?$AA?$AA?$AAc?$AA?$AA?$AAd?$AA?$AA?$AAe?$AA?$AA?$AAf?$AA?$AA?$AAg?$AA?$AA?$AAh?$AA?$AA?$AA@ ; CHECK: u"a\0b\0c\0d\0e\0f\0g\0h\0"... ; This is technically not a valid u32 string since the character in it is not ; <= 0x10FFFF like unicode demands. (Also, the crc doesn't match the contents.) ; It's here because this input used to cause a stack overflow in outputHex(). ; Both cl.exe and clang-cl produce it for `const char32_t* s = U"\x11223344";` ??_C@_07LJGFEJEB@D3?$CC?$BB?$AA?$AA?$AA?$AA@) ; CHECK: U"\x11223344" ; This has a string length of 0x6_0000_0000, so it's 0 if treated as a 32-bit ; number. (In practice, 24GiB large string literals should be rare.) ??_C@_0GAAAAAAAA@GPLEPFHO@01234567890123456789012345678901@ ; CHECK: "01234567890123456789012345678901"...