Author: Sindhu Chittireddy Date: 2023-06-16T20:31:08-07:00 New Revision: c2888cddd5d98081fc82c51cb92be241144c6ffa
URL: https://github.com/llvm/llvm-project/commit/c2888cddd5d98081fc82c51cb92be241144c6ffa DIFF: https://github.com/llvm/llvm-project/commit/c2888cddd5d98081fc82c51cb92be241144c6ffa.diff LOG: [NFC] Fix potential dereferencing of null return value. Replace getAs with castAs and add assert if needed. Differential Revision: https://reviews.llvm.org/D152977 Added: Modified: clang/lib/AST/ASTContext.cpp clang/lib/Frontend/FrontendActions.cpp clang/lib/Sema/SemaType.cpp clang/lib/StaticAnalyzer/Checkers/CheckObjCDealloc.cpp clang/lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp Removed: ################################################################################ diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp index d12909aa1edcc..8fb62dd13361f 100644 --- a/clang/lib/AST/ASTContext.cpp +++ b/clang/lib/AST/ASTContext.cpp @@ -4141,8 +4141,8 @@ QualType ASTContext::getExtVectorType(QualType vecType, assert(vecType->isBuiltinType() || vecType->isDependentType() || (vecType->isBitIntType() && // Only support _BitInt elements with byte-sized power of 2 NumBits. - llvm::isPowerOf2_32(vecType->getAs<BitIntType>()->getNumBits()) && - vecType->getAs<BitIntType>()->getNumBits() >= 8)); + llvm::isPowerOf2_32(vecType->castAs<BitIntType>()->getNumBits()) && + vecType->castAs<BitIntType>()->getNumBits() >= 8)); // Check if we've already instantiated a vector of this type. llvm::FoldingSetNodeID ID; diff --git a/clang/lib/Frontend/FrontendActions.cpp b/clang/lib/Frontend/FrontendActions.cpp index f62a29c02ee13..a6846b9c95207 100644 --- a/clang/lib/Frontend/FrontendActions.cpp +++ b/clang/lib/Frontend/FrontendActions.cpp @@ -458,6 +458,8 @@ class DefaultTemplateInstCallback : public TemplateInstantiationCallback { return; } + assert(NamedCtx && "NamedCtx cannot be null"); + if (const auto *Decl = dyn_cast<ParmVarDecl>(NamedTemplate)) { OS << "unnamed function parameter " << Decl->getFunctionScopeIndex() << " "; diff --git a/clang/lib/Sema/SemaType.cpp b/clang/lib/Sema/SemaType.cpp index 32118a370b9b3..77a1ce866d5c7 100644 --- a/clang/lib/Sema/SemaType.cpp +++ b/clang/lib/Sema/SemaType.cpp @@ -2790,7 +2790,7 @@ QualType Sema::BuildExtVectorType(QualType T, Expr *ArraySize, // Only support _BitInt elements with byte-sized power of 2 NumBits. if (T->isBitIntType()) { - unsigned NumBits = T->getAs<BitIntType>()->getNumBits(); + unsigned NumBits = T->castAs<BitIntType>()->getNumBits(); if (!llvm::isPowerOf2_32(NumBits) || NumBits < 8) { Diag(AttrLoc, diag::err_attribute_invalid_bitint_vector_type) << (NumBits < 8); diff --git a/clang/lib/StaticAnalyzer/Checkers/CheckObjCDealloc.cpp b/clang/lib/StaticAnalyzer/Checkers/CheckObjCDealloc.cpp index 3fcf6f435a436..baf9618baccd4 100644 --- a/clang/lib/StaticAnalyzer/Checkers/CheckObjCDealloc.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/CheckObjCDealloc.cpp @@ -321,7 +321,9 @@ ObjCDeallocChecker::getInstanceSymbolFromIvarSymbol(SymbolRef IvarSym) const { if (!IvarRegion) return nullptr; - return IvarRegion->getSymbolicBase()->getSymbol(); + const SymbolicRegion *SR = IvarRegion->getSymbolicBase(); + assert(SR && "Symbolic base should not be nullptr"); + return SR->getSymbol(); } /// If we are in -dealloc or -dealloc is on the stack, handle the call if it is diff --git a/clang/lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp index 929bd6bc3eb39..fa8572cf85edf 100644 --- a/clang/lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp @@ -291,6 +291,7 @@ ProgramStateRef PthreadLockChecker::resolvePossiblyDestroyedMutex( // Existence in DestroyRetVal ensures existence in LockMap. // Existence in Destroyed also ensures that the lock state for lockR is either // UntouchedAndPossiblyDestroyed or UnlockedAndPossiblyDestroyed. + assert(lstate); assert(lstate->isUntouchedAndPossiblyDestroyed() || lstate->isUnlockedAndPossiblyDestroyed()); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits