[all-commits] [llvm/llvm-project] 407832: [flang][hlfir] Add pass to inline elementals

Tom Eccles via All-commits all-commits at lists.llvm.org
Thu May 18 04:04:44 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 407832db60c6f51ec5d9e5160670ee9756a340af
      https://github.com/llvm/llvm-project/commit/407832db60c6f51ec5d9e5160670ee9756a340af
  Author: Tom Eccles <tom.eccles at arm.com>
  Date:   2023-05-18 (Thu, 18 May 2023)

  Changed paths:
    M flang/include/flang/Optimizer/HLFIR/HLFIROps.td
    M flang/include/flang/Optimizer/HLFIR/Passes.h
    M flang/include/flang/Optimizer/HLFIR/Passes.td
    M flang/include/flang/Tools/CLOptions.inc
    M flang/lib/Optimizer/HLFIR/Transforms/CMakeLists.txt
    A flang/lib/Optimizer/HLFIR/Transforms/InlineElementals.cpp
    M flang/test/Driver/mlir-debug-pass-pipeline.f90
    M flang/test/Driver/mlir-pass-pipeline.f90
    M flang/test/Fir/basic-program.fir
    A flang/test/HLFIR/inline-elemental.fir

  Log Message:
  -----------
  [flang][hlfir] Add pass to inline elementals

Implement hlfir.elemental inlining as proposed in
flang/docs/HighLevelFIR.md.

This is a separate pass to make the code easier to understand. One
alternative would have been to modify the hlfir.elemental lowering in
the HLFIR bufferization pass.

Currently, a hlfir.elemental can only be inlined once; if there are
more uses, the existing bufferization is used instead.

Usage of mlir::applyPatternsAndFoldGreedily was suggested by @jeanPerier

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


  Commit: c01937296b01f512e9074730e04ad0bedb40d089
      https://github.com/llvm/llvm-project/commit/c01937296b01f512e9074730e04ad0bedb40d089
  Author: Tom Eccles <tom.eccles at arm.com>
  Date:   2023-05-18 (Thu, 18 May 2023)

  Changed paths:
    A flang/include/flang/Runtime/temporary-stack.h
    M flang/runtime/CMakeLists.txt
    A flang/runtime/temporary-stack.cpp
    M flang/unittests/Runtime/CMakeLists.txt
    A flang/unittests/Runtime/TemporaryStack.cpp

  Log Message:
  -----------
  [flang][runtime] Add dynamically allocated temporary storage

These functions will be used as part of the HLFIR lowering for
forall/where. The contents of the API were requested by @jeanPerier.

The API is designed around that use case, assuming that the caller knows
through some side channel what size to allocate for boxes returned from
the pop() function.

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


Compare: https://github.com/llvm/llvm-project/compare/c7dbe326dff8...c01937296b01


More information about the All-commits mailing list