yaxunl added a comment.

In D101793#2774191 <https://reviews.llvm.org/D101793#2774191>, @weiwang wrote:

> In D101793#2772717 <https://reviews.llvm.org/D101793#2772717>, @yaxunl wrote:
>
>> In D101793#2772461 <https://reviews.llvm.org/D101793#2772461>, @weiwang 
>> wrote:
>>
>>> Thanks for the approval!
>>>
>>> Just want to understand the list of "decls to check for deferred 
>>> diagnostics" better, where are these decls coming from? And why do they 
>>> need to be checked for warnings? I see decls from libc are in the list, but 
>>> I have no idea why are they selected.
>>
>> For offloading languages e.g. OpenMP/CUDA/HIP, there are apparent errors in 
>> functions shared between host and device. However, unless these functions 
>> are sure to be emitted on device or host, these errors should not be 
>> emitted. These errors are so called deferred error messages. The function 
>> decls which need to be checked are recorded. After AST is finalized, the AST 
>> of these functions are iterated. If a function is found sure to be emitted, 
>> the deferred error message in it are emitted.
>
> Thanks! So the `DeclsToCheckForDeferredDiags` contains the candidate decls to 
> be checked. The decls are selected because they would generate diags in the 
> context of offloading languages, but whether or not an diag will be emitted 
> is deferred till traversal of the AST is performed. I still don't quite 
> understand why would libc functions be in the candidate list? They look 
> simple enough (and I think they've been there forever).  For example 
> `__uint16_identity` 
> (https://code.woboq.org/userspace/glibc/bits/uintn-identity.h.html#32),
>
>   static inline __uint16_t __uint16_identity(__uint16_t __x) {
>       return __x;
>   }
>
> I don't see how this function would generate diag either on host or device.

A function may call another function which contains deferred diagnostics.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D101793

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

Reply via email to