diff --git a/clang/include/clang/Analysis/Analyses/PostOrderCFGView.h b/clang/include/clang/Analysis/Analyses/PostOrderCFGView.h index 0b306d14be4d8..8964481ee66c5 100644 --- a/clang/include/clang/Analysis/Analyses/PostOrderCFGView.h +++ b/clang/include/clang/Analysis/Analyses/PostOrderCFGView.h @@ -54,11 +54,12 @@ class PostOrderCFGView : public ManagedAnalysis { // occasionally hand out null pointers for pruned edges, so we catch those // here. if (!Block) - return std::make_pair(None, false); // if an edge is trivially false. + return std::make_pair(std::nullopt, + false); // if an edge is trivially false. if (VisitedBlockIDs.test(Block->getBlockID())) - return std::make_pair(None, false); + return std::make_pair(std::nullopt, false); VisitedBlockIDs.set(Block->getBlockID()); - return std::make_pair(None, true); + return std::make_pair(std::nullopt, true); } /// Check if the bit for a CFGBlock has been already set. diff --git a/clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h b/clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h index 48593516d8534..385cd02f882c0 100644 --- a/clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h +++ b/clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h @@ -1464,7 +1464,7 @@ class Return : public Terminator { static bool classof(const SExpr *E) { return E->opcode() == COP_Return; } /// Return an empty list. - ArrayRef successors() { return None; } + ArrayRef successors() { return std::nullopt; } SExpr *returnValue() { return Retval; } const SExpr *returnValue() const { return Retval; } @@ -1490,7 +1490,7 @@ inline ArrayRef Terminator::successors() { case COP_Branch: return cast(this)->successors(); case COP_Return: return cast(this)->successors(); default: - return None; + return std::nullopt; } } diff --git a/clang/include/clang/Analysis/AnyCall.h b/clang/include/clang/Analysis/AnyCall.h index 6e5e019ce2632..876d423a21f2d 100644 --- a/clang/include/clang/Analysis/AnyCall.h +++ b/clang/include/clang/Analysis/AnyCall.h @@ -123,7 +123,7 @@ class AnyCall { } else if (const auto *CXCIE = dyn_cast(E)) { return AnyCall(CXCIE); } else { - return None; + return std::nullopt; } } @@ -136,13 +136,13 @@ class AnyCall { } else if (const auto *MD = dyn_cast(D)) { return AnyCall(MD); } - return None; + return std::nullopt; } /// \returns formal parameters for direct calls (including virtual calls) ArrayRef parameters() const { if (!D) - return None; + return std::nullopt; if (const auto *FD = dyn_cast(D)) { return FD->parameters(); @@ -151,7 +151,7 @@ class AnyCall { } else if (const auto *BD = dyn_cast(D)) { return BD->parameters(); } else { - return None; + return std::nullopt; } } diff --git a/clang/include/clang/Analysis/CFG.h b/clang/include/clang/Analysis/CFG.h index f3e005b890662..ecf5906fa1dca 100644 --- a/clang/include/clang/Analysis/CFG.h +++ b/clang/include/clang/Analysis/CFG.h @@ -108,7 +108,7 @@ class CFGElement { template Optional getAs() const { if (!T::isKind(*this)) - return None; + return std::nullopt; T t; CFGElement& e = t; e = *this; diff --git a/clang/include/clang/Analysis/ProgramPoint.h b/clang/include/clang/Analysis/ProgramPoint.h index 680713a52f2f0..81a1288f61c7b 100644 --- a/clang/include/clang/Analysis/ProgramPoint.h +++ b/clang/include/clang/Analysis/ProgramPoint.h @@ -149,7 +149,7 @@ class ProgramPoint { template Optional getAs() const { if (!T::isKind(*this)) - return None; + return std::nullopt; T t; ProgramPoint& PP = t; PP = *this; diff --git a/clang/lib/Analysis/BodyFarm.cpp b/clang/lib/Analysis/BodyFarm.cpp index 38f100ae0a4fc..b242008865cc4 100644 --- a/clang/lib/Analysis/BodyFarm.cpp +++ b/clang/lib/Analysis/BodyFarm.cpp @@ -541,7 +541,7 @@ static Stmt *create_dispatch_once(ASTContext &C, const FunctionDecl *D) { CallExpr *CE = CallExpr::Create( /*ASTContext=*/C, /*StmtClass=*/M.makeLvalueToRvalue(/*Expr=*/Block), - /*Args=*/None, + /*Args=*/std::nullopt, /*QualType=*/C.VoidTy, /*ExprValueType=*/VK_PRValue, /*SourceLocation=*/SourceLocation(), FPOptionsOverride()); @@ -609,7 +609,7 @@ static Stmt *create_dispatch_sync(ASTContext &C, const FunctionDecl *D) { ASTMaker M(C); DeclRefExpr *DR = M.makeDeclRefExpr(PV); ImplicitCastExpr *ICE = M.makeLvalueToRvalue(DR, Ty); - CallExpr *CE = CallExpr::Create(C, ICE, None, C.VoidTy, VK_PRValue, + CallExpr *CE = CallExpr::Create(C, ICE, std::nullopt, C.VoidTy, VK_PRValue, SourceLocation(), FPOptionsOverride()); return CE; } diff --git a/clang/lib/Analysis/CFG.cpp b/clang/lib/Analysis/CFG.cpp index 233af415b71e0..c3b774fafadfb 100644 --- a/clang/lib/Analysis/CFG.cpp +++ b/clang/lib/Analysis/CFG.cpp @@ -1044,14 +1044,14 @@ class CFGBuilder { return llvm::APInt(Context->getTypeSize(Context->IntTy), !Value); default: assert(false && "Unexpected unary operator!"); - return llvm::None; + return std::nullopt; } } } else if (const auto *IntLiteral = dyn_cast(E->IgnoreParens())) return IntLiteral->getValue(); - return llvm::None; + return std::nullopt; } TryResult analyzeLogicOperatorCondition(BinaryOperatorKind Relation, diff --git a/clang/lib/Analysis/CalledOnceCheck.cpp b/clang/lib/Analysis/CalledOnceCheck.cpp index ce760d22405e6..705a736861986 100644 --- a/clang/lib/Analysis/CalledOnceCheck.cpp +++ b/clang/lib/Analysis/CalledOnceCheck.cpp @@ -513,7 +513,7 @@ class NotCalledClarifier if (const Stmt *Terminator = Conditional->getTerminatorStmt()) { return NotCalledClarifier{Conditional, SuccWithoutCall}.Visit(Terminator); } - return llvm::None; + return std::nullopt; } llvm::Optional VisitIfStmt(const IfStmt *If) { @@ -563,7 +563,7 @@ class NotCalledClarifier llvm::Optional VisitBinaryOperator(const BinaryOperator *) { // We don't want to report on short-curcuit logical operations. - return llvm::None; + return std::nullopt; } llvm::Optional VisitStmt(const Stmt *Terminator) { @@ -1008,7 +1008,7 @@ class CalledOnceChecker : public ConstStmtVisitor { return A->getCompletionHandlerIndex().getASTIndex() == ParamIndex; } - return llvm::None; + return std::nullopt; } /// Return true if the specified selector represents init method. @@ -1644,7 +1644,7 @@ class CalledOnceChecker : public ConstStmtVisitor { return getIndex(*Parameter); } - return llvm::None; + return std::nullopt; } llvm::Optional getIndex(const ParmVarDecl &Parameter) const { @@ -1662,7 +1662,7 @@ class CalledOnceChecker : public ConstStmtVisitor { return It - TrackedParams.begin(); } - return llvm::None; + return std::nullopt; } const ParmVarDecl *getParameter(unsigned Index) const { diff --git a/clang/lib/Analysis/FlowSensitive/Models/UncheckedOptionalAccessModel.cpp b/clang/lib/Analysis/FlowSensitive/Models/UncheckedOptionalAccessModel.cpp index 1a41cfaa5fa13..2ae6cd16f2d11 100644 --- a/clang/lib/Analysis/FlowSensitive/Models/UncheckedOptionalAccessModel.cpp +++ b/clang/lib/Analysis/FlowSensitive/Models/UncheckedOptionalAccessModel.cpp @@ -56,7 +56,7 @@ auto hasOptionalType() { return hasType(optionalOrAliasType()); } auto isOptionalMemberCallWithName( llvm::StringRef MemberName, - llvm::Optional Ignorable = llvm::None) { + llvm::Optional Ignorable = std::nullopt) { auto Exception = unless(Ignorable ? expr(anyOf(*Ignorable, cxxThisExpr())) : cxxThisExpr()); return cxxMemberCallExpr( @@ -66,7 +66,7 @@ auto isOptionalMemberCallWithName( auto isOptionalOperatorCallWithName( llvm::StringRef operator_name, - llvm::Optional Ignorable = llvm::None) { + llvm::Optional Ignorable = std::nullopt) { return cxxOperatorCallExpr( hasOverloadedOperatorName(operator_name), callee(cxxMethodDecl(ofClass(optionalClass()))), @@ -540,7 +540,7 @@ ignorableOptional(const UncheckedOptionalAccessModelOptions &Options) { cxxOperatorCallExpr(anyOf(hasOverloadedOperatorName("->"), hasOverloadedOperatorName("*")), unless(hasArgument(0, expr(hasOptionalType()))))))); - return llvm::None; + return std::nullopt; } StatementMatcher diff --git a/clang/lib/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.cpp b/clang/lib/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.cpp index 04d6de3b6c6d5..8f0df9e51c093 100644 --- a/clang/lib/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.cpp +++ b/clang/lib/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.cpp @@ -414,7 +414,7 @@ runTypeErasedDataflowAnalysis( ForwardDataflowWorklist Worklist(CFCtx.getCFG(), &POV); std::vector> BlockStates( - CFCtx.getCFG().size(), llvm::None); + CFCtx.getCFG().size(), std::nullopt); // The entry basic block doesn't contain statements so it can be skipped. const CFGBlock &Entry = CFCtx.getCFG().getEntry(); diff --git a/clang/lib/Analysis/MacroExpansionContext.cpp b/clang/lib/Analysis/MacroExpansionContext.cpp index 290510691891c..489cdfcbbc043 100644 --- a/clang/lib/Analysis/MacroExpansionContext.cpp +++ b/clang/lib/Analysis/MacroExpansionContext.cpp @@ -99,11 +99,11 @@ void MacroExpansionContext::registerForPreprocessor(Preprocessor &NewPP) { Optional MacroExpansionContext::getExpandedText(SourceLocation MacroExpansionLoc) const { if (MacroExpansionLoc.isMacroID()) - return llvm::None; + return std::nullopt; // If there was no macro expansion at that location, return None. if (ExpansionRanges.find_as(MacroExpansionLoc) == ExpansionRanges.end()) - return llvm::None; + return std::nullopt; // There was macro expansion, but resulted in no tokens, return empty string. const auto It = ExpandedTokens.find_as(MacroExpansionLoc); @@ -117,11 +117,11 @@ MacroExpansionContext::getExpandedText(SourceLocation MacroExpansionLoc) const { Optional MacroExpansionContext::getOriginalText(SourceLocation MacroExpansionLoc) const { if (MacroExpansionLoc.isMacroID()) - return llvm::None; + return std::nullopt; const auto It = ExpansionRanges.find_as(MacroExpansionLoc); if (It == ExpansionRanges.end()) - return llvm::None; + return std::nullopt; assert(It->getFirst() != It->getSecond() && "Every macro expansion must cover a non-empty range."); diff --git a/clang/lib/Analysis/PathDiagnostic.cpp b/clang/lib/Analysis/PathDiagnostic.cpp index bb5f116d69405..c6303ccc2666d 100644 --- a/clang/lib/Analysis/PathDiagnostic.cpp +++ b/clang/lib/Analysis/PathDiagnostic.cpp @@ -239,7 +239,7 @@ compareControlFlow(const PathDiagnosticControlFlowPiece &X, FullSourceLoc YEL = Y.getEndLocation().asLocation(); if (XEL != YEL) return XEL.isBeforeInTranslationUnitThan(YEL); - return None; + return std::nullopt; } static Optional compareMacro(const PathDiagnosticMacroPiece &X, @@ -305,7 +305,7 @@ static Optional comparePiece(const PathDiagnosticPiece &X, case PathDiagnosticPiece::Event: case PathDiagnosticPiece::Note: case PathDiagnosticPiece::PopUp: - return None; + return std::nullopt; } llvm_unreachable("all cases handled"); } @@ -323,7 +323,7 @@ static Optional comparePath(const PathPieces &X, const PathPieces &Y) { return b.value(); } - return None; + return std::nullopt; } static bool compareCrossTUSourceLocs(FullSourceLoc XL, FullSourceLoc YL) { @@ -367,7 +367,7 @@ static bool compare(const PathDiagnostic &X, const PathDiagnostic &Y) { return X.getShortDescription() < Y.getShortDescription(); auto CompareDecls = [&XL](const Decl *D1, const Decl *D2) -> Optional { if (D1 == D2) - return None; + return std::nullopt; if (!D1) return true; if (!D2) @@ -379,7 +379,7 @@ static bool compare(const PathDiagnostic &X, const PathDiagnostic &Y) { return compareCrossTUSourceLocs(FullSourceLoc(D1L, SM), FullSourceLoc(D2L, SM)); } - return None; + return std::nullopt; }; if (auto Result = CompareDecls(X.getDeclWithIssue(), Y.getDeclWithIssue())) return *Result; diff --git a/clang/lib/Analysis/RetainSummaryManager.cpp b/clang/lib/Analysis/RetainSummaryManager.cpp index 143c037dda9f6..f17ad9100ce44 100644 --- a/clang/lib/Analysis/RetainSummaryManager.cpp +++ b/clang/lib/Analysis/RetainSummaryManager.cpp @@ -71,7 +71,7 @@ Optional RetainSummaryManager::hasAnyEnabledAttrOf(const Decl *D, if (isOneOf()) { if (!TrackObjCAndCFObjects) - return None; + return std::nullopt; K = ObjKind::CF; } else if (isOneOf RetainSummaryManager::hasAnyEnabledAttrOf(const Decl *D, NSReturnsNotRetainedAttr, NSConsumesSelfAttr>()) { if (!TrackObjCAndCFObjects) - return None; + return std::nullopt; if (isOneOf() && !cocoa::isCocoaObjectRef(QT)) - return None; + return std::nullopt; K = ObjKind::ObjC; } else if (isOneOf()) { if (!TrackOSObjects) - return None; + return std::nullopt; K = ObjKind::OS; } else if (isOneOf RetainSummaryManager::hasAnyEnabledAttrOf(const Decl *D, } if (D->hasAttr()) return K; - return None; + return std::nullopt; } template @@ -724,7 +724,7 @@ RetainSummaryManager::canEval(const CallExpr *CE, const FunctionDecl *FD, IdentifierInfo *II = FD->getIdentifier(); if (!II) - return None; + return std::nullopt; StringRef FName = II->getName(); FName = FName.substr(FName.find_first_not_of('_')); @@ -741,7 +741,7 @@ RetainSummaryManager::canEval(const CallExpr *CE, const FunctionDecl *FD, FName == "CMBufferQueueDequeueIfDataReadyAndRetain") { // Part of: . // These are not retain. They just return something and retain it. - return None; + return std::nullopt; } if (CE->getNumArgs() == 1 && (cocoa::isRefType(ResultTy, "CF", FName) || @@ -781,7 +781,7 @@ RetainSummaryManager::canEval(const CallExpr *CE, const FunctionDecl *FD, return BehaviorSummary::NoOp; } - return None; + return std::nullopt; } const RetainSummary * @@ -885,7 +885,7 @@ RetainSummaryManager::getRetEffectFromAnnotations(QualType RetTy, if (auto RE = getRetEffectFromAnnotations(RetTy, PD)) return RE; - return None; + return std::nullopt; } /// \return Whether the chain of typedefs starting from @c QT diff --git a/clang/lib/Analysis/UninitializedValues.cpp b/clang/lib/Analysis/UninitializedValues.cpp index 8f9230c5805c6..566886248bb77 100644 --- a/clang/lib/Analysis/UninitializedValues.cpp +++ b/clang/lib/Analysis/UninitializedValues.cpp @@ -90,7 +90,7 @@ void DeclToIndex::computeMap(const DeclContext &dc) { Optional DeclToIndex::getValueIndex(const VarDecl *d) const { llvm::DenseMap::const_iterator I = map.find(d); if (I == map.end()) - return None; + return std::nullopt; return I->second; }