jdoerfert added a comment.

In D74387#1992682 <https://reviews.llvm.org/D74387#1992682>, @Fznamznon wrote:

> Okay, seems like OpenMP needs unsupported types diagnosing as well. I'm 
> trying to adapt this patch for OpenMP, but it doesn't work out of the box 
> because it diagnoses memcpy like operations, so with the current patch the 
> code like this will cause diagnostics:
>
>    struct T {
>      char a;
>      __float128 f;
>      char c;
>      T() : a(12), f(15) {}
>   }
>  
>   #pragma omp declare target
>   T a = T();
>   #pragma omp end declare target
>
>
> It happens because member initialization in the constructor is still usage of 
> `f` field which is marked unavailable because of type. I'm not sure that it 
> is possible to understand how the unavailable declaration is used in the 
> place where diagnostic about usage of unavailable declaration is actually 
> emitted, so I will probably need some other place/solution for it.
>
> @jdoerfert , could you please help to understand how the diagnostic should 
> work for OpenMP cases? Or you probably have some spec/requirements for it?
>  Understanding what exactly is needed will help with the implementation, I 
> guess.


I missed this update, sorry.

I don't think we have a spec wording for this, it is up to the implementations.

In the example, a diagnostic is actually fine (IMHO). You cannot assign 15 to 
the __float128 on the device. It doesn't work. The following code however 
should go through without diagnostic:

  struct T {
     char a;
     __float128 f;
     char c;
     T() : a(12), c(15) {}
  }

and it should translate to

  struct T {
     char a;
     alignas(host_float128_alignment) char[16] __unavailable_f;
     char c;
     T() : a(12), c(15) {}
  }

Do you have other questions or examples we should discuss?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D74387



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

Reply via email to