================ @@ -14017,6 +14017,24 @@ void Sema::CheckCastAlign(Expr *Op, QualType T, SourceRange TRange) { << TRange << Op->getSourceRange(); } +void Sema::CheckVectorAccess(const Expr *BaseExpr, const Expr *IndexExpr) { + const VectorType *VTy = BaseExpr->getType()->getAs<VectorType>(); + if (!VTy) + return; + + Expr::EvalResult Result; + if (!IndexExpr->EvaluateAsInt(Result, Context, Expr::SE_AllowSideEffects)) + return; + + unsigned DiagID = getLangOpts().HLSL ? diag::err_vector_index_out_of_range + : diag::warn_vector_index_out_of_range; ---------------- llvm-beanz wrote:
I'd be curious for @aaronballman and @svenvh's feedback here. It seems to me like this warning should be enabled by default for all languages. >From reading the OpenCL C spec I don't believe OpenCL supports subscript >operators on vectors, but I certainly think that we would want to warn in >C/C++ for compile-time provable out-of-bounds access. We know this is an out-of-bounds access 100% of the time, so if this new warning suddenly breaks a lot of code (which I doubt), it will be breaking a lot of code that does something obviously wrong. https://github.com/llvm/llvm-project/pull/128952 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits