1ad40cc14SValentin Clement! RUN: bbc %s -o "-" -emit-fir | FileCheck %s 2ad40cc14SValentin Clement 3ad40cc14SValentin Clementinteger(1) function fct1() 4ad40cc14SValentin Clementend 5ad40cc14SValentin Clement! CHECK-LABEL: func @_QPfct1() -> i8 6ad40cc14SValentin Clement! CHECK: return %{{.*}} : i8 7ad40cc14SValentin Clement 8ad40cc14SValentin Clementinteger(2) function fct2() 9ad40cc14SValentin Clementend 10ad40cc14SValentin Clement! CHECK-LABEL: func @_QPfct2() -> i16 11ad40cc14SValentin Clement! CHECK: return %{{.*}} : i16 12ad40cc14SValentin Clement 13ad40cc14SValentin Clementinteger(4) function fct3() 14ad40cc14SValentin Clementend 15ad40cc14SValentin Clement! CHECK-LABEL: func @_QPfct3() -> i32 16ad40cc14SValentin Clement! CHECK: return %{{.*}} : i32 17ad40cc14SValentin Clement 18ad40cc14SValentin Clementinteger(8) function fct4() 19ad40cc14SValentin Clementend 20ad40cc14SValentin Clement! CHECK-LABEL: func @_QPfct4() -> i64 21ad40cc14SValentin Clement! CHECK: return %{{.*}} : i64 22ad40cc14SValentin Clement 23ad40cc14SValentin Clementinteger(16) function fct5() 24ad40cc14SValentin Clementend 25ad40cc14SValentin Clement! CHECK-LABEL: func @_QPfct5() -> i128 26ad40cc14SValentin Clement! CHECK: return %{{.*}} : i128 27ad40cc14SValentin Clement 28ad40cc14SValentin Clementfunction fct() 29ad40cc14SValentin Clement integer :: fct 30ad40cc14SValentin Clementend 31ad40cc14SValentin Clement! CHECK-LABEL: func @_QPfct() -> i32 32ad40cc14SValentin Clement! CHECK: return %{{.*}} : i32 33ad40cc14SValentin Clement 34ad40cc14SValentin Clementfunction fct_res() result(res) 35ad40cc14SValentin Clement integer :: res 36ad40cc14SValentin Clementend 37ad40cc14SValentin Clement! CHECK-LABEL: func @_QPfct_res() -> i32 38ad40cc14SValentin Clement! CHECK: return %{{.*}} : i32 39ad40cc14SValentin Clement 40ad40cc14SValentin Clementinteger function fct_body() 41ad40cc14SValentin Clement goto 1 42ad40cc14SValentin Clement 1 stop 43ad40cc14SValentin Clementend 44ad40cc14SValentin Clement 45ad40cc14SValentin Clement! CHECK-LABEL: func @_QPfct_body() -> i32 46ad40cc14SValentin Clement! CHECK: cf.br ^bb1 47ad40cc14SValentin Clement! CHECK: ^bb1 48ad40cc14SValentin Clement! CHECK: %{{.*}} = fir.call @_FortranAStopStatement 49ad40cc14SValentin Clement! CHECK: fir.unreachable 50ad40cc14SValentin Clement 51c807aa53SValentin Clementfunction fct_iarr1() 52c807aa53SValentin Clement integer, dimension(10) :: fct_iarr1 53c807aa53SValentin Clementend 54c807aa53SValentin Clement 55c807aa53SValentin Clement! CHECK-LABEL: func @_QPfct_iarr1() -> !fir.array<10xi32> 56c807aa53SValentin Clement! CHECK: return %{{.*}} : !fir.array<10xi32> 57c807aa53SValentin Clement 58c807aa53SValentin Clementfunction fct_iarr2() 59c807aa53SValentin Clement integer, dimension(10, 20) :: fct_iarr2 60c807aa53SValentin Clementend 61c807aa53SValentin Clement 62c807aa53SValentin Clement! CHECK-LABEL: func @_QPfct_iarr2() -> !fir.array<10x20xi32> 63c807aa53SValentin Clement! CHECK: return %{{.*}} : !fir.array<10x20xi32> 64c807aa53SValentin Clement 65ad40cc14SValentin Clementlogical(1) function lfct1() 66ad40cc14SValentin Clementend 67ad40cc14SValentin Clement! CHECK-LABEL: func @_QPlfct1() -> !fir.logical<1> 68ad40cc14SValentin Clement! CHECK: return %{{.*}} : !fir.logical<1> 69ad40cc14SValentin Clement 70ad40cc14SValentin Clementlogical(2) function lfct2() 71ad40cc14SValentin Clementend 72ad40cc14SValentin Clement! CHECK-LABEL: func @_QPlfct2() -> !fir.logical<2> 73ad40cc14SValentin Clement! CHECK: return %{{.*}} : !fir.logical<2> 74ad40cc14SValentin Clement 75ad40cc14SValentin Clementlogical(4) function lfct3() 76ad40cc14SValentin Clementend 77ad40cc14SValentin Clement! CHECK-LABEL: func @_QPlfct3() -> !fir.logical<4> 78ad40cc14SValentin Clement! CHECK: return %{{.*}} : !fir.logical<4> 79ad40cc14SValentin Clement 80ad40cc14SValentin Clementlogical(8) function lfct4() 81ad40cc14SValentin Clementend 82ad40cc14SValentin Clement! CHECK-LABEL: func @_QPlfct4() -> !fir.logical<8> 83ad40cc14SValentin Clement! CHECK: return %{{.*}} : !fir.logical<8> 840a0b3029SValentin Clement 850a0b3029SValentin Clementreal(2) function rfct1() 860a0b3029SValentin Clementend 870a0b3029SValentin Clement! CHECK-LABEL: func @_QPrfct1() -> f16 880a0b3029SValentin Clement! CHECK: return %{{.*}} : f16 890a0b3029SValentin Clement 900a0b3029SValentin Clementreal(3) function rfct2() 910a0b3029SValentin Clementend 920a0b3029SValentin Clement! CHECK-LABEL: func @_QPrfct2() -> bf16 930a0b3029SValentin Clement! CHECK: return %{{.*}} : bf16 940a0b3029SValentin Clement 950a0b3029SValentin Clementreal function rfct3() 960a0b3029SValentin Clementend 970a0b3029SValentin Clement! CHECK-LABEL: func @_QPrfct3() -> f32 980a0b3029SValentin Clement! CHECK: return %{{.*}} : f32 990a0b3029SValentin Clement 1000a0b3029SValentin Clementreal(8) function rfct4() 1010a0b3029SValentin Clementend 1020a0b3029SValentin Clement! CHECK-LABEL: func @_QPrfct4() -> f64 1030a0b3029SValentin Clement! CHECK: return %{{.*}} : f64 1040a0b3029SValentin Clement 1050a0b3029SValentin Clementreal(10) function rfct5() 1060a0b3029SValentin Clementend 1070a0b3029SValentin Clement! CHECK-LABEL: func @_QPrfct5() -> f80 1080a0b3029SValentin Clement! CHECK: return %{{.*}} : f80 1090a0b3029SValentin Clement 1100a0b3029SValentin Clementreal(16) function rfct6() 1110a0b3029SValentin Clementend 1120a0b3029SValentin Clement! CHECK-LABEL: func @_QPrfct6() -> f128 1130a0b3029SValentin Clement! CHECK: return %{{.*}} : f128 1140a0b3029SValentin Clement 1151ceb1d9bSValentin Clementcomplex(2) function cplxfct1() 1161ceb1d9bSValentin Clementend 1171ceb1d9bSValentin Clement! CHECK-LABEL: func @_QPcplxfct1() -> !fir.complex<2> 1181ceb1d9bSValentin Clement! CHECK: return %{{.*}} : !fir.complex<2> 1191ceb1d9bSValentin Clement 1201ceb1d9bSValentin Clementcomplex(3) function cplxfct2() 1211ceb1d9bSValentin Clementend 1221ceb1d9bSValentin Clement! CHECK-LABEL: func @_QPcplxfct2() -> !fir.complex<3> 1231ceb1d9bSValentin Clement! CHECK: return %{{.*}} : !fir.complex<3> 1241ceb1d9bSValentin Clement 1251ceb1d9bSValentin Clementcomplex(4) function cplxfct3() 1261ceb1d9bSValentin Clementend 1271ceb1d9bSValentin Clement! CHECK-LABEL: func @_QPcplxfct3() -> !fir.complex<4> 1281ceb1d9bSValentin Clement! CHECK: return %{{.*}} : !fir.complex<4> 1291ceb1d9bSValentin Clement 1301ceb1d9bSValentin Clementcomplex(8) function cplxfct4() 1311ceb1d9bSValentin Clementend 1321ceb1d9bSValentin Clement! CHECK-LABEL: func @_QPcplxfct4() -> !fir.complex<8> 1331ceb1d9bSValentin Clement! CHECK: return %{{.*}} : !fir.complex<8> 1341ceb1d9bSValentin Clement 1351ceb1d9bSValentin Clementcomplex(10) function cplxfct5() 1361ceb1d9bSValentin Clementend 1371ceb1d9bSValentin Clement! CHECK-LABEL: func @_QPcplxfct5() -> !fir.complex<10> 1381ceb1d9bSValentin Clement! CHECK: return %{{.*}} : !fir.complex<10> 1391ceb1d9bSValentin Clement 1401ceb1d9bSValentin Clementcomplex(16) function cplxfct6() 1411ceb1d9bSValentin Clementend 1421ceb1d9bSValentin Clement! CHECK-LABEL: func @_QPcplxfct6() -> !fir.complex<16> 1431ceb1d9bSValentin Clement! CHECK: return %{{.*}} : !fir.complex<16> 144*37e84d9bSValentin Clement 145*37e84d9bSValentin Clementfunction fct_with_character_return(i) 146*37e84d9bSValentin Clement character(10) :: fct_with_character_return 147*37e84d9bSValentin Clement integer :: i 148*37e84d9bSValentin Clementend 149*37e84d9bSValentin Clement! CHECK-LABEL: func @_QPfct_with_character_return( 150*37e84d9bSValentin Clement! CHECK-SAME: %{{.*}}: !fir.ref<!fir.char<1,10>>{{.*}}, %{{.*}}: index{{.*}}, %{{.*}}: !fir.ref<i32>{{.*}}) -> !fir.boxchar<1> { 151