erichkeane marked 5 inline comments as done.
erichkeane added a comment.

In D71463#1783953 <https://reviews.llvm.org/D71463#1783953>, @efriedma wrote:

> Can you update 
> https://clang.llvm.org/docs/LanguageExtensions.html#langext-vectors with a 
> description of the interaction between the different language features here?


Done, see the next patch.

> It's unfortunate that the gcc extension is explicitly incompatible with 
> OpenCL, but I guess we're stuck with it.

I think it is the other way around actually.  The GCC extension predates the 
OpenCL one from what I can tell.



================
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() ||
----------------
efriedma wrote:
> 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.
I wasn't able to find a bug report in the core issues list, and this has been 
known about by Doug for ~15 years now.  I'm somewhat less concerned, 
particularly since GCC has this issue as well.


================
Comment at: clang/lib/Sema/SemaExpr.cpp:8981
+    else
+      return true;
   } else if (VectorEltTy->isRealFloatingType()) {
----------------
efriedma wrote:
> Can you separate this out into an independent patch?
348f22eac83d9a3ee946e41be43fe507f04a89b6


================
Comment at: clang/lib/Sema/SemaExprCXX.cpp:5826
+    else
+      ResultElementTy = UsualArithmeticConversions(LHS, RHS);
+
----------------
efriedma wrote:
> 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.
I think I'm OK with that... GCC does allow some promotions here (a short and a 
ushort act as an int).  I tried a bunch of cases and couldn't come up with a 
case where this didn't work in the 2 scalar versions.  You wouldn't happen to 
have something in mind, would you?


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

Reply via email to