53 lines · plain
1! RUN: bbc -emit-hlfir %s -o - | FileCheck %s2 3! Test fir.dummy_scope assignment to argument x4subroutine sub_arg(x)5 integer :: x6end subroutine sub_arg7! CHECK-LABEL: func.func @_QPsub_arg(8! CHECK-SAME: %[[VAL_0:[0-9]+|[a-zA-Z$._-][a-zA-Z0-9$._-]*]]: !fir.ref<i32> {fir.bindc_name = "x"}) {9! CHECK: %[[VAL_1:.*]] = fir.dummy_scope : !fir.dscope10! CHECK: %[[VAL_2:.*]]:2 = hlfir.declare %[[VAL_0]] dummy_scope %[[VAL_1]] arg {{[0-9]+}} {uniq_name = "_QFsub_argEx"} : (!fir.ref<i32>, !fir.dscope) -> (!fir.ref<i32>, !fir.ref<i32>)11! CHECK: return12! CHECK: }13 14! Test fir.dummy_scope is created even when there are no arguments.15subroutine sub_noarg16end subroutine sub_noarg17! CHECK-LABEL: func.func @_QPsub_noarg() {18! CHECK: %[[VAL_0:.*]] = fir.dummy_scope : !fir.dscope19! CHECK: return20! CHECK: }21 22! Test fir.dummy_scope assignment to argument x23function func_arg(x)24 integer :: x, func_arg25 func_arg = x26end function func_arg27! CHECK-LABEL: func.func @_QPfunc_arg(28! CHECK-SAME: %[[VAL_0:[0-9]+|[a-zA-Z$._-][a-zA-Z0-9$._-]*]]: !fir.ref<i32> {fir.bindc_name = "x"}) -> i32 {29! CHECK: %[[VAL_1:.*]] = fir.dummy_scope : !fir.dscope30! CHECK: %[[VAL_2:.*]] = fir.alloca i32 {bindc_name = "func_arg", uniq_name = "_QFfunc_argEfunc_arg"}31! CHECK: %[[VAL_3:.*]]:2 = hlfir.declare %[[VAL_2]] {uniq_name = "_QFfunc_argEfunc_arg"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)32! CHECK: %[[VAL_4:.*]]:2 = hlfir.declare %[[VAL_0]] dummy_scope %[[VAL_1]] arg {{[0-9]+}} {uniq_name = "_QFfunc_argEx"} : (!fir.ref<i32>, !fir.dscope) -> (!fir.ref<i32>, !fir.ref<i32>)33! CHECK: %[[VAL_5:.*]] = fir.load %[[VAL_4]]#0 : !fir.ref<i32>34! CHECK: hlfir.assign %[[VAL_5]] to %[[VAL_3]]#0 : i32, !fir.ref<i32>35! CHECK: %[[VAL_6:.*]] = fir.load %[[VAL_3]]#0 : !fir.ref<i32>36! CHECK: return %[[VAL_6]] : i3237! CHECK: }38 39! Test fir.dummy_scope is created even when there are no arguments.40function func_noarg41 integer :: func_noarg42 func_noarg = 143end function func_noarg44! CHECK-LABEL: func.func @_QPfunc_noarg() -> i32 {45! CHECK: %[[VAL_0:.*]] = fir.dummy_scope : !fir.dscope46! CHECK: %[[VAL_1:.*]] = fir.alloca i32 {bindc_name = "func_noarg", uniq_name = "_QFfunc_noargEfunc_noarg"}47! CHECK: %[[VAL_2:.*]]:2 = hlfir.declare %[[VAL_1]] {uniq_name = "_QFfunc_noargEfunc_noarg"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)48! CHECK: %[[VAL_3:.*]] = arith.constant 1 : i3249! CHECK: hlfir.assign %[[VAL_3]] to %[[VAL_2]]#0 : i32, !fir.ref<i32>50! CHECK: %[[VAL_4:.*]] = fir.load %[[VAL_2]]#0 : !fir.ref<i32>51! CHECK: return %[[VAL_4]] : i3252! CHECK: }53