brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.1 KiB · c250a98 Raw
159 lines · plain
1! RUN: bbc -emit-hlfir %s -o - | FileCheck %s --check-prefixes=CHECK%if target=x86_64{{.*}} %{,CHECK-KIND10%}%if flang-supports-f128-math %{,CHECK-KIND16%}2 3integer(1) function fct1()4end5! CHECK-LABEL: func @_QPfct1() -> i86! CHECK:         return %{{.*}} : i87 8integer(2) function fct2()9end10! CHECK-LABEL: func @_QPfct2() -> i1611! CHECK:         return %{{.*}} : i1612 13integer(4) function fct3()14end15! CHECK-LABEL: func @_QPfct3() -> i3216! CHECK:         return %{{.*}} : i3217 18integer(8) function fct4()19end20! CHECK-LABEL: func @_QPfct4() -> i6421! CHECK:         return %{{.*}} : i6422 23integer(16) function fct5()24end25! CHECK-LABEL: func @_QPfct5() -> i12826! CHECK:         return %{{.*}} : i12827 28function fct()29  integer :: fct30end31! CHECK-LABEL: func @_QPfct() -> i3232! CHECK:         return %{{.*}} : i3233 34function fct_res() result(res)35  integer :: res36end37! CHECK-LABEL: func @_QPfct_res() -> i3238! CHECK:         return %{{.*}} : i3239 40integer function fct_body()41  goto 142  1 stop43end44 45! CHECK-LABEL: func @_QPfct_body() -> i3246! CHECK:         cf.br ^bb147! CHECK:       ^bb148! CHECK:         fir.call @_FortranAStopStatement49! CHECK:         fir.unreachable50 51function fct_iarr1()52  integer, dimension(10) :: fct_iarr153end54 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_iarr260end61 62! CHECK-LABEL: func @_QPfct_iarr2() -> !fir.array<10x20xi32>63! CHECK:         return %{{.*}} : !fir.array<10x20xi32>64 65logical(1) function lfct1()66end67! CHECK-LABEL: func @_QPlfct1() -> !fir.logical<1>68! CHECK:         return %{{.*}} : !fir.logical<1>69 70logical(2) function lfct2()71end72! CHECK-LABEL: func @_QPlfct2() -> !fir.logical<2>73! CHECK:         return %{{.*}} : !fir.logical<2>74 75logical(4) function lfct3()76end77! CHECK-LABEL: func @_QPlfct3() -> !fir.logical<4>78! CHECK:         return %{{.*}} : !fir.logical<4>79 80logical(8) function lfct4()81end82! CHECK-LABEL: func @_QPlfct4() -> !fir.logical<8>83! CHECK:         return %{{.*}} : !fir.logical<8>84 85real(2) function rfct1()86end87! CHECK-LABEL: func @_QPrfct1() -> f1688! CHECK:         return %{{.*}} : f1689 90real(3) function rfct2()91end92! CHECK-LABEL: func @_QPrfct2() -> bf1693! CHECK:         return %{{.*}} : bf1694 95real function rfct3()96end97! CHECK-LABEL: func @_QPrfct3() -> f3298! CHECK:         return %{{.*}} : f3299 100real(8) function rfct4()101end102! CHECK-LABEL: func @_QPrfct4() -> f64103! CHECK:         return %{{.*}} : f64104 105function rfct5()106  integer, parameter :: kind10 = merge(10, 4, selected_real_kind(p=18).eq.10)107  real(kind10) :: rfct5108end109! CHECK-KIND10-LABEL: func @_QPrfct5() -> f80110! CHECK-KIND10:         return %{{.*}} : f80111 112function rfct6()113  integer, parameter :: kind16 = merge(16, 4, selected_real_kind(p=33).eq.16)114  real(kind16) :: rfct6115end116! CHECK-KIND16-LABEL: func @_QPrfct6() -> f128117! CHECK-KIND16:         return %{{.*}} : f128118 119complex(2) function cplxfct1()120end121! CHECK-LABEL: func @_QPcplxfct1() -> complex<f16>122! CHECK:         return %{{.*}} : complex<f16>123 124complex(3) function cplxfct2()125end126! CHECK-LABEL: func @_QPcplxfct2() -> complex<bf16>127! CHECK:         return %{{.*}} : complex<bf16>128 129complex(4) function cplxfct3()130end131! CHECK-LABEL: func @_QPcplxfct3() -> complex<f32>132! CHECK:         return %{{.*}} : complex<f32>133 134complex(8) function cplxfct4()135end136! CHECK-LABEL: func @_QPcplxfct4() -> complex<f64>137! CHECK:         return %{{.*}} : complex<f64>138 139function cplxfct5()140  integer, parameter :: kind10 = merge(10, 4, selected_real_kind(p=18).eq.10)141  complex(kind10) :: cplxfct5142end143! CHECK-KIND10-LABEL: func @_QPcplxfct5() -> complex<f80>144! CHECK-KIND10:         return %{{.*}} : complex<f80>145 146function cplxfct6()147  integer, parameter :: kind16 = merge(16, 4, selected_real_kind(p=33).eq.16)148  complex(kind16) :: cplxfct6149end150! CHECK-KIND16-LABEL: func @_QPcplxfct6() -> complex<f128>151! CHECK-KIND16:         return %{{.*}} : complex<f128>152 153function fct_with_character_return(i)154  character(10) :: fct_with_character_return155  integer :: i156end157! CHECK-LABEL: func @_QPfct_with_character_return(158! CHECK-SAME: %{{.*}}: !fir.ref<!fir.char<1,10>>{{.*}}, %{{.*}}: index{{.*}}, %{{.*}}: !fir.ref<i32>{{.*}}) -> !fir.boxchar<1> {159