1! RUN: bbc %s -o "-" -emit-fir | FileCheck %s 2 3subroutine sub1(a, b) 4 integer, intent(in) :: a 5 logical :: b 6end 7 8! Check that arguments are correctly set and no local allocation is happening. 9! CHECK-LABEL: func @_QPsub1( 10! CHECK-SAME: %{{.*}}: !fir.ref<i32> {fir.bindc_name = "a"}, %{{.*}}: !fir.ref<!fir.logical<4>> {fir.bindc_name = "b"}) 11! CHECK-NOT: fir.alloc 12! CHECK: return 13 14subroutine sub2(i) 15 integer :: i(2, 5) 16end 17 18! CHECK-LABEL: func @_QPsub2( 19! CHECK-SAME: %{{.*}}: !fir.ref<!fir.array<2x5xi32>>{{.*}}) 20 21subroutine sub3(i) 22 real :: i(2) 23end 24 25! CHECK-LABEL: func @_QPsub3( 26! CHECK-SAME: %{{.*}}: !fir.ref<!fir.array<2xf32>>{{.*}}) 27 28integer function fct1(a, b) 29 integer, intent(in) :: a 30 logical :: b 31end 32 33! CHECK-LABEL: func @_QPfct1( 34! CHECK-SAME: %{{.*}}: !fir.ref<i32> {fir.bindc_name = "a"}, %{{.*}}: !fir.ref<!fir.logical<4>> {fir.bindc_name = "b"}) -> i32 35 36real function fct2(i) 37 integer :: i(2, 5) 38end 39 40! CHECK-LABEL: func @_QPfct2( 41! CHECK-SAME: %{{.*}}: !fir.ref<!fir.array<2x5xi32>> {fir.bindc_name = "i"}) -> f32 42 43function fct3(i) 44 real :: i(2) 45end 46 47! CHECK-LABEL: func @_QPfct3( 48! CHECK-SAME: %{{.*}}: !fir.ref<!fir.array<2xf32>> {fir.bindc_name = "i"}) -> f32 49 50subroutine allocatable_real(x) 51 real, allocatable :: x 52end 53 54! CHECK-LABEL: func @_QPallocatable_real( 55! CHECK-SAME: %{{.*}}: !fir.ref<!fir.box<!fir.heap<f32>>> {fir.bindc_name = "x"}) { 56