1! RUN: bbc %s -o "-" -emit-fir | FileCheck %s 2 3integer(1) function fct1() 4end 5! CHECK-LABEL: func @_QPfct1() -> i8 6! CHECK: return %{{.*}} : i8 7 8integer(2) function fct2() 9end 10! CHECK-LABEL: func @_QPfct2() -> i16 11! CHECK: return %{{.*}} : i16 12 13integer(4) function fct3() 14end 15! CHECK-LABEL: func @_QPfct3() -> i32 16! CHECK: return %{{.*}} : i32 17 18integer(8) function fct4() 19end 20! CHECK-LABEL: func @_QPfct4() -> i64 21! CHECK: return %{{.*}} : i64 22 23integer(16) function fct5() 24end 25! CHECK-LABEL: func @_QPfct5() -> i128 26! CHECK: return %{{.*}} : i128 27 28function fct() 29 integer :: fct 30end 31! CHECK-LABEL: func @_QPfct() -> i32 32! CHECK: return %{{.*}} : i32 33 34function fct_res() result(res) 35 integer :: res 36end 37! CHECK-LABEL: func @_QPfct_res() -> i32 38! CHECK: return %{{.*}} : i32 39 40integer function fct_body() 41 goto 1 42 1 stop 43end 44 45! CHECK-LABEL: func @_QPfct_body() -> i32 46! CHECK: cf.br ^bb1 47! CHECK: ^bb1 48! CHECK: %{{.*}} = fir.call @_FortranAStopStatement 49! CHECK: fir.unreachable 50 51function fct_iarr1() 52 integer, dimension(10) :: fct_iarr1 53end 54 55! CHECK-LABEL: func @_QPfct_iarr1() -> !fir.array<10xi32> 56! CHECK: return %{{.*}} : !fir.array<10xi32> 57 58function fct_iarr2() 59 integer, dimension(10, 20) :: fct_iarr2 60end 61 62! CHECK-LABEL: func @_QPfct_iarr2() -> !fir.array<10x20xi32> 63! CHECK: return %{{.*}} : !fir.array<10x20xi32> 64 65function fct_iarr3() 66 integer, dimension(:, :), allocatable :: fct_iarr3 67end 68 69! CHECK-LABEL: func @_QPfct_iarr3() -> !fir.box<!fir.heap<!fir.array<?x?xi32>>> 70! CHECK: return %{{.*}} : !fir.box<!fir.heap<!fir.array<?x?xi32>>> 71 72function fct_iarr4() 73 integer, dimension(:), pointer :: fct_iarr4 74end 75 76! CHECK-LABEL: func @_QPfct_iarr4() -> !fir.box<!fir.ptr<!fir.array<?xi32>>> 77! CHECK: return %{{.*}} : !fir.box<!fir.ptr<!fir.array<?xi32>>> 78 79logical(1) function lfct1() 80end 81! CHECK-LABEL: func @_QPlfct1() -> !fir.logical<1> 82! CHECK: return %{{.*}} : !fir.logical<1> 83 84logical(2) function lfct2() 85end 86! CHECK-LABEL: func @_QPlfct2() -> !fir.logical<2> 87! CHECK: return %{{.*}} : !fir.logical<2> 88 89logical(4) function lfct3() 90end 91! CHECK-LABEL: func @_QPlfct3() -> !fir.logical<4> 92! CHECK: return %{{.*}} : !fir.logical<4> 93 94logical(8) function lfct4() 95end 96! CHECK-LABEL: func @_QPlfct4() -> !fir.logical<8> 97! CHECK: return %{{.*}} : !fir.logical<8> 98 99real(2) function rfct1() 100end 101! CHECK-LABEL: func @_QPrfct1() -> f16 102! CHECK: return %{{.*}} : f16 103 104real(3) function rfct2() 105end 106! CHECK-LABEL: func @_QPrfct2() -> bf16 107! CHECK: return %{{.*}} : bf16 108 109real function rfct3() 110end 111! CHECK-LABEL: func @_QPrfct3() -> f32 112! CHECK: return %{{.*}} : f32 113 114real(8) function rfct4() 115end 116! CHECK-LABEL: func @_QPrfct4() -> f64 117! CHECK: return %{{.*}} : f64 118 119real(10) function rfct5() 120end 121! CHECK-LABEL: func @_QPrfct5() -> f80 122! CHECK: return %{{.*}} : f80 123 124real(16) function rfct6() 125end 126! CHECK-LABEL: func @_QPrfct6() -> f128 127! CHECK: return %{{.*}} : f128 128 129complex(2) function cplxfct1() 130end 131! CHECK-LABEL: func @_QPcplxfct1() -> !fir.complex<2> 132! CHECK: return %{{.*}} : !fir.complex<2> 133 134complex(3) function cplxfct2() 135end 136! CHECK-LABEL: func @_QPcplxfct2() -> !fir.complex<3> 137! CHECK: return %{{.*}} : !fir.complex<3> 138 139complex(4) function cplxfct3() 140end 141! CHECK-LABEL: func @_QPcplxfct3() -> !fir.complex<4> 142! CHECK: return %{{.*}} : !fir.complex<4> 143 144complex(8) function cplxfct4() 145end 146! CHECK-LABEL: func @_QPcplxfct4() -> !fir.complex<8> 147! CHECK: return %{{.*}} : !fir.complex<8> 148 149complex(10) function cplxfct5() 150end 151! CHECK-LABEL: func @_QPcplxfct5() -> !fir.complex<10> 152! CHECK: return %{{.*}} : !fir.complex<10> 153 154complex(16) function cplxfct6() 155end 156! CHECK-LABEL: func @_QPcplxfct6() -> !fir.complex<16> 157! CHECK: return %{{.*}} : !fir.complex<16> 158