ABataev added a comment.

In D56113#1345232 <https://reviews.llvm.org/D56113#1345232>, @jdenny wrote:

> In D56113#1345047 <https://reviews.llvm.org/D56113#1345047>, @ABataev wrote:
>
> > In D56113#1344210 <https://reviews.llvm.org/D56113#1344210>, @jdenny wrote:
> >
> > > In D56113#1342879 <https://reviews.llvm.org/D56113#1342879>, @ABataev 
> > > wrote:
> > >
> > > > But you will need another serie of patches for `reduction` and `linear` 
> > > > clauses to update their error messages.
> > >
> > >
> > > Those already had their own checks for const.  I'm not aware of any cases 
> > > not handled, and the test suite does pass after my patch.
> >
> >
> > Yes, they have the checks for constness, but you need to  update those 
> > checks to emit this new error message for const values with mutable fields.
>
>
> I believe you mean we should reuse `rejectConstNotMutableType` for 
> `reduction` and `linear` rather than leave some of its implementation 
> duplicated for those.
>
> That is, I believe we should //not// relax the existing checks for 
> `reduction` and `linear` so that they permit const values with mutable 
> fields.  First, that doesn't seem possible for `linear`, which requires 
> integral or pointer type.  Second, that seems wrong for `reduction` because, 
> for whatever reason, OpenMP 5.0 sec. 2.19.5.1 page 298 says:
>
>   A list item that appears in a reduction clause must not be const-qualified.
>
>
> For that case, I can extend `rejectConstNotMutableType` with a bool parameter 
> to indicate mutable fields are not permitted.
>
> Does all that make sense?


Yes, sounds good.

> 
> 
>> 
>> 
>>> By the way, is there any value to keeping the predetermined shared for 
>>> const if -openmp-version=3.1 or earlier?
>> 
>> Yes, you can check for the value of `LangOpts.OpenMP`. For OpenMP 3.1 it 
>> will have the value `31`.
> 
> How far back should we take this?  I'm inclined to check for `30` and `31` 
> only and assume anything else is newer, but let me know if we need to check 
> for earlier versions.

I think `<= 31` is good. Clang always supported only OpenMP 3.1 and higher.

> 
> 
>> 
>> 
>>>>> Sorry, I misunderstood your first response.  When I try an atomic write 
>>>>> to the shared variable, the difference between the uncombined and 
>>>>> combined target teams directive affects functionality when targeting 
>>>>> multicore.  Does that matter?
>>>> 
>>>> Yes, I'm aware if this problem. But I don't think it is very important and 
>>>> can cause serious problems in user code. If you think that it is worth to 
>>>> fix this prblem, you can go ahead and fix it.
>>> 
>>> No, not worthwhile for me right now.  I just wanted to point it out in 
>>> passing in case it might matter to someone.  Does a bugzilla seem 
>>> worthwhile to you?
>> 
>> Yes, generally speaking it would be good to fix this. So, yes, at least to 
>> keep tracking, add a bug report to the bugzilla.
> 
> Will do.




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

https://reviews.llvm.org/D56113



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

Reply via email to