[flang] Lower procedure ref to user defined elemental procedures (part 1)
authorJean Perier <jperier@nvidia.com>
Fri, 16 Dec 2022 11:59:12 +0000 (12:59 +0100)
committerJean Perier <jperier@nvidia.com>
Fri, 16 Dec 2022 12:04:04 +0000 (13:04 +0100)
commit4203b062fbf70c6394bd02e1645bc18c607b3826
tree364dacc639faed7fe2dbe1dc668cd14ae7a6c6ac
parent05dc149c875cafcd948675dff4f7a7ccb092e128
[flang] Lower procedure ref to user defined elemental procedures (part 1)

Lower procedure ref to user defined elemental procedure when:
- there are no arguments that may be dynamically optional
- for functions, the result has no length parameters
- the reference can be unordered
- there are not character by value arguments

This uses the recently added hlfir.elemental operation and tools.
The "core" of the argument preparation is shared between elemental
and non elemental calls (genUserCalls is code moved without any
functional changes)

Differential Revision: https://reviews.llvm.org/D140118
flang/include/flang/Optimizer/Builder/HLFIRTools.h
flang/lib/Lower/CallInterface.cpp
flang/lib/Lower/ConvertCall.cpp
flang/lib/Optimizer/Builder/HLFIRTools.cpp
flang/lib/Optimizer/HLFIR/Transforms/BufferizeHLFIR.cpp
flang/test/Lower/HLFIR/elemental-user-procedure-ref.f90 [new file with mode: 0644]