Author: gbiv Date: Thu Nov 10 14:43:52 2016 New Revision: 286500 URL: http://llvm.org/viewvc/llvm-project?rev=286500&view=rev Log: Clean up uses of unique_ptr for RAII objects. NFC.
- EnterExpressionEvaluationContext allows you to specify whether you *actually* want to enter an evaluation context. - For types that don't allow that, llvm::Optional<Foo> should do the same thing as std::unique_ptr<Foo>, but with 100% less heap allocations. Modified: cfe/trunk/lib/Parse/ParseDecl.cpp Modified: cfe/trunk/lib/Parse/ParseDecl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseDecl.cpp?rev=286500&r1=286499&r2=286500&view=diff ============================================================================== --- cfe/trunk/lib/Parse/ParseDecl.cpp (original) +++ cfe/trunk/lib/Parse/ParseDecl.cpp Thu Nov 10 14:43:52 2016 @@ -25,6 +25,7 @@ #include "clang/Sema/PrettyDeclStackTrace.h" #include "clang/Sema/Scope.h" #include "clang/Sema/SemaDiagnostic.h" +#include "llvm/ADT/Optional.h" #include "llvm/ADT/SmallSet.h" #include "llvm/ADT/SmallString.h" #include "llvm/ADT/StringSwitch.h" @@ -301,10 +302,10 @@ unsigned Parser::ParseAttributeArgsCommo // Parse the non-empty comma-separated list of expressions. do { - std::unique_ptr<EnterExpressionEvaluationContext> Unevaluated; - if (attributeParsedArgsUnevaluated(*AttrName)) - Unevaluated.reset( - new EnterExpressionEvaluationContext(Actions, Sema::Unevaluated)); + bool ShouldEnter = attributeParsedArgsUnevaluated(*AttrName); + EnterExpressionEvaluationContext Unevaluated( + Actions, Sema::Unevaluated, /*LambdaContextDecl=*/nullptr, + /*IsDecltype=*/false, ShouldEnter); ExprResult ArgExpr( Actions.CorrectDelayedTyposInExpr(ParseAssignmentExpression())); @@ -366,13 +367,13 @@ void Parser::ParseGNUAttributeArgs(Ident // These may refer to the function arguments, but need to be parsed early to // participate in determining whether it's a redeclaration. - std::unique_ptr<ParseScope> PrototypeScope; + llvm::Optional<ParseScope> PrototypeScope; if (normalizeAttrName(AttrName->getName()) == "enable_if" && D && D->isFunctionDeclarator()) { DeclaratorChunk::FunctionTypeInfo FTI = D->getFunctionTypeInfo(); - PrototypeScope.reset(new ParseScope(this, Scope::FunctionPrototypeScope | - Scope::FunctionDeclarationScope | - Scope::DeclScope)); + PrototypeScope.emplace(this, Scope::FunctionPrototypeScope | + Scope::FunctionDeclarationScope | + Scope::DeclScope); for (unsigned i = 0; i != FTI.NumParams; ++i) { ParmVarDecl *Param = cast<ParmVarDecl>(FTI.Params[i].Param); Actions.ActOnReenterCXXMethodParameter(getCurScope(), Param); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits