jlebar added a comment. 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. > 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. > 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. http://reviews.llvm.org/D18458 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits