From f652e9a6b01d1aeef13b4376e3d14078ae4b8dec Mon Sep 17 00:00:00 2001 From: John McCall Date: Tue, 25 Sep 2012 09:10:17 +0000 Subject: [PATCH] Implement Mike Herrick's proposed noexcept mangling. llvm-svn: 164593 --- clang/lib/AST/ItaniumMangle.cpp | 6 +++++- clang/test/CodeGenCXX/mangle-exprs.cpp | 7 +++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/clang/lib/AST/ItaniumMangle.cpp b/clang/lib/AST/ItaniumMangle.cpp index afd425b5ea31..3a168017d7ff 100644 --- a/clang/lib/AST/ItaniumMangle.cpp +++ b/clang/lib/AST/ItaniumMangle.cpp @@ -2412,7 +2412,6 @@ recurse: case Expr::ExpressionTraitExprClass: case Expr::VAArgExprClass: case Expr::CXXUuidofExprClass: - case Expr::CXXNoexceptExprClass: case Expr::CUDAKernelCallExprClass: case Expr::AsTypeExprClass: case Expr::PseudoObjectExprClass: @@ -2604,6 +2603,11 @@ recurse: Out <<"_E"; break; + case Expr::CXXNoexceptExprClass: + Out << "nx"; + mangleExpression(cast(E)->getOperand()); + break; + case Expr::UnaryExprOrTypeTraitExprClass: { const UnaryExprOrTypeTraitExpr *SAE = cast(E); diff --git a/clang/test/CodeGenCXX/mangle-exprs.cpp b/clang/test/CodeGenCXX/mangle-exprs.cpp index 30da4fbbcdf9..2d7a883526db 100644 --- a/clang/test/CodeGenCXX/mangle-exprs.cpp +++ b/clang/test/CodeGenCXX/mangle-exprs.cpp @@ -190,4 +190,11 @@ namespace test4 { // CHECK: void @_ZN5test43tf3INS_1XEEEvDTnw_T_ilLi1EEE template void tf3(X*); + +} + +namespace test5 { + template void a(decltype(noexcept(T()))) {} + template void a(decltype(noexcept(int()))); + // CHECK: void @_ZN5test51aIiEEvDTnxcvT__EE( } -- GitLab