efriedma added a comment. Can you update https://clang.llvm.org/docs/LanguageExtensions.html#langext-vectors with a description of the interaction between the different language features here?
It's unfortunate that the gcc extension is explicitly incompatible with OpenCL, but I guess we're stuck with it. ================ Comment at: clang/include/clang/AST/Expr.h:3738 + // implementation of this that the standard implies that this + // could be true in the C++ standard as well. + (cond->isTypeDependent() || lhs->isTypeDependent() || ---------------- You can just refer to [temp.dep.expr] here; the type does in fact "depend" on the type of the condition. I'm a little concerned that the C++ standard might not preserve this guarantee in the future. ================ Comment at: clang/lib/Sema/SemaExpr.cpp:8981 + else + return true; } else if (VectorEltTy->isRealFloatingType()) { ---------------- Can you separate this out into an independent patch? ================ Comment at: clang/lib/Sema/SemaExprCXX.cpp:5826 + else + ResultElementTy = UsualArithmeticConversions(LHS, RHS); + ---------------- I'm not completely sure this works the way you want it to... in particular, if the types don't match, and both operands can be promoted to int, you end up with an int vector. Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D71463/new/ https://reviews.llvm.org/D71463 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits