; Run llvm-undname with invalid inputs and make sure it doesn't crash. ; RUN: 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