[PATCH] D80450: [CUDA][HIP] Fix HD function resolution

Artem Belevich via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Nov 30 13:04:23 PST 2020


tra added inline comments.


================
Comment at: clang/test/SemaCUDA/function-overload.cu:616
+// HDs have type mismatch whereas H has type match.
+// In device compilation, H wins when -fgpu-defer-diag is off and two HD win
+// when -fgpu-defer-diags is on. In both cases the diagnostic should be
----------------
yaxunl wrote:
> tra wrote:
> > One thing that bothers me about this comment is that `-fgpu-defer-diag` apparently changes the result of the overload resolution, not just deferring diags.
> without -fgpu-defer-diag we have to keep the old incorrect overloading resolution since otherwise it breaks existing code.
> 
> We can only have correct overloading resolution with -fgpu-defer-diag on.
> 
> If we want to have correct overloading resolution, not depending on whether -fgpu-defer-diag is on or off, we have to turn on -fgpu-defer-diag by default. In this case no existing code will be broken.
> We can only have correct overloading resolution with -fgpu-defer-diag on.

`-fgpu-defer-diags` is a **prerequisite** for fixing overload resolution. I'm fine with that.
Making it serve the double duty of **affecting** the overload resolution is what I was pointing at.

We should have a knob `fix-overload-resolution` which would then turn `-fgpu-defer-diag` on, not the other way around.


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

https://reviews.llvm.org/D80450



More information about the cfe-commits mailing list