Implement Mike Herrick's proposed noexcept mangling.

llvm-svn: 164593
This commit is contained in:
John McCall 2012-09-25 09:10:17 +00:00
parent 0f999f329c
commit f652e9a6b0
2 changed files with 12 additions and 1 deletions

View File

@ -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);

View File

@ -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(
}