================ @@ -15884,6 +15884,58 @@ static bool checkBuiltinVectorMathMixedEnums(Sema &S, Expr *LHS, Expr *RHS, return false; } +/// Check if all arguments have the same type. If the types don't match, emit an +/// error message and return true. Otherwise return false. +/// +/// For scalars we directly compare their unqualified types. But even if we +/// compare unqualified vector types, a difference in qualifiers in the element +/// types can make the vector types be considered not equal. For example, +/// vector of 4 'const float' values vs vector of 4 'float' values. +/// So we compare unqualified types of their elements and number of elements. +/// See GitHub issue #155405. +static bool checkBuiltinVectorMathArgTypes(Sema &SemaRef, unsigned NumArgs, + Expr *Args[]) { + assert(NumArgs > 0 && "Should have at least one argument."); + + auto EmitError = [&](int I) { ---------------- tbaederr wrote:
```suggestion auto EmitError = [&](unsigned I) { ``` https://github.com/llvm/llvm-project/pull/155620 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits