diff options
author | Sebastian Redl <sebastian.redl@getdesigned.at> | 2010-09-10 22:34:40 +0000 |
---|---|---|
committer | Sebastian Redl <sebastian.redl@getdesigned.at> | 2010-09-10 22:34:40 +0000 |
commit | 5221d8f2da008689f7ff9476e6522bb2b63ec1a3 (patch) | |
tree | ec4531aef091d60a2e47a4cd93210e403d474c6f /lib/AST/Expr.cpp | |
parent | fe6834af25d0809215c9e205c9983dd6d3f968b4 (diff) |
Address Doug's comments.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113650 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/Expr.cpp')
-rw-r--r-- | lib/AST/Expr.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp index 435f7548ea..65dafae35e 100644 --- a/lib/AST/Expr.cpp +++ b/lib/AST/Expr.cpp @@ -1347,6 +1347,11 @@ static Expr::CanThrowResult CanCalleeThrow(const Decl *D, if (!VD) // If we have no clue what we're calling, assume the worst. return Expr::CT_Can; + // As an extension, we assume that __attribute__((nothrow)) functions don't + // throw. + if (isa<FunctionDecl>(D) && D->hasAttr<NoThrowAttr>()) + return Expr::CT_Cannot; + QualType T = VD->getType(); const FunctionProtoType *FT; if ((FT = T->getAs<FunctionProtoType>())) { @@ -1482,7 +1487,7 @@ Expr::CanThrowResult Expr::CanThrow(ASTContext &C) const { case VAArgExprClass: case CXXDefaultArgExprClass: case CXXBindTemporaryExprClass: - case CXXExprWithTemporariesClass: + case CXXExprWithTemporariesClass: // FIXME: this thing calls destructors case ObjCIvarRefExprClass: case ObjCIsaExprClass: case ShuffleVectorExprClass: |