Anastasia added a comment.

In https://reviews.llvm.org/D28136#701508, @bader wrote:

> > From all the above arguments, I feel like the right approach would be to 
> > implement it as Clang builtin which closely matches the operator semantic 
> > in my opinion. We could of course reuse the implementation of  
> > __bultin_astype to avoid unnecessary extra work and code duplication.
> > 
> > Using the macro seems to me more like a workaround solution and overloaded 
> > functions don't seem to be entirely the right thing either.  What do you 
> > think about it?
>
> I don't think we need another Clang built-in. __builtin_astype was added 
> specifically for OpenCL needs (see rev. 132612).
>  Do you know better way to map astype operators (there are a lot of them 
> as_<type>#) to single Clang built-in?


Unfortunately,  __builtin_astype doesn't match the astype syntax from the spec 
exactly, which I wish it would. I don't feel strongly neither with macro (which 
messes up proper error reporting) nor with function declaration (for which 
implicit conversion would apply just like to other C functions). Having Clang 
builtin would feel the most natural way to me but I agree the way it is defined 
with the multiple distinct names for each type I am not going to advocate for 
it strongly.



================
Comment at: lib/Headers/opencl-c.h:6588
-char __ovld __cnfn as_char(char);
-char __ovld __cnfn as_char(uchar);
-
----------------
Why do we have some of the overloads omitted? Would this cause any extra 
conversions? uchar -> char in this case?


https://reviews.llvm.org/D28136



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to