================
@@ -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

Reply via email to