tra added a comment.

In https://reviews.llvm.org/D47757#1204621, @ahatanak wrote:

> In https://reviews.llvm.org/D47757#1204561, @tra wrote:
>
> > It's a regression. There's a decent chance it breaks someone and this 
> > patch, if committed by itself, will end up being rolled back.
>
>
> Is the regression you are referring to about the static function case? I 
> don't see a difference between ToT clang and my patch in the diagnostics they 
> produce when I compile the following code:
>
>   __host__ void f();
>   static __host__ __device__ void g() { f(); }
>   __host__ __device__ void g2() { g(); } 
>
>
> Both error out when `-fcuda-is-device` is provided. If I comment out the 
> definition of g2, it compiles fine.


The example above *is* expected to produce the error on device side, bacause 
g2() is externally visible, uses g(), which in turn uses host-only f().

I'm talking about a case where g() {f()} is present in the source code, but 
will not be codegen'ed on device side.

The code below is expected to compile. Note that g2() is host-only.

  __host__ void f(); 
  static __host__ __device__ void g() { f(); }
  __host__ void g2() { g(); } 


Repository:
  rC Clang

https://reviews.llvm.org/D47757



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

Reply via email to