! Check that stack save and restore needed for elemental function result ! allocation inside loops are not emitted directly in lowering, but inserted if ! needed in the stack-reclaim pass. ! RUN: %flang_fc1 -emit-hlfir %s -o - | FileCheck %s --check-prefix=CHECK-HLFIR ! RUN: %flang_fc1 -emit-llvm %s -o - | FileCheck %s --check-prefix=CHECK-LLVM subroutine foo(c1, c2) character(*), dimension(100) :: c1, c2 interface elemental pure function func(c) character(*), intent(in) :: c character(len(c)) :: func end function end interface c1 = func(c2) end subroutine ! CHECK-HLFIR-NOT: stacksave ! CHECK: return ! CHECK-LLVM: stacksave ! CHECK-LLVM: stackrestore