mirror of
https://github.com/intel/llvm.git
synced 2026-01-25 10:55:58 +08:00
Silence static analyzer getAs<VectorType> null dereference warnings. NFCI.
The static analyzer is warning about potential null dereferences, but in these cases we should be able to use castAs<VectorType> directly and if not assert will fire for us. llvm-svn: 373478
This commit is contained in:
@@ -493,7 +493,7 @@ void APValue::printPretty(raw_ostream &Out, const ASTContext &Ctx,
|
||||
return;
|
||||
case APValue::Vector: {
|
||||
Out << '{';
|
||||
QualType ElemTy = Ty->getAs<VectorType>()->getElementType();
|
||||
QualType ElemTy = Ty->castAs<VectorType>()->getElementType();
|
||||
getVectorElt(0).printPretty(Out, Ctx, ElemTy);
|
||||
for (unsigned i = 1; i != getVectorLength(); ++i) {
|
||||
Out << ", ";
|
||||
|
||||
@@ -107,7 +107,7 @@ namespace {
|
||||
}
|
||||
AtomicAlign = ValueAlign = lvalue.getAlignment();
|
||||
} else if (lvalue.isVectorElt()) {
|
||||
ValueTy = lvalue.getType()->getAs<VectorType>()->getElementType();
|
||||
ValueTy = lvalue.getType()->castAs<VectorType>()->getElementType();
|
||||
ValueSizeInBits = C.getTypeSize(ValueTy);
|
||||
AtomicTy = lvalue.getType();
|
||||
AtomicSizeInBits = C.getTypeSize(AtomicTy);
|
||||
|
||||
@@ -1657,8 +1657,8 @@ Value *ScalarExprEmitter::VisitConvertVectorExpr(ConvertVectorExpr *E) {
|
||||
if (SrcTy == DstTy)
|
||||
return Src;
|
||||
|
||||
QualType SrcEltType = SrcType->getAs<VectorType>()->getElementType(),
|
||||
DstEltType = DstType->getAs<VectorType>()->getElementType();
|
||||
QualType SrcEltType = SrcType->castAs<VectorType>()->getElementType(),
|
||||
DstEltType = DstType->castAs<VectorType>()->getElementType();
|
||||
|
||||
assert(SrcTy->isVectorTy() &&
|
||||
"ConvertVector source IR type must be a vector");
|
||||
@@ -3745,7 +3745,7 @@ Value *ScalarExprEmitter::EmitCompare(const BinaryOperator *E,
|
||||
Value *FirstVecArg = LHS,
|
||||
*SecondVecArg = RHS;
|
||||
|
||||
QualType ElTy = LHSTy->getAs<VectorType>()->getElementType();
|
||||
QualType ElTy = LHSTy->castAs<VectorType>()->getElementType();
|
||||
const BuiltinType *BTy = ElTy->getAs<BuiltinType>();
|
||||
BuiltinType::Kind ElementKind = BTy->getKind();
|
||||
|
||||
|
||||
@@ -5843,7 +5843,7 @@ ExprResult Sema::SemaBuiltinShuffleVector(CallExpr *TheCall) {
|
||||
<< SourceRange(TheCall->getArg(0)->getBeginLoc(),
|
||||
TheCall->getArg(1)->getEndLoc()));
|
||||
|
||||
numElements = LHSType->getAs<VectorType>()->getNumElements();
|
||||
numElements = LHSType->castAs<VectorType>()->getNumElements();
|
||||
unsigned numResElements = TheCall->getNumArgs() - 2;
|
||||
|
||||
// Check to see if we have a call with 2 vector arguments, the unary shuffle
|
||||
@@ -5851,7 +5851,7 @@ ExprResult Sema::SemaBuiltinShuffleVector(CallExpr *TheCall) {
|
||||
// same number of elts as lhs.
|
||||
if (TheCall->getNumArgs() == 2) {
|
||||
if (!RHSType->hasIntegerRepresentation() ||
|
||||
RHSType->getAs<VectorType>()->getNumElements() != numElements)
|
||||
RHSType->castAs<VectorType>()->getNumElements() != numElements)
|
||||
return ExprError(Diag(TheCall->getBeginLoc(),
|
||||
diag::err_vec_builtin_incompatible_vector)
|
||||
<< TheCall->getDirectCallee()
|
||||
@@ -5864,7 +5864,7 @@ ExprResult Sema::SemaBuiltinShuffleVector(CallExpr *TheCall) {
|
||||
<< SourceRange(TheCall->getArg(0)->getBeginLoc(),
|
||||
TheCall->getArg(1)->getEndLoc()));
|
||||
} else if (numElements != numResElements) {
|
||||
QualType eltType = LHSType->getAs<VectorType>()->getElementType();
|
||||
QualType eltType = LHSType->castAs<VectorType>()->getElementType();
|
||||
resType = Context.getVectorType(eltType, numResElements,
|
||||
VectorType::GenericVector);
|
||||
}
|
||||
@@ -5921,8 +5921,8 @@ ExprResult Sema::SemaConvertVectorExpr(Expr *E, TypeSourceInfo *TInfo,
|
||||
diag::err_convertvector_non_vector_type));
|
||||
|
||||
if (!SrcTy->isDependentType() && !DstTy->isDependentType()) {
|
||||
unsigned SrcElts = SrcTy->getAs<VectorType>()->getNumElements();
|
||||
unsigned DstElts = DstTy->getAs<VectorType>()->getNumElements();
|
||||
unsigned SrcElts = SrcTy->castAs<VectorType>()->getNumElements();
|
||||
unsigned DstElts = DstTy->castAs<VectorType>()->getNumElements();
|
||||
if (SrcElts != DstElts)
|
||||
return ExprError(Diag(BuiltinLoc,
|
||||
diag::err_convertvector_incompatible_vector)
|
||||
|
||||
Reference in New Issue
Block a user