1. Mar 28, 2024
    • Sergio Afonso's avatar
      [Flang][OpenMP][Lower] Split MLIR codegen for clauses and constructs · e291fad6
      Sergio Afonso authored
      This patch performs several cleanups with the main purpose of normalizing the
      code patterns used to trigger codegen for MLIR OpenMP operations and making the
      processing of clauses and constructs independent. The following changes are
      made:
      
      - Clean up unused `directive` argument to `ClauseProcessor::processMap()`.
      - Move general helper functions in OpenMP.cpp to the appropriate section of the
      file.
      - Create `gen<OpName>Clauses()` functions containing the clause processing code
      specific for the associated OpenMP construct.
      - Update `gen<OpName>Op()` functions to call the corresponding
      `gen<OpName>Clauses()` function.
      - Sort calls to `ClauseProcessor::process<ClauseName>()` alphabetically, to
      avoid inadvertently relying on some arbitrary order. Update some tests that
      broke due to the order change.
      - Normalize `genOMP()` functions so they all delegate the generation of MLIR to
      `gen<OpName>Op()` functions following the same pattern.
      - Only process `nowait` clause on `TARGET` constructs if not compiling for the
      target device.
      
      A later patch can move the calls to `gen<OpName>Clauses()` out of
      `gen<OpName>Op()` functions and passing completed clause structures instead, in
      preparation to supporting composite constructs. That will make it possible to
      reuse clause processing for a given leaf construct when appearing alone or in a
      combined or composite construct, while controlling where the associated code is
      produced.
      e291fad6
  2. Mar 27, 2024