[analyzer] [PointerArithChecker] do not warn on indexes into vector types

rdar://35041502

Differential Revision: https://reviews.llvm.org/D44172

llvm-svn: 326952
This commit is contained in:
George Karpenkov 2018-03-07 22:20:39 +00:00
parent 065962375d
commit 8e3a659105
2 changed files with 10 additions and 0 deletions

View File

@ -308,6 +308,10 @@ void PointerArithChecker::checkPreStmt(const ArraySubscriptExpr *SubsExpr,
// Indexing with 0 is OK.
if (Idx.isZeroConstant())
return;
// Indexing vector-type expressions is also OK.
if (SubsExpr->getBase()->getType()->isVectorType())
return;
reportPointerArithMisuse(SubsExpr->getBase(), C);
}

View File

@ -347,3 +347,9 @@ void test_no_crash_on_pointer_to_label() {
a[0] = 0;
label:;
}
typedef __attribute__((__ext_vector_type__(2))) float simd_float2;
float test_nowarning_on_vector_deref() {
simd_float2 x = {0, 1};
return x[1]; // no-warning
}