Anastasia added inline comments.

================
Comment at: clang/include/clang/Basic/OpenCLExtensions.def:113
 OPENCL_OPTIONALCOREFEATURE(__opencl_c_atomic_order_seq_cst, false, 300, 
OCL_C_30)
+OPENCL_OPTIONALCOREFEATURE(__opencl_c_atomic_scope_all_devices, false, 300, 
OCL_C_30)
 OPENCL_OPTIONALCOREFEATURE(__opencl_c_subgroups, false, 300, OCL_C_30)
----------------
azabaznov wrote:
> This feature is header only. We had a lot of discussions on that and the main 
> idea was not to declare header only features/extensions in 
> `OpenCLExtensions.def` and use `-D__opencl_c_atomic_scope_all_devices=1` 
> instead, @Anastasia can comment on this.
> 
> I personally would like to introduce new flag for OpenCL options in 
> `OpenCLExtensions.def` which will indicate that feature/extension is 
> header-only, and thus all of such options can be declared in 
> `OpenCLExtensions.def`: if flag is set to true it can be stripped out from 
> the parser. What do you think about this?
Yes, I agree the idea is to align with C/C++ directions for scalability i.e. we 
should only add what is absolutely necessary to the compiler and implement the 
rest using libraries - just like regular C and C++. We won't be able to scale 
if we keep adding everything in the compiler. In fact, we already have a huge 
scalability issue with our builtin functions. If we look at modern C++ - more 
than 70% of features are not in the compiler at all.

Would it be possible to do something like suggested here: 
https://reviews.llvm.org/D91531#change-AKXhB4ko4nAO for `cl_khr_depth_images`?

> I personally would like to introduce new flag for OpenCL options in 
> OpenCLExtensions.def which will indicate that feature/extension is 
> header-only, and thus all of such options can be declared in 
> OpenCLExtensions.def: if flag is set to true it can be stripped out from the 
> parser. What do you think about this?

Hmm, I think the macros should either be declared in the headers or using a 
flag `-D`. I don't know why would adding them in `OpenCLExtensions.def` be 
beneficial if we can use conventional approaches? This allows avoiding the 
complexity and makes things more modular. If we look at the OpenCL vendor 
extensions for example - we probably don't want them all in one place?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D103241/new/

https://reviews.llvm.org/D103241

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

Reply via email to