[all-commits] [llvm/llvm-project] 6163d6: [Flang][OpenMP] Fix for atomic lowering with HLFIR

kiranchandramohan via All-commits all-commits at lists.llvm.org
Thu Aug 31 10:36:50 PDT 2023

  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 6163d66e73cf92bf687d63aad58bf867effb9a20
  Author: Kiran Chandramohan <kiran.chandramohan at arm.com>
  Date:   2023-08-31 (Thu, 31 Aug 2023)

  Changed paths:
    M flang/lib/Lower/OpenMP.cpp
    A flang/test/Lower/OpenMP/atomic-update-hlfir.f90

  Log Message:
  [Flang][OpenMP] Fix for atomic lowering with HLFIR

Atomic update operation is modelled in OpenMP dialect as
an operation that takes a reference to the operation being
updated. It also contains a region that will perform the
update. The block argument represents the loaded value from
the update location and the Yield operation is the value
that should be stored for the update.

OpenMP FIR lowering binds the value loaded from the update
address to the SymbolAddress. HLFIR lowering does not permit
SymbolAddresses to be a value. To work around this, the
lowering is now performed in two steps. First the body of
the atomic update is lowered into an SCF execute_region
operation. Then this is copied into the omp.atomic_update
as a second step that performs the following:
-> Create an omp.atomic_update with the block argument of
the correct type.
-> Copy the operations from the SCF execute_region. Convert
the scf.yield to an omp.yield.
-> Remove the loads of the update location and replace all
uses with the block argument.

Reviewed By: tblah, razvanlupusoru

Differential Revision: https://reviews.llvm.org/D158294

More information about the All-commits mailing list