[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
Loading
Please sign in to comment