[all-commits] [llvm/llvm-project] 2384e8: [flang] Restore stack after allocas created by Tar...
Slava Zakharin via All-commits
all-commits at lists.llvm.org
Wed Apr 26 10:33:47 PDT 2023
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 2384e84bbbfd8d713fd2e1ffcc7d3d89dc1a0f16
https://github.com/llvm/llvm-project/commit/2384e84bbbfd8d713fd2e1ffcc7d3d89dc1a0f16
Author: Slava Zakharin <szakharin at nvidia.com>
Date: 2023-04-26 (Wed, 26 Apr 2023)
Changed paths:
M flang/include/flang/Optimizer/CodeGen/CGPasses.td
M flang/lib/Optimizer/CodeGen/TargetRewrite.cpp
M flang/test/Fir/target-rewrite-complex16.fir
M flang/test/Fir/target.fir
Log Message:
-----------
[flang] Restore stack after allocas created by TargetRewrite.
This resolves issues with running out of stack on examples like
https://fortran-lang.discourse.group/t/modern-fortran-sample-code/2019/18
reported by @clementval.
When target rewrite creates alloca(s) around a call, we need to insert
stacksave/stackrestore to free the allocated stack. Better performant
code may be achieved by placing the alloca(s) outside of loops,
but the placement has to behave correctly with regards to OpenMP/OpenACC/etc.
dialect operations that have special representation for "private"
objects. This is a concervative fix for correctness issue.
Differential Revision: https://reviews.llvm.org/D149222
More information about the All-commits
mailing list