bruno added a comment. Great! Thanks for improving this.
================ Comment at: include/clang/Sema/Sema.h:9287 bool AllowBothBool, bool AllowBoolConversion); - QualType GetSignedVectorType(QualType V); + QualType GetSignedVectorType(QualType V, bool WantExtVectorType); QualType CheckVectorCompareOperands(ExprResult &LHS, ExprResult &RHS, ---------------- Can you change `WantExtVector` to `UseExtVector`? ================ Comment at: lib/Sema/SemaExpr.cpp:9719 +// gets picked over long long. +QualType Sema::GetSignedVectorType(QualType V, bool WantExtVector) { const VectorType *VTy = V->getAs<VectorType>(); ---------------- Do we really need to pass `WantExtVector` here? Why relying on `V` being ext_vector or generic isn't enough to define `WantExtVector`? ================ Comment at: lib/Sema/SemaExpr.cpp:9803 // Return a signed type for the vector. - return GetSignedVectorType(vType); + return GetSignedVectorType(vType, isExtVectorType); } ---------------- So in `getLangOpts().OpenCL` mode we want to get a ext_vec even if `vType` isn't ext_vec? Would that ever happen? ================ Comment at: lib/Sema/SemaExpr.cpp:9821 + + return GetSignedVectorType(LHS.get()->getType(), isExtVectorType); } ---------------- Same question applies here ================ Comment at: lib/Sema/SemaExpr.cpp:11760 // Vector logical not returns the signed variant of the operand type. - resultType = GetSignedVectorType(resultType); + resultType = GetSignedVectorType(resultType, true); break; ---------------- Use the idiom `...(resultType, true/*WantExtVector*/);` ================ Comment at: test/Sema/vector-ops.c:16 // Comparison operators - v2ua = (v2ua==v2sa); // expected-warning{{incompatible vector types assigning to 'v2u' (vector of 2 'unsigned int' values) from 'int __attribute__((ext_vector_type(2)))' (vector of 2 'int' values)}} + v2ua = (v2ua==v2sa); // expected-warning{{incompatible vector types assigning to 'v2u' (vector of 2 'unsigned int' values) from '__attribute__((__vector_size__(2 * sizeof(int)))) int' (vector of 2 'int' values)}} v2sa = (v2ua==v2sa); ---------------- Can you also add a test for the `CheckVectorLogicalOperands` case? https://reviews.llvm.org/D31667 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits