jhuber6 wrote:

> > I don't think it makes any sense for `__has_builtin` to return true when 
> > the target does not in-fact have the builtin. Most of the time this is used 
> > to guard target specific code, which will then be wrong if it's compiled on 
> > the device. Realistically the solution that makes sense to me is to not 
> > emit any of the aux target's builtins as available.
> 
> From the user's perspective, the target DOES support the builtin though, 
> since from their perspective, their target is 'SYCL host + device'. So this 
> is actually not as clear as "it should never", because target/aux-target are 
> machinations of the implementation, and don't properly respect the user's 
> definition of 'target'.

I don't see how this is desirable behavior, since it just leads to stuff like 
this https://godbolt.org/z/na4rGn9od. This behavior makes `__has_builtin` 
effectively unusable if you ever use it inside a function shared with the host 
+ device.

https://github.com/llvm/llvm-project/pull/121839
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to