forked from OSchip/llvm-project
ItaniumCXXABI - silence static analyzer getAs<RecordType> null dereference warnings. NFCI.
The static analyzer is warning about potential null dereferences, but we should be able to use castAs<RecordType> directly and if not assert will fire for us. llvm-svn: 373525
This commit is contained in:
parent
c5d2746fbe
commit
f2805470e6
|
@ -580,8 +580,8 @@ CGCallee ItaniumCXXABI::EmitLoadOfMemberFunctionPointer(
|
|||
|
||||
const FunctionProtoType *FPT =
|
||||
MPT->getPointeeType()->getAs<FunctionProtoType>();
|
||||
const CXXRecordDecl *RD =
|
||||
cast<CXXRecordDecl>(MPT->getClass()->getAs<RecordType>()->getDecl());
|
||||
auto *RD =
|
||||
cast<CXXRecordDecl>(MPT->getClass()->castAs<RecordType>()->getDecl());
|
||||
|
||||
llvm::FunctionType *FTy = CGM.getTypes().GetFunctionType(
|
||||
CGM.getTypes().arrangeCXXMethodType(RD, FPT, /*FD=*/nullptr));
|
||||
|
@ -1143,7 +1143,7 @@ void ItaniumCXXABI::emitVirtualObjectDelete(CodeGenFunction &CGF,
|
|||
|
||||
// Grab the vtable pointer as an intptr_t*.
|
||||
auto *ClassDecl =
|
||||
cast<CXXRecordDecl>(ElementType->getAs<RecordType>()->getDecl());
|
||||
cast<CXXRecordDecl>(ElementType->castAs<RecordType>()->getDecl());
|
||||
llvm::Value *VTable =
|
||||
CGF.GetVTablePtr(Ptr, CGF.IntPtrTy->getPointerTo(), ClassDecl);
|
||||
|
||||
|
@ -1346,7 +1346,7 @@ llvm::Value *ItaniumCXXABI::EmitTypeid(CodeGenFunction &CGF,
|
|||
Address ThisPtr,
|
||||
llvm::Type *StdTypeInfoPtrTy) {
|
||||
auto *ClassDecl =
|
||||
cast<CXXRecordDecl>(SrcRecordTy->getAs<RecordType>()->getDecl());
|
||||
cast<CXXRecordDecl>(SrcRecordTy->castAs<RecordType>()->getDecl());
|
||||
llvm::Value *Value =
|
||||
CGF.GetVTablePtr(ThisPtr, StdTypeInfoPtrTy->getPointerTo(), ClassDecl);
|
||||
|
||||
|
@ -1412,7 +1412,7 @@ llvm::Value *ItaniumCXXABI::EmitDynamicCastToVoid(CodeGenFunction &CGF,
|
|||
llvm::Type *DestLTy = CGF.ConvertType(DestTy);
|
||||
|
||||
auto *ClassDecl =
|
||||
cast<CXXRecordDecl>(SrcRecordTy->getAs<RecordType>()->getDecl());
|
||||
cast<CXXRecordDecl>(SrcRecordTy->castAs<RecordType>()->getDecl());
|
||||
// Get the vtable pointer.
|
||||
llvm::Value *VTable = CGF.GetVTablePtr(ThisAddr, PtrDiffLTy->getPointerTo(),
|
||||
ClassDecl);
|
||||
|
@ -3100,8 +3100,8 @@ static bool CanUseSingleInheritance(const CXXRecordDecl *RD) {
|
|||
return false;
|
||||
|
||||
// Check that the class is dynamic iff the base is.
|
||||
const CXXRecordDecl *BaseDecl =
|
||||
cast<CXXRecordDecl>(Base->getType()->getAs<RecordType>()->getDecl());
|
||||
auto *BaseDecl =
|
||||
cast<CXXRecordDecl>(Base->getType()->castAs<RecordType>()->getDecl());
|
||||
if (!BaseDecl->isEmpty() &&
|
||||
BaseDecl->isDynamicClass() != RD->isDynamicClass())
|
||||
return false;
|
||||
|
@ -3564,8 +3564,8 @@ static unsigned ComputeVMIClassTypeInfoFlags(const CXXBaseSpecifier *Base,
|
|||
|
||||
unsigned Flags = 0;
|
||||
|
||||
const CXXRecordDecl *BaseDecl =
|
||||
cast<CXXRecordDecl>(Base->getType()->getAs<RecordType>()->getDecl());
|
||||
auto *BaseDecl =
|
||||
cast<CXXRecordDecl>(Base->getType()->castAs<RecordType>()->getDecl());
|
||||
|
||||
if (Base->isVirtual()) {
|
||||
// Mark the virtual base as seen.
|
||||
|
@ -3663,8 +3663,8 @@ void ItaniumRTTIBuilder::BuildVMIClassTypeInfo(const CXXRecordDecl *RD) {
|
|||
// The __base_type member points to the RTTI for the base type.
|
||||
Fields.push_back(ItaniumRTTIBuilder(CXXABI).BuildTypeInfo(Base.getType()));
|
||||
|
||||
const CXXRecordDecl *BaseDecl =
|
||||
cast<CXXRecordDecl>(Base.getType()->getAs<RecordType>()->getDecl());
|
||||
auto *BaseDecl =
|
||||
cast<CXXRecordDecl>(Base.getType()->castAs<RecordType>()->getDecl());
|
||||
|
||||
int64_t OffsetFlags = 0;
|
||||
|
||||
|
|
Loading…
Reference in New Issue