forked from OSchip/llvm-project
Codegen - silence static analyzer getAs<> null dereference warnings. NFCI.
The static analyzer is warning about potential null dereferences, but in these cases we should be able to use castAs<> directly and if not assert will fire for us. llvm-svn: 373918
This commit is contained in:
parent
b3342e180e
commit
7e38f0c408
|
@ -970,7 +970,7 @@ RValue CodeGenFunction::EmitAtomicExpr(AtomicExpr *E) {
|
|||
auto CastToGenericAddrSpace = [&](llvm::Value *V, QualType PT) {
|
||||
if (!E->isOpenCL())
|
||||
return V;
|
||||
auto AS = PT->getAs<PointerType>()->getPointeeType().getAddressSpace();
|
||||
auto AS = PT->castAs<PointerType>()->getPointeeType().getAddressSpace();
|
||||
if (AS == LangAS::opencl_generic)
|
||||
return V;
|
||||
auto DestAS = getContext().getTargetAddressSpace(LangAS::opencl_generic);
|
||||
|
|
|
@ -104,8 +104,8 @@ bool CodeGenModule::TryEmitBaseDestructorAsAlias(const CXXDestructorDecl *D) {
|
|||
// Give up if the calling conventions don't match. We could update the call,
|
||||
// but it is probably not worth it.
|
||||
const CXXDestructorDecl *BaseD = UniqueBase->getDestructor();
|
||||
if (BaseD->getType()->getAs<FunctionType>()->getCallConv() !=
|
||||
D->getType()->getAs<FunctionType>()->getCallConv())
|
||||
if (BaseD->getType()->castAs<FunctionType>()->getCallConv() !=
|
||||
D->getType()->castAs<FunctionType>()->getCallConv())
|
||||
return true;
|
||||
|
||||
GlobalDecl AliasDecl(D, Dtor_Base);
|
||||
|
|
|
@ -739,7 +739,7 @@ bool CodeGenFunction::IsConstructorDelegationValid(
|
|||
|
||||
// We also disable the optimization for variadic functions because
|
||||
// it's impossible to "re-pass" varargs.
|
||||
if (Ctor->getType()->getAs<FunctionProtoType>()->isVariadic())
|
||||
if (Ctor->getType()->castAs<FunctionProtoType>()->isVariadic())
|
||||
return false;
|
||||
|
||||
// FIXME: Decide if we can do a delegation of a delegating constructor.
|
||||
|
|
|
@ -1659,7 +1659,7 @@ void CGDebugInfo::CollectCXXMemberFunctions(
|
|||
if (!Method || Method->isImplicit() || Method->hasAttr<NoDebugAttr>())
|
||||
continue;
|
||||
|
||||
if (Method->getType()->getAs<FunctionProtoType>()->getContainedAutoType())
|
||||
if (Method->getType()->castAs<FunctionProtoType>()->getContainedAutoType())
|
||||
continue;
|
||||
|
||||
// Reuse the existing member function declaration if it exists.
|
||||
|
@ -4561,7 +4561,7 @@ void CGDebugInfo::EmitUsingDecl(const UsingDecl &UD) {
|
|||
// return type in the definition)
|
||||
if (const auto *FD = dyn_cast<FunctionDecl>(USD.getUnderlyingDecl()))
|
||||
if (const auto *AT =
|
||||
FD->getType()->getAs<FunctionProtoType>()->getContainedAutoType())
|
||||
FD->getType()->castAs<FunctionProtoType>()->getContainedAutoType())
|
||||
if (AT->getDeducedType().isNull())
|
||||
return;
|
||||
if (llvm::DINode *Target =
|
||||
|
|
|
@ -997,7 +997,7 @@ EmitComplexPrePostIncDec(const UnaryOperator *E, LValue LV,
|
|||
// Add the inc/dec to the real part.
|
||||
NextVal = Builder.CreateAdd(InVal.first, NextVal, isInc ? "inc" : "dec");
|
||||
} else {
|
||||
QualType ElemTy = E->getType()->getAs<ComplexType>()->getElementType();
|
||||
QualType ElemTy = E->getType()->castAs<ComplexType>()->getElementType();
|
||||
llvm::APFloat FVal(getContext().getFloatTypeSemantics(ElemTy), 1);
|
||||
if (!isInc)
|
||||
FVal.changeSign();
|
||||
|
@ -2194,7 +2194,7 @@ static void setObjCGCLValueClass(const ASTContext &Ctx, const Expr *E,
|
|||
// If ivar is a structure pointer, assigning to field of
|
||||
// this struct follows gcc's behavior and makes it a non-ivar
|
||||
// writer-barrier conservatively.
|
||||
ExpTy = ExpTy->getAs<PointerType>()->getPointeeType();
|
||||
ExpTy = ExpTy->castAs<PointerType>()->getPointeeType();
|
||||
if (ExpTy->isRecordType()) {
|
||||
LV.setObjCIvar(false);
|
||||
return;
|
||||
|
@ -2230,7 +2230,7 @@ static void setObjCGCLValueClass(const ASTContext &Ctx, const Expr *E,
|
|||
// a non-ivar write-barrier.
|
||||
QualType ExpTy = E->getType();
|
||||
if (ExpTy->isPointerType())
|
||||
ExpTy = ExpTy->getAs<PointerType>()->getPointeeType();
|
||||
ExpTy = ExpTy->castAs<PointerType>()->getPointeeType();
|
||||
if (ExpTy->isRecordType())
|
||||
LV.setObjCIvar(false);
|
||||
}
|
||||
|
|
|
@ -4040,7 +4040,7 @@ LValue CGObjCGNU::EmitObjCValueForIvar(CodeGenFunction &CGF,
|
|||
const ObjCIvarDecl *Ivar,
|
||||
unsigned CVRQualifiers) {
|
||||
const ObjCInterfaceDecl *ID =
|
||||
ObjectTy->getAs<ObjCObjectType>()->getInterface();
|
||||
ObjectTy->castAs<ObjCObjectType>()->getInterface();
|
||||
return EmitValueForIvarAtOffset(CGF, ID, BaseValue, Ivar, CVRQualifiers,
|
||||
EmitIvarOffset(CGF, ID, Ivar));
|
||||
}
|
||||
|
|
|
@ -1210,7 +1210,7 @@ static bool hasDefaultCXXMethodCC(ASTContext &Context,
|
|||
CallingConv ExpectedCallingConv = Context.getDefaultCallingConvention(
|
||||
/*IsVariadic=*/false, /*IsCXXMethod=*/true);
|
||||
CallingConv ActualCallingConv =
|
||||
MD->getType()->getAs<FunctionProtoType>()->getCallConv();
|
||||
MD->getType()->castAs<FunctionProtoType>()->getCallConv();
|
||||
return ExpectedCallingConv == ActualCallingConv;
|
||||
}
|
||||
|
||||
|
|
|
@ -9532,7 +9532,7 @@ ABIArgInfo RISCVABIInfo::classifyArgumentType(QualType Ty, bool IsFixed,
|
|||
// Complex types for the hard float ABI must be passed direct rather than
|
||||
// using CoerceAndExpand.
|
||||
if (IsFixed && Ty->isComplexType() && FLen && ArgFPRsLeft >= 2) {
|
||||
QualType EltTy = Ty->getAs<ComplexType>()->getElementType();
|
||||
QualType EltTy = Ty->castAs<ComplexType>()->getElementType();
|
||||
if (getContext().getTypeSize(EltTy) <= FLen) {
|
||||
ArgFPRsLeft -= 2;
|
||||
return ABIArgInfo::getDirect();
|
||||
|
|
Loading…
Reference in New Issue