diff options
| author | John McCall <rjmccall@apple.com> | 2012-09-25 09:10:17 +0000 |
|---|---|---|
| committer | John McCall <rjmccall@apple.com> | 2012-09-25 09:10:17 +0000 |
| commit | f652e9a6b01d1aeef13b4376e3d14078ae4b8dec (patch) | |
| tree | 4367502cbad762e63e2d04f679e533a277d864ea | |
| parent | 0f999f329c67e5322b7659990a0f65436c7a97b6 (diff) | |
| download | bcm5719-llvm-f652e9a6b01d1aeef13b4376e3d14078ae4b8dec.tar.gz bcm5719-llvm-f652e9a6b01d1aeef13b4376e3d14078ae4b8dec.zip | |
Implement Mike Herrick's proposed noexcept mangling.
llvm-svn: 164593
| -rw-r--r-- | clang/lib/AST/ItaniumMangle.cpp | 6 | ||||
| -rw-r--r-- | clang/test/CodeGenCXX/mangle-exprs.cpp | 7 |
2 files changed, 12 insertions, 1 deletions
diff --git a/clang/lib/AST/ItaniumMangle.cpp b/clang/lib/AST/ItaniumMangle.cpp index afd425b5ea3..3a168017d7f 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<CXXNoexceptExpr>(E)->getOperand()); + break; + case Expr::UnaryExprOrTypeTraitExprClass: { const UnaryExprOrTypeTraitExpr *SAE = cast<UnaryExprOrTypeTraitExpr>(E); diff --git a/clang/test/CodeGenCXX/mangle-exprs.cpp b/clang/test/CodeGenCXX/mangle-exprs.cpp index 30da4fbbcdf..2d7a883526d 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>(X*); + +} + +namespace test5 { + template <typename T> void a(decltype(noexcept(T()))) {} + template void a<int>(decltype(noexcept(int()))); + // CHECK: void @_ZN5test51aIiEEvDTnxcvT__EE( } |

