[PATCH] D94315: [OpenMP][FIX] Enforce a function boundary for a new data environment

Johannes Doerfert via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Jan 8 11:00:58 PST 2021


jdoerfert added a comment.

In D94315#2487259 <https://reviews.llvm.org/D94315#2487259>, @ABataev wrote:

> In D94315#2487257 <https://reviews.llvm.org/D94315#2487257>, @jdoerfert wrote:
>
>> In D94315#2487244 <https://reviews.llvm.org/D94315#2487244>, @ABataev wrote:
>>
>>> In D94315#2487242 <https://reviews.llvm.org/D94315#2487242>, @jdoerfert wrote:
>>>
>>>> I don't understand where `inaccessiblemem_or_argmemonly` is coming from. This prevents us from inlining the outlined parallel region.
>>>
>>> __kmpc_serialized_parallel and __kmpc_end_serialized_parallel functions are marked with this attribute and I think OpenMPOpt optimizes read_only functions because of this. I.e. it does not consider __kmpc_serialized_parallel and __kmpc_end_serialized_paralle function calls as opimization barriers.
>>
>> Can you provide an example why this is a problem?
>
> Looks like PR48686, you mentioned, caused by this. The second function call should not be optimized, because it is inside the region between __kmpc_serialized_parallel() and __kmpc_end_serialized_parallel() function calls.

OpenMPOpt assumes some ICVs are fixed per data environment and they are not changing within a single function. Removing `inaccessiblemem_or_argmemonly` should not make a difference here.
I'm going to propose an alternative to `__kmpc_fork_call` now, that would fix this issue as well and make a lot of things simpler and cleaner.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D94315



More information about the cfe-commits mailing list