[PATCH] D111337: [fir] Add array value copy pass

Valentin Clement via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 7 12:07:04 PDT 2021


clementval created this revision.
clementval added reviewers: jeanPerier, svedanayagam, sscalpone, kiranchandramohan, jdoerfert, schweitz, pmccormick, mehdi_amini, rovka, AlexisPerry.
Herald added subscribers: Groverkss, mgorny.
Herald added a project: Flang.
clementval requested review of this revision.
Herald added subscribers: llvm-commits, sstefan1.
Herald added a project: LLVM.

This patch upstream the array value copy pass.

Transform the set of array value primitives to a memory-based array
representation.

The Ops `array_load`, `array_store`, `array_fetch`, and `array_update` are
used to manage abstract aggregate array values. A simple analysis is done
to determine if there are potential dependences between these operations.
If not, these array operations can be lowered to work directly on the memory
representation. If there is a potential conflict, a temporary is created
along with appropriate copy-in/copy-out operations. Here, a more refined
analysis might be deployed, such as using the affine framework.

This pass is required before code gen to the LLVM IR dialect.

This patch is part of the upstreaming effort from fir-dev branch. The
pass is bringing quite a lot of file with it.

Co-authored-by: Jean Perier <jperier at nvidia.com>
Co-authored-by: Eric Schweitz <eschweitz at nvidia.com>
Co-authored-by: V Donaldson <vdonaldson at nvidia.com>


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D111337

Files:
  flang/include/flang/Optimizer/Builder/BoxValue.h
  flang/include/flang/Optimizer/Builder/Character.h
  flang/include/flang/Optimizer/Builder/DoLoopHelper.h
  flang/include/flang/Optimizer/Builder/FIRBuilder.h
  flang/include/flang/Optimizer/Builder/MutableBox.h
  flang/include/flang/Optimizer/Builder/Runtime/Assign.h
  flang/include/flang/Optimizer/Builder/Runtime/RTBuilder.h
  flang/include/flang/Optimizer/Dialect/FIROpsSupport.h
  flang/include/flang/Optimizer/Dialect/FIRType.h
  flang/include/flang/Optimizer/Dialect/FIRTypes.td
  flang/include/flang/Optimizer/Support/Matcher.h
  flang/include/flang/Optimizer/Transforms/Factory.h
  flang/include/flang/Optimizer/Transforms/Passes.h
  flang/include/flang/Optimizer/Transforms/Passes.td
  flang/lib/Optimizer/Builder/BoxValue.cpp
  flang/lib/Optimizer/Builder/CMakeLists.txt
  flang/lib/Optimizer/Builder/Character.cpp
  flang/lib/Optimizer/Builder/DoLoopHelper.cpp
  flang/lib/Optimizer/Builder/FIRBuilder.cpp
  flang/lib/Optimizer/Builder/MutableBox.cpp
  flang/lib/Optimizer/Builder/Runtime/Assign.cpp
  flang/lib/Optimizer/CMakeLists.txt
  flang/lib/Optimizer/Dialect/FIROps.cpp
  flang/lib/Optimizer/Dialect/FIRType.cpp
  flang/lib/Optimizer/Transforms/ArrayValueCopy.cpp
  flang/lib/Optimizer/Transforms/CMakeLists.txt
  flang/test/Fir/array-modify.f90

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D111337.377954.patch
Type: text/x-patch
Size: 264159 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211007/7f2915d5/attachment-0001.bin>


More information about the llvm-commits mailing list