Author: smanna12 Date: 2024-07-31T17:36:21-05:00 New Revision: cf79aba99db4909437b8977a59c51bc8899ddb9c
URL: https://github.com/llvm/llvm-project/commit/cf79aba99db4909437b8977a59c51bc8899ddb9c DIFF: https://github.com/llvm/llvm-project/commit/cf79aba99db4909437b8977a59c51bc8899ddb9c.diff LOG: [Clang] [NFC] Fix potential dereferencing of nullptr (#101405) This patch replaces getAs with castAs and dyn_cast with cast to ensure type safety and prevents potential null pointer dereferences. These changes enforce compile-time checks for correct type casting in ASTContext and CodeGenModule. Added: Modified: clang/lib/AST/ASTContext.cpp clang/lib/CodeGen/CodeGenModule.cpp Removed: ################################################################################ diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp index a465cdfcf3c89..b0cc7cb826f97 100644 --- a/clang/lib/AST/ASTContext.cpp +++ b/clang/lib/AST/ASTContext.cpp @@ -3283,7 +3283,7 @@ static void encodeTypeForFunctionPointerAuth(const ASTContext &Ctx, return; case Type::Builtin: { - const auto *BTy = T->getAs<BuiltinType>(); + const auto *BTy = T->castAs<BuiltinType>(); switch (BTy->getKind()) { #define SIGNED_TYPE(Id, SingletonId) \ case BuiltinType::Id: \ @@ -3366,7 +3366,7 @@ static void encodeTypeForFunctionPointerAuth(const ASTContext &Ctx, llvm_unreachable("should never get here"); } case Type::Record: { - const RecordDecl *RD = T->getAs<RecordType>()->getDecl(); + const RecordDecl *RD = T->castAs<RecordType>()->getDecl(); const IdentifierInfo *II = RD->getIdentifier(); // In C++, an immediate typedef of an anonymous struct or union diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index 344a0e538f22a..760185d4d51ff 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -5659,7 +5659,7 @@ void CodeGenModule::EmitExternalFunctionDeclaration(const FunctionDecl *FD) { if (getCodeGenOpts().hasReducedDebugInfo()) { auto *Ty = getTypes().ConvertType(FD->getType()); StringRef MangledName = getMangledName(FD); - auto *Fn = dyn_cast<llvm::Function>( + auto *Fn = cast<llvm::Function>( GetOrCreateLLVMFunction(MangledName, Ty, FD, /* ForVTable */ false)); if (!Fn->getSubprogram()) DI->EmitFunctionDecl(FD, FD->getLocation(), FD->getType(), Fn); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits