Index: lib/AST/DeclObjC.cpp =================================================================== --- lib/AST/DeclObjC.cpp +++ lib/AST/DeclObjC.cpp @@ -1577,8 +1577,10 @@ data().IvarList = layout[0].Ivar; Ix++; curIvar = data().IvarList; } - for ( ; Ix != EIx; curIvar = layout[Ix].Ivar, Ix++) + for ( ; Ix != EIx; curIvar = layout[Ix].Ivar, Ix++) { + assert(curIvar && "instance variable is NULL, stop iterating through layout"); curIvar->setNextIvar(layout[Ix].Ivar); + } } } } Index: lib/Format/AffectedRangeManager.cpp =================================================================== --- lib/Format/AffectedRangeManager.cpp +++ lib/Format/AffectedRangeManager.cpp @@ -100,12 +100,15 @@ bool AffectedRangeManager::nonPPLineAffected( AnnotatedLine *Line, const AnnotatedLine *PreviousLine) { + assert(Line && "does not contain any line"); + bool SomeLineAffected = false; Line->ChildrenAffected = computeAffectedLines(Line->Children.begin(), Line->Children.end()); if (Line->ChildrenAffected) SomeLineAffected = true; + assert(Line->First && "does not have a first token"); // Stores whether one of the line's tokens is directly affected. bool SomeTokenAffected = false; // Stores whether we need to look at the leading newlines of the next token Index: lib/Frontend/CompilerInstance.cpp =================================================================== --- lib/Frontend/CompilerInstance.cpp +++ lib/Frontend/CompilerInstance.cpp @@ -742,7 +742,7 @@ // Figure out where to get and map in the main file. if (InputFile != "-") { - const FileEntry *File; + const FileEntry *File = nullptr; if (Opts.FindPchSource.empty()) { File = FileMgr.getFile(InputFile, /*OpenFile=*/true); } else { @@ -760,13 +760,14 @@ SmallVector, 16> Includers; Includers.push_back(std::make_pair(FindFile, FindFile->getDir())); - File = HS->LookupFile(InputFile, SourceLocation(), /*isAngled=*/false, - /*FromDir=*/nullptr, - /*CurDir=*/UnusedCurDir, Includers, - /*SearchPath=*/nullptr, - /*RelativePath=*/nullptr, - /*RequestingModule=*/nullptr, - /*SuggestedModule=*/nullptr, /*SkipCache=*/true); + if (HS) + File = HS->LookupFile(InputFile, SourceLocation(), /*isAngled=*/false, + /*FromDir=*/nullptr, + /*CurDir=*/UnusedCurDir, Includers, + /*SearchPath=*/nullptr, + /*RelativePath=*/nullptr, + /*RequestingModule=*/nullptr, + /*SuggestedModule=*/nullptr, /*SkipCache=*/true); // Also add the header to /showIncludes output. if (File) DepOpts.ShowIncludesPretendHeader = File->getName(); Index: lib/Sema/SemaExprCXX.cpp =================================================================== --- lib/Sema/SemaExprCXX.cpp +++ lib/Sema/SemaExprCXX.cpp @@ -398,8 +398,10 @@ SourceLocation TypeidLoc, Expr *E, SourceLocation RParenLoc) { + assert(E && "expression operand is NULL, cannot build C++ typeid expression"); + bool WasEvaluated = false; - if (E && !E->isTypeDependent()) { + if (!E->isTypeDependent()) { if (E->getType()->isPlaceholderType()) { ExprResult result = CheckPlaceholderExpr(E); if (result.isInvalid()) return ExprError(); Index: lib/Sema/SemaLookup.cpp =================================================================== --- lib/Sema/SemaLookup.cpp +++ lib/Sema/SemaLookup.cpp @@ -3744,6 +3744,7 @@ bool AnyVisibleDecls = !NewDecls.empty(); for (/**/; DI != DE; ++DI) { + assert(*DI && "TypoCorrection iterator cannot be NULL"); NamedDecl *VisibleDecl = *DI; if (!LookupResult::isVisible(SemaRef, *DI)) VisibleDecl = findAcceptableDecl(SemaRef, *DI); Index: lib/StaticAnalyzer/Core/PlistDiagnostics.cpp =================================================================== --- lib/StaticAnalyzer/Core/PlistDiagnostics.cpp +++ lib/StaticAnalyzer/Core/PlistDiagnostics.cpp @@ -297,6 +297,7 @@ if (!Diags.empty()) SM = &Diags.front()->path.front()->getLocation().getManager(); + assert(SM && "SourceManager is NULL, cannot iterate through the diagnostics"); for (std::vector::iterator DI = Diags.begin(), DE = Diags.end(); DI != DE; ++DI) {