================ @@ -0,0 +1,135 @@ +! RUN: bbc -emit-hlfir %s -o - | %python %S/gen_mod_ref_test.py | \ +! RUN: fir-opt -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis-modref))' \ +! RUN: --mlir-disable-threading -o /dev/null 2>&1 | FileCheck %s + +! Test fir.call modref with internal procedures + +subroutine simple_modref_test(test_var_x) + implicit none + real :: test_var_x + call test_effect_internal() +contains + subroutine test_effect_internal() + test_var_x = 0. + end subroutine +end subroutine +! CHECK-LABEL: Testing : "_QPsimple_modref_test" +! CHECK: test_effect_internal -> test_var_x#0: ModRef + +subroutine simple_nomodref_test(test_var_x) + implicit none + real :: test_var_x + call test_effect_internal() +contains + subroutine test_effect_internal() + call some_external() + end subroutine +end subroutine +! CHECK-LABEL: Testing : "_QPsimple_nomodref_test" +! CHECK: test_effect_internal -> test_var_x#0: NoModRef + +! Test that effects on captured variable are propagated to associated variables +! in associate construct. + +subroutine test_associate() + implicit none + real :: test_var_x(10) + associate (test_var_y=>test_var_x) + test_var_y = test_effect_internal() ---------------- klausler wrote:
Is it necessary for this test that `test_var_y` be the LHS of the assignment statement? You would expect ModRef even if it were not modified by/after the call. Might be more clear if the result were stored elsewhere. https://github.com/llvm/llvm-project/pull/117164 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits