54 lines · plain
1! Test that dummy argument positions are tracked in hlfir.declare2! RUN: bbc -emit-hlfir -o - %s | FileCheck %s3 4! CHECK-LABEL: func.func @_QPsingle_arg(5subroutine single_arg(n)6 integer :: n7 ! CHECK: hlfir.declare %{{.*}} dummy_scope %{{.*}} arg 1 {uniq_name = "_QFsingle_argEn"}8 print *, n9end subroutine10 11! CHECK-LABEL: func.func @_QPmultiple_args(12subroutine multiple_args(a, b, c)13 integer :: a, b, c14 ! CHECK-DAG: hlfir.declare %{{.*}} dummy_scope %{{.*}} arg 1 {uniq_name = "_QFmultiple_argsEa"}15 ! CHECK-DAG: hlfir.declare %{{.*}} dummy_scope %{{.*}} arg 2 {uniq_name = "_QFmultiple_argsEb"}16 ! CHECK-DAG: hlfir.declare %{{.*}} dummy_scope %{{.*}} arg 3 {uniq_name = "_QFmultiple_argsEc"}17 print *, a, b, c18end subroutine19 20! CHECK-LABEL: func.func @_QPchar_arg(21subroutine char_arg(str)22 character(len=5) :: str23 ! CHECK: hlfir.declare %{{.*}} typeparams %{{.*}} dummy_scope %{{.*}} arg 1 {uniq_name = "_QFchar_argEstr"}24 print *, str25end subroutine26 27! CHECK-LABEL: func.func @_QParray_arg(28subroutine array_arg(arr)29 integer :: arr(:)30 ! CHECK: hlfir.declare %{{.*}} dummy_scope %{{.*}} arg 1 {uniq_name = "_QFarray_argEarr"}31 print *, arr(1)32end subroutine33 34! Test that local variables do NOT get arg numbers35! CHECK-LABEL: func.func @_QPlocal_var()36subroutine local_var()37 integer :: x38 ! CHECK: hlfir.declare %{{[0-9]+}} {uniq_name = "_QFlocal_varEx"}39 x = 1040 print *, x41end subroutine42 43! Test mixed arguments and locals44! CHECK-LABEL: func.func @_QPmixed(45subroutine mixed(n)46 integer :: n47 integer :: local_x48 ! CHECK-DAG: hlfir.declare %{{[0-9]+}} {uniq_name = "_QFmixedElocal_x"}49 ! CHECK-DAG: hlfir.declare {{.*}} dummy_scope {{.*}} arg 1 {uniq_name = "_QFmixedEn"}50 local_x = n + 151 print *, local_x52end subroutine53 54