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 | b8a76c42b516e55b680ada2af960ecc9613a7c2d (patch) | |
tree | 8bf9c7962996260e8e8046fc4ffa3805b13a3b81 /clang/lib | |
parent | ca3682d4861ac597ea9b03c8b5e0d19bac4df82e (diff) | |
download | bcm5719-llvm-b8a76c42b516e55b680ada2af960ecc9613a7c2d.tar.gz bcm5719-llvm-b8a76c42b516e55b680ada2af960ecc9613a7c2d.zip |
Address Doug's comments.
llvm-svn: 113650
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/AST/Expr.cpp | 7 | ||||
-rw-r--r-- | clang/lib/Serialization/ASTReaderStmt.cpp | 6 |
2 files changed, 9 insertions, 4 deletions
diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp index 435f7548ea5..65dafae35e4 100644 --- a/clang/lib/AST/Expr.cpp +++ b/clang/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: diff --git a/clang/lib/Serialization/ASTReaderStmt.cpp b/clang/lib/Serialization/ASTReaderStmt.cpp index 0449a989302..c2b054b1f8f 100644 --- a/clang/lib/Serialization/ASTReaderStmt.cpp +++ b/clang/lib/Serialization/ASTReaderStmt.cpp @@ -1255,9 +1255,9 @@ void ASTStmtReader::VisitUnaryTypeTraitExpr(UnaryTypeTraitExpr *E) { void ASTStmtReader::VisitCXXNoexceptExpr(CXXNoexceptExpr *E) { VisitExpr(E); - E->setValue((bool)Record[Idx++]); - E->setSourceRange(Reader.ReadSourceRange(Record, Idx)); - E->setOperand(Reader.ReadSubExpr()); + E->Value = (bool)Record[Idx++]; + E->Range = Reader.ReadSourceRange(Record, Idx); + E->Operand = Reader.ReadSubExpr(); } Stmt *ASTReader::ReadStmt(llvm::BitstreamCursor &Cursor) { |