================ @@ -9888,6 +9888,9 @@ static ExprResult convertVector(Expr *E, QualType ElementType, Sema &S) { /// IntTy without losing precision. static bool canConvertIntToOtherIntTy(Sema &S, ExprResult *Int, QualType OtherIntTy) { + if (Int->get()->isValueDependent()) + return false; ---------------- a-tarasyuk wrote:
@shafik Thanks for the review. When converting a splat scalar into a vector, problems can occur when the scalar type is integral https://github.com/llvm/llvm-project/blob/23144e87d2ef0ecf86b67d4aaa28cea332de41c3/clang/lib/Sema/SemaExpr.cpp#L10228-L10229 https://github.com/llvm/llvm-project/blob/23144e87d2ef0ecf86b67d4aaa28cea332de41c3/clang/lib/Sema/SemaExpr.cpp#L10004-L10011 https://github.com/llvm/llvm-project/blob/23144e87d2ef0ecf86b67d4aaa28cea332de41c3/clang/lib/Sema/SemaExpr.cpp#L10046-L10050 In cases where a (constant) integer can be cast to an int, two utilities https://github.com/llvm/llvm-project/blob/23144e87d2ef0ecf86b67d4aaa28cea332de41c3/clang/lib/Sema/SemaExpr.cpp#L9927 https://github.com/llvm/llvm-project/blob/23144e87d2ef0ecf86b67d4aaa28cea332de41c3/clang/lib/Sema/SemaExpr.cpp#L9889 fail to account for invalid expressions before evaluating them, https://github.com/llvm/llvm-project/blob/23144e87d2ef0ecf86b67d4aaa28cea332de41c3/clang/lib/Sema/SemaExpr.cpp#L9897 https://github.com/llvm/llvm-project/blob/23144e87d2ef0ecf86b67d4aaa28cea332de41c3/clang/lib/Sema/SemaExpr.cpp#L9934 leading to crashes. Should these utilities be made more robust, or should casting with an invalid expression be bypassed entirely? I'd appreciate your thoughts. Thanks https://github.com/llvm/llvm-project/pull/105727 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits