xref: /llvm-project/flang/test/Lower/arguments.f90 (revision 914061bbcf8bb59747221dea3f567f7a1c034020)
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