llvm-project
87bab31c - [Flang] - Add optional inlining of allocatable assignments with hlfir.expr RHS (#186880)

Commit
27 days ago
[Flang] - Add optional inlining of allocatable assignments with hlfir.expr RHS (#186880) Add support for inlining hlfir.assign operations where the LHS is an allocatable and the RHS is an `hlfir.expr` (e.g., from `hlfir.elemental`). Since `hlfir.expr` values cannot alias with memory locations, these assignments can be safely inlined without alias analysis. The optimization is controlled by the -inline-hlfir-allocatable-expr-assign flag: fir-opt -inline-hlfir-allocatable-expr-assign --inline-hlfir-assign file.fir flang -mmlir -inline-hlfir-allocatable-expr-assign file.f90 The generated code uses `fir::factory::genReallocIfNeeded` to properly handle Fortran allocatable assignment semantics (F2018 10.2.1.3): - If not allocated: allocate with RHS shape - If allocated with same shape: reuse existing allocation - If allocated with different shape: reallocate This is motivated by the increased link time that I am seeing when `__FortranAAssign` is called from the user code. The details of the problem are documented in https://github.com/llvm/llvm-project/issues/187720
Parents
Loading