forked from OSchip/llvm-project
ASTContext - silence static analyzer getAs<> null dereference warnings. NFCI.
The static analyzer is warning about potential null dereferences, but we should be able to use castAs<> directly and if not assert will fire for us. llvm-svn: 373447
This commit is contained in:
parent
c9b5ab8b1c
commit
eed4b122ef
|
@ -2443,7 +2443,7 @@ structHasUniqueObjectRepresentations(const ASTContext &Context,
|
|||
// have tail padding, so just make sure there isn't an error.
|
||||
if (!isStructEmpty(Base.getType())) {
|
||||
llvm::Optional<int64_t> Size = structHasUniqueObjectRepresentations(
|
||||
Context, Base.getType()->getAs<RecordType>()->getDecl());
|
||||
Context, Base.getType()->castAs<RecordType>()->getDecl());
|
||||
if (!Size)
|
||||
return llvm::None;
|
||||
Bases.emplace_back(Base.getType(), Size.getValue());
|
||||
|
@ -2534,7 +2534,7 @@ bool ASTContext::hasUniqueObjectRepresentations(QualType Ty) const {
|
|||
}
|
||||
|
||||
if (Ty->isRecordType()) {
|
||||
const RecordDecl *Record = Ty->getAs<RecordType>()->getDecl();
|
||||
const RecordDecl *Record = Ty->castAs<RecordType>()->getDecl();
|
||||
|
||||
if (Record->isInvalidDecl())
|
||||
return false;
|
||||
|
@ -5679,7 +5679,7 @@ static FloatingRank getFloatingRank(QualType T) {
|
|||
return getFloatingRank(CT->getElementType());
|
||||
|
||||
assert(T->getAs<BuiltinType>() && "getFloatingRank(): not a floating type");
|
||||
switch (T->getAs<BuiltinType>()->getKind()) {
|
||||
switch (T->castAs<BuiltinType>()->getKind()) {
|
||||
default: llvm_unreachable("getFloatingRank(): not a floating type");
|
||||
case BuiltinType::Float16: return Float16Rank;
|
||||
case BuiltinType::Half: return HalfRank;
|
||||
|
@ -6317,14 +6317,14 @@ std::string ASTContext::getObjCEncodingForBlock(const BlockExpr *Expr) const {
|
|||
|
||||
const BlockDecl *Decl = Expr->getBlockDecl();
|
||||
QualType BlockTy =
|
||||
Expr->getType()->getAs<BlockPointerType>()->getPointeeType();
|
||||
Expr->getType()->castAs<BlockPointerType>()->getPointeeType();
|
||||
QualType BlockReturnTy = BlockTy->castAs<FunctionType>()->getReturnType();
|
||||
// Encode result type.
|
||||
if (getLangOpts().EncodeExtendedBlockSig)
|
||||
getObjCEncodingForMethodParameter(
|
||||
Decl::OBJC_TQ_None, BlockTy->getAs<FunctionType>()->getReturnType(), S,
|
||||
true /*Extended*/);
|
||||
getObjCEncodingForMethodParameter(Decl::OBJC_TQ_None, BlockReturnTy, S,
|
||||
true /*Extended*/);
|
||||
else
|
||||
getObjCEncodingForType(BlockTy->getAs<FunctionType>()->getReturnType(), S);
|
||||
getObjCEncodingForType(BlockReturnTy, S);
|
||||
// Compute size of all parameters.
|
||||
// Start with computing size of a pointer in number of bytes.
|
||||
// FIXME: There might(should) be a better way of doing this computation!
|
||||
|
@ -7907,7 +7907,7 @@ Qualifiers::GC ASTContext::getObjCGCAttrKind(QualType Ty) const {
|
|||
if (Ty->isObjCObjectPointerType() || Ty->isBlockPointerType())
|
||||
return Qualifiers::Strong;
|
||||
else if (Ty->isPointerType())
|
||||
return getObjCGCAttrKind(Ty->getAs<PointerType>()->getPointeeType());
|
||||
return getObjCGCAttrKind(Ty->castAs<PointerType>()->getPointeeType());
|
||||
} else {
|
||||
// It's not valid to set GC attributes on anything that isn't a
|
||||
// pointer.
|
||||
|
@ -7944,8 +7944,8 @@ bool ASTContext::areCompatibleVectorTypes(QualType FirstVec,
|
|||
|
||||
// Treat Neon vector types and most AltiVec vector types as if they are the
|
||||
// equivalent GCC vector types.
|
||||
const auto *First = FirstVec->getAs<VectorType>();
|
||||
const auto *Second = SecondVec->getAs<VectorType>();
|
||||
const auto *First = FirstVec->castAs<VectorType>();
|
||||
const auto *Second = SecondVec->castAs<VectorType>();
|
||||
if (First->getNumElements() == Second->getNumElements() &&
|
||||
hasSameType(First->getElementType(), Second->getElementType()) &&
|
||||
First->getVectorKind() != VectorType::AltiVecPixel &&
|
||||
|
@ -8955,8 +8955,8 @@ QualType ASTContext::mergeTypes(QualType LHS, QualType RHS,
|
|||
case Type::Pointer:
|
||||
{
|
||||
// Merge two pointer types, while trying to preserve typedef info
|
||||
QualType LHSPointee = LHS->getAs<PointerType>()->getPointeeType();
|
||||
QualType RHSPointee = RHS->getAs<PointerType>()->getPointeeType();
|
||||
QualType LHSPointee = LHS->castAs<PointerType>()->getPointeeType();
|
||||
QualType RHSPointee = RHS->castAs<PointerType>()->getPointeeType();
|
||||
if (Unqualified) {
|
||||
LHSPointee = LHSPointee.getUnqualifiedType();
|
||||
RHSPointee = RHSPointee.getUnqualifiedType();
|
||||
|
@ -8974,8 +8974,8 @@ QualType ASTContext::mergeTypes(QualType LHS, QualType RHS,
|
|||
case Type::BlockPointer:
|
||||
{
|
||||
// Merge two block pointer types, while trying to preserve typedef info
|
||||
QualType LHSPointee = LHS->getAs<BlockPointerType>()->getPointeeType();
|
||||
QualType RHSPointee = RHS->getAs<BlockPointerType>()->getPointeeType();
|
||||
QualType LHSPointee = LHS->castAs<BlockPointerType>()->getPointeeType();
|
||||
QualType RHSPointee = RHS->castAs<BlockPointerType>()->getPointeeType();
|
||||
if (Unqualified) {
|
||||
LHSPointee = LHSPointee.getUnqualifiedType();
|
||||
RHSPointee = RHSPointee.getUnqualifiedType();
|
||||
|
@ -9007,8 +9007,8 @@ QualType ASTContext::mergeTypes(QualType LHS, QualType RHS,
|
|||
case Type::Atomic:
|
||||
{
|
||||
// Merge two pointer types, while trying to preserve typedef info
|
||||
QualType LHSValue = LHS->getAs<AtomicType>()->getValueType();
|
||||
QualType RHSValue = RHS->getAs<AtomicType>()->getValueType();
|
||||
QualType LHSValue = LHS->castAs<AtomicType>()->getValueType();
|
||||
QualType RHSValue = RHS->castAs<AtomicType>()->getValueType();
|
||||
if (Unqualified) {
|
||||
LHSValue = LHSValue.getUnqualifiedType();
|
||||
RHSValue = RHSValue.getUnqualifiedType();
|
||||
|
@ -9267,8 +9267,8 @@ QualType ASTContext::mergeObjCGCQualifiers(QualType LHS, QualType RHS) {
|
|||
}
|
||||
|
||||
if (LHSCan->isObjCObjectPointerType() && RHSCan->isObjCObjectPointerType()) {
|
||||
QualType LHSBaseQT = LHS->getAs<ObjCObjectPointerType>()->getPointeeType();
|
||||
QualType RHSBaseQT = RHS->getAs<ObjCObjectPointerType>()->getPointeeType();
|
||||
QualType LHSBaseQT = LHS->castAs<ObjCObjectPointerType>()->getPointeeType();
|
||||
QualType RHSBaseQT = RHS->castAs<ObjCObjectPointerType>()->getPointeeType();
|
||||
QualType ResQT = mergeObjCGCQualifiers(LHSBaseQT, RHSBaseQT);
|
||||
if (ResQT == LHSBaseQT)
|
||||
return LHS;
|
||||
|
@ -10547,8 +10547,7 @@ QualType ASTContext::getCorrespondingSaturatedType(QualType Ty) const {
|
|||
|
||||
if (Ty->isSaturatedFixedPointType()) return Ty;
|
||||
|
||||
const auto &BT = Ty->getAs<BuiltinType>();
|
||||
switch (BT->getKind()) {
|
||||
switch (Ty->castAs<BuiltinType>()->getKind()) {
|
||||
default:
|
||||
llvm_unreachable("Not a fixed point type!");
|
||||
case BuiltinType::ShortAccum:
|
||||
|
|
Loading…
Reference in New Issue