|  | ; Run llvm-undname with invalid inputs and make sure it doesn't crash. | 
|  | ; RUN: not llvm-undname < %s 2>&1 | FileCheck %s | 
|  |  | 
|  | ?ff@@$$J0YAXAU?$AS_@$0A@PEAU?$AS_@$0A@H@__clang@@@__clang@@@Z | 
|  | ; CHECK: ?ff@@$$J0YAXAU?$AS_@$0A@PEAU?$AS_@$0A@H@__clang@@@__clang@@@Z | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?f0@@YAXPEU?$AS_@$00$$CAD@__clang@@@Z | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?f0@@YAXPEU?$AS_@$00$$CAD@__clang@@@Z | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?@@8 | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?@@8 | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?? | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?? | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??0@ | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??0@ | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ? @@   YC@ | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ? @@   YC@ | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??B@$$J0 | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??B@$$J0 | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??B@4 | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??B@4 | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?A?@?@???B@4D | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?A?@?@???B@4D | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?A?@?@???B@4DD | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?A?@?@???B@4DD | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??$A@P15@ | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??$A@P15@ | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??$A@P | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??$A@P | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?A@@ | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?A@@ | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?A@@P | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?A@@P | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?A@@4PQA@@ | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?A@@4PQA@@ | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??__E | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??__E | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??__E@@ | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??__E@@ | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??__E?Foo@@0HA@@ | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??__E?Foo@@0HA@@ | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??__E?i@C@@0HA@ | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??__E?i@C@@0HA@ | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??__E?Foo@@YAXXZ | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??__E?Foo@@YAXXZ | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?foo@@YAH0@Z | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?foo@@YAH0@Z | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?foo@@YAHH | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?foo@@YAHH | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??8@8 | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??8@8 | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?B@?$?K$H? | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?B@?$?K$H? | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??C@$ | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??C@$ | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?x@@3PAW | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?x@@3PAW | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??} | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??} | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?foo@?$?_ | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?foo@?$?_ | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??_R4 | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??_R4 | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??_R4foo@@ | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??_R4foo@@ | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?foo@?$?BH@@QAEHXZ | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?foo@?$?BH@@QAEHXZ | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?foo@?$?0H@ | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?foo@?$?0H@ | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??_C@_0A@01234567@a | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??_C@_0A@01234567@a | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??_C@_1A@01234567@a | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??_C@_1A@01234567@a | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??_C@_0301234567@a | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??_C@_0301234567@a | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??_C@_1301234567@a | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??_C@_1301234567@a | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??_C@_0601234567@abcdefghijklmnopqrtsuvwxyzABCDEFGHIJKLMNOPQRTSUVWXYZabcdefghijklmnopqrtsuvwxyzABCDEFGHIJKLMNOPQRTSUVWXYZabcdefghijklmnopqrtsuvwxyz | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??_C@_0601234567@abcdefghijklmnopqrtsuvwxyzABCDEFGHIJKLMNOPQRTSUVWXYZabcdefghijklmnopqrtsuvwxyzABCDEFGHIJKLMNOPQRTSUVWXYZabcdefghijklmnopqrtsuvwxyz | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??_C@_12@?z | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??_C@_12@?z | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??$foo@$1??_C@_02PCEFGMJL@hi?$AA@@ | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??$foo@$1??_C@_02PCEFGMJL@hi?$AA@@ | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??_C@ | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??_C@ | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??_C@_ | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??_C@_ | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??_C@_3 | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??_C@_3 | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??_C@_01 | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??_C@_01 | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??_C@_0101234567@ | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??_C@_0101234567@ | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??_C@_0101234567@? | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??_C@_0101234567@? | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??_C@_0101234567@?$ | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??_C@_0101234567@?$ | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??_C@_0101234567@?$za | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??_C@_0101234567@?$za | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??_C@_0101234567@?$az | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??_C@_0101234567@?$az | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??_C@_1201234567@a?$az | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??_C@_1201234567@a?$az | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??@foo | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??@foo | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?foo@@3YA@A | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?foo@@3YA@A | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?foo@@3Y~01KA | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?foo@@3Y~01KA | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?foo@@3Y0~1KA | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?foo@@3Y0~1KA | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?x@@3PEAY02$$CRHEA | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?x@@3PEAY02$$CRHEA | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?foo@@3_ | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?foo@@3_ | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?foo@@3_XA | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?foo@@3_XA | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?foo@@3Vbar | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?foo@@3Vbar | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?foo@@3Vbar@ | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?foo@@3Vbar@ | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?foo@?A | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?foo@?A | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?foo@? | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?foo@? | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?foo@?? | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?foo@?? | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?foo@?XX? | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?foo@?XX? | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?foo@?A@? | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?foo@?A@? | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?foo@?Q@? | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?foo@?Q@? | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?foo@?BQ@? | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?foo@?BQ@? | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ?foo@?0? | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ?foo@?0? | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??_Sfoo@@1Abar@@ | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??_Sfoo@@1Abar@@ | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??_Bfoo@@1 | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??_Bfoo@@1 | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??_R0 | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??_R0 | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??_R0H | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??_R0H | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??_R0H@8foo | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??_R0H@8foo | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??_R1012?3foo@@ | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??_R1012?3foo@@ | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??_R2foo@@1 | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??_R2foo@@1 | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??_A | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??_A | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | ??_P | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: ??_P | 
|  | ; CHECK-NEXT: error: Invalid mangled name | 
|  |  | 
|  | .?AUBase@@@8 | 
|  | ; CHECK-EMPTY: | 
|  | ; CHECK-NEXT: .?AUBase@@@8 | 
|  | ; CHECK-NEXT: error: Invalid mangled name |