[PATCH] D63164: [HIP] Add option to force lambda nameing following ODR in HIP/CUDA.

Michael Liao via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Jun 11 18:50:23 PDT 2019


hliao added a comment.

In D63164#1538968 <https://reviews.llvm.org/D63164#1538968>, @tra wrote:

> So, in short, what you're saying is that lambda type may leak into the mangled name of a `__global__` function and ne need to ensure that the mangled name is identical for both host and device, hence the need for consistent naming of lambdas.
>
> If that's the case, shouldn't it be enabled for CUDA/HIP by default? While it's not frequently used ATM, it is something we do want to work correctly all the time. The failure to do so results in weird runtime failures that would be hard to debug for end-users.
>
> @rsmith -- are there any downsides having this enabled all the time?


yeah, we should ensure consistent naming by default. But, I want to hear more suggestion and comment before making that option by default. To more specific, as that option forces all naming of lambda to follow ODR rule. For non-`__device__` lambda, even though there is no code quality change, we do add overhead for the compiler itself, as the additional records, though that should be negligible.  A potential solution is to record the ODR context for parent lambdas and re-number them if the inner lambda is found as `__device__` one.
However, I do like the straight-forward and extremely simple solution of this patch to force all lambda naming following ODR, there is no code quality change and, potentially slight, FE overhead. What's your thought?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D63164





More information about the cfe-commits mailing list