[OpenMP] Create custom state machines for generic target regions
authorJohannes Doerfert <johannes@jdoerfert.de>
Thu, 20 May 2021 05:37:29 +0000 (00:37 -0500)
committerJohannes Doerfert <johannes@jdoerfert.de>
Sat, 10 Jul 2021 17:32:50 +0000 (12:32 -0500)
commitf0628c6ff7ba2f3ceeb99791e5e34028de0c82c4
treeb8f384812a97112e34d4cd441752a21be420c18e
parent1d5711c3eeb62098b46d4d383f2e849b9756105d
[OpenMP] Create custom state machines for generic target regions

In the spirit of TRegions [0], this patch creates a custom state
machine for a generic target region based on the potentially called
parallel regions.

The code analysis is done interprocedurally via an abstract attribute
(AAKernelInfo). All outermost parallel regions are collected and we
check if there might be unknown outermost parallel regions for which
we need an indirect call. Other AAKernelInfo extensions are expected.

[0] https://link.springer.com/chapter/10.1007/978-3-030-28596-8_11

Differential Revision: https://reviews.llvm.org/D101977
llvm/lib/Transforms/IPO/Attributor.cpp
llvm/lib/Transforms/IPO/OpenMPOpt.cpp
llvm/test/Transforms/OpenMP/custom_state_machines.ll [new file with mode: 0644]
llvm/test/Transforms/OpenMP/custom_state_machines_remarks.ll [new file with mode: 0644]
llvm/test/Transforms/OpenMP/globalization_remarks.ll
llvm/test/Transforms/OpenMP/remove_globalization.ll
llvm/test/Transforms/OpenMP/replace_globalization.ll
llvm/test/Transforms/OpenMP/single_threaded_execution.ll