[flang] hlfir.elemental codegen
authorJean Perier <jperier@nvidia.com>
Fri, 16 Dec 2022 08:19:07 +0000 (09:19 +0100)
committerJean Perier <jperier@nvidia.com>
Fri, 16 Dec 2022 08:19:49 +0000 (09:19 +0100)
commitc2e3cb3e437b26d73f3392d34541a4c685ea9498
tree7389b798b4c1d7c21acb8949dfa5facaf383caea
parent95ec1a60986c13628c6f608fc0ed1f1fafb1b033
[flang] hlfir.elemental codegen

Without any optimization or when it cannot be optimized before
bufferization, an hlfir.elemental lowers to an array temporary.
Its codegen consists in:
- allocating a temp given the type, shape, and length parameter arguments.
- generating a loop nest given the elemental shape
- inlining the body of the elemental inside the loops, and replacing the
  yield_element by an assignment to an element of the temp.

Differential Revision: https://reviews.llvm.org/D140093
flang/include/flang/Optimizer/Builder/FIRBuilder.h
flang/include/flang/Optimizer/Builder/HLFIRTools.h
flang/lib/Optimizer/Builder/FIRBuilder.cpp
flang/lib/Optimizer/Builder/HLFIRTools.cpp
flang/lib/Optimizer/HLFIR/Transforms/BufferizeHLFIR.cpp
flang/test/HLFIR/elemental-codegen.fir [new file with mode: 0644]