
A compound construct with a list of clauses is broken up into individual leaf/composite constructs. Each such construct has the list of clauses that apply to it based on the OpenMP spec. Each lowering function (i.e. a function that generates MLIR ops) is now responsible for generating its body as described below. Functions that receive AST nodes extract the construct, and the clauses from the node. They then create a work queue consisting of individual constructs, and invoke a common dispatch function to process (lower) the queue. The dispatch function examines the current position in the queue, and invokes the appropriate lowering function. Each lowering function receives the queue as well, and once it needs to generate its body, it either invokes the dispatch function on the rest of the queue (if any), or processes nested evaluations if the work queue is at the end. Re-application of ca1bd5995f6ed934f9187305190a5abfac049173 with fixes for compilation errors.
26 lines
424 B
CMake
26 lines
424 B
CMake
set(LLVM_LINK_COMPONENTS
|
|
Analysis
|
|
Core
|
|
FrontendOpenACC
|
|
FrontendOpenMP
|
|
Passes
|
|
Support
|
|
TargetParser
|
|
TransformUtils
|
|
)
|
|
|
|
add_llvm_unittest(LLVMFrontendTests
|
|
OpenACCTest.cpp
|
|
OpenMPContextTest.cpp
|
|
OpenMPIRBuilderTest.cpp
|
|
OpenMPParsingTest.cpp
|
|
OpenMPCompositionTest.cpp
|
|
OpenMPDecompositionTest.cpp
|
|
|
|
DEPENDS
|
|
acc_gen
|
|
omp_gen
|
|
)
|
|
|
|
target_link_libraries(LLVMFrontendTests PRIVATE LLVMTestingSupport)
|