rsmith added a comment.

In http://reviews.llvm.org/D18458#383755, @jlebar wrote:

> In http://reviews.llvm.org/D18458#383719, @rsmith wrote:
>
> > It seems like we have the following constraint: on host, no attributes must 
> > mangle the same as `__host__ __device__` and `constexpr` (and probably 
> > `__global__`?).
>
>
> Yes to `__host__ __device__` and `constexpr`.  Unsure about `__global__`, but 
> let's also say yes for now, to be conservative.
>
> > Are there any others?
>
>
> An existing assumption is that `__host__` is identical to unattributed.  
> Probably makes sense to keep that one around for now if we can (modulo 
> changes to unattributed constexpr), as it makes things simpler.


OK, that makes things pretty easy (though we don't get the answer we might 
want): unattributed must be mangled the same as H and HD, so we cannot support 
overloading H and HD.

> > What do we need to do to be ABI-compatible with NVCC? (And is that possible 
> > if we allow `__host__` to overload `__host__ __device__`?)

> 

> 

> NVCC doesn't apply any special mangling to D or HD functions, so I think 
> maintaining naming compatibility means, basically, not screwing with mangled 
> names based on attributes.

> 

> That suggests, to your second question, that it's not possible to maintain 
> ABI compatibility if we allow D or H to overload HD.


OK, so the question for you is, how much ABI compatibility with NVCC are you 
prepared to give up in order to allow HD / D overloading and HD / H overloading?

> > One possibility given only that constraint would be to use a different 
> > mangling for H functions and D functions, but mangle HD and unattributed 
> > functions the same.

> 

> 

> I guess using a different mangling for both H and D functions, rather than 
> just for D functions, is in some sense more consistent.  But this  would also 
> be very subtle: We'd be saying, non-constexpr H and unattributed are 
> identical, *except* for their mangled names.


Yes, that seems like a good argument for mangling H the same as unattributed.


http://reviews.llvm.org/D18458



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

Reply via email to