[PATCH] D56411: [CUDA][HIP][Sema] Fix template kernel with function as template parameter
Yaxun Liu via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Jan 21 20:24:36 PST 2019
yaxunl added a comment.
In D56411#1365745 <https://reviews.llvm.org/D56411#1365745>, @rjmccall wrote:
> In D56411#1365727 <https://reviews.llvm.org/D56411#1365727>, @yaxunl wrote:
>
> > In D56411#1360010 <https://reviews.llvm.org/D56411#1360010>, @rjmccall wrote:
> >
> > > I think the diagnostic should come during instantiation when you find an evaluated use of a host function within a device function.
> >
> >
> > It seems the body of function template is checked only during parsing of the definition of the template itself. When a function
> > template is instantiated, the body of the instantiated function is not checked again.
>
>
> No, that's not correct. However, it's checked somewhat differently, and it's possible that the existing diagnostic is not set up to fire along all common paths. Try moving the diagnostic to `MarkFunctionReferenced`, and note that `OdrUse` will be `false` in all the unevaluated contexts.
You are right. After I disable current diagnostic, I saw PerformPendingInstantiations at the end of parsing the TU, where the AST of the instantiated function is iterated and MarkFunctionReferenced is called. I will try to fix my patch as suggested. Thanks.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D56411/new/
https://reviews.llvm.org/D56411
More information about the cfe-commits
mailing list