[PATCH] D50845: [CUDA/OpenMP] Define only some host macros during device compilation

Jonas Hahnfeld via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Aug 17 08:02:01 PDT 2018


Hahnfeld added a comment.

In https://reviews.llvm.org/D50845#1203991, @ABataev wrote:

> In https://reviews.llvm.org/D50845#1203973, @Hahnfeld wrote:
>
> > In https://reviews.llvm.org/D50845#1203967, @ABataev wrote:
> >
> > > I thought about this approach already. But it won't work in general. The main problem here is that host and device compilation phases may end up with the different set of implicit declare target functions. The main problem here not the user code, but the system libraries, which may use the different set of functions.
> >
> >
> > How common is that for functions that are used in `target` regions? In the worst case we can make my fourth point a warning and lose Sema checking for those functions.
>
>
> It does not matter how common is it or not. If the bad situation can happen, it will happen.
>  Warning won't work here, because, again, you may end up with the code that may cause compiler crash for the device. For example, if the system function uses throw/catch stmts, we may emit the warning for this function, but will have troubles during the codegen.


Right, warning wasn't a good thought. We really want strict checking and would have to error out when we find a function that wasn't implicitly `declare target` on the host.
I meant to ask how common that would be? If that's only some known functions we could handle them separately.

>>> The best solution is to use only device specific header files. Device compilation phase should use system header files for the host at all.
>> 
>> You mean "shouldn't use system header files for the host"? I think that may be hard to achieve, especially if we want to Sema check all of the source code during device compilation.
> 
> Yes, I mean should not. Yes, this is hard to achieve but that's the only complete and correct solution. Everything else looks like a non-stable hack.

How do you propose to handle inline assembly in non-system header files?


Repository:
  rC Clang

https://reviews.llvm.org/D50845





More information about the cfe-commits mailing list