81 lines · plain
1! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s2 3! CHECK-LABEL: func.func @_QPselected_int_kind_test1(4! CHECK-SAME: %[[VAL_0:.*]]: !fir.ref<i8> {fir.bindc_name = "a"}) {5! CHECK: %[[VAL_1:.*]] = fir.alloca i8 {bindc_name = "res", uniq_name = "_QFselected_int_kind_test1Eres"}6! CHECK: %[[VAL_4:.*]] = arith.constant 1 : i327! CHECK: %[[VAL_6:.*]] = fir.convert %[[VAL_0]] : (!fir.ref<i8>) -> !fir.llvm_ptr<i8>8! CHECK: %[[VAL_7:.*]] = fir.call @_FortranASelectedIntKind(%{{.*}}, %{{.*}}, %[[VAL_6]], %[[VAL_4]]) {{.*}}: (!fir.ref<i8>, i32, !fir.llvm_ptr<i8>, i32) -> i329! CHECK: %[[VAL_8:.*]] = fir.convert %[[VAL_7]] : (i32) -> i810! CHECK: fir.store %[[VAL_8]] to %[[VAL_1]] : !fir.ref<i8>11! CHECK: return12! CHECK: }13 14subroutine selected_int_kind_test1(a)15 integer(1) :: a, res16 res = selected_int_kind(a)17end18 19! CHECK-LABEL: func.func @_QPselected_int_kind_test2(20! CHECK-SAME: %[[VAL_0:.*]]: !fir.ref<i16> {fir.bindc_name = "a"}) {21! CHECK: %[[VAL_1:.*]] = fir.alloca i16 {bindc_name = "res", uniq_name = "_QFselected_int_kind_test2Eres"}22! CHECK: %[[VAL_4:.*]] = arith.constant 2 : i3223! CHECK: %[[VAL_6:.*]] = fir.convert %[[VAL_0]] : (!fir.ref<i16>) -> !fir.llvm_ptr<i8>24! CHECK: %[[VAL_7:.*]] = fir.call @_FortranASelectedIntKind(%{{.*}}, %{{.*}}, %[[VAL_6]], %[[VAL_4]]) {{.*}}: (!fir.ref<i8>, i32, !fir.llvm_ptr<i8>, i32) -> i3225! CHECK: %[[VAL_8:.*]] = fir.convert %[[VAL_7]] : (i32) -> i1626! CHECK: fir.store %[[VAL_8]] to %[[VAL_1]] : !fir.ref<i16>27! CHECK: return28! CHECK: }29 30subroutine selected_int_kind_test2(a)31 integer(2) :: a, res32 res = selected_int_kind(a)33end34 35! CHECK-LABEL: func.func @_QPselected_int_kind_test4(36! CHECK-SAME: %[[VAL_0:.*]]: !fir.ref<i32> {fir.bindc_name = "a"}) {37! CHECK: %[[VAL_1:.*]] = fir.alloca i32 {bindc_name = "res", uniq_name = "_QFselected_int_kind_test4Eres"}38! CHECK: %[[VAL_4:.*]] = arith.constant 4 : i3239! CHECK: %[[VAL_6:.*]] = fir.convert %[[VAL_0]] : (!fir.ref<i32>) -> !fir.llvm_ptr<i8>40! CHECK: %[[VAL_7:.*]] = fir.call @_FortranASelectedIntKind(%{{.*}}, %{{.*}}, %[[VAL_6]], %[[VAL_4]]) {{.*}}: (!fir.ref<i8>, i32, !fir.llvm_ptr<i8>, i32) -> i3241! CHECK: fir.store %[[VAL_7]] to %[[VAL_1]] : !fir.ref<i32>42! CHECK: return43! CHECK: }44 45subroutine selected_int_kind_test4(a)46 integer(4) :: a, res47 res = selected_int_kind(a)48end49 50! CHECK-LABEL: func.func @_QPselected_int_kind_test8(51! CHECK-SAME: %[[VAL_0:.*]]: !fir.ref<i64> {fir.bindc_name = "a"}) {52! CHECK: %[[VAL_1:.*]] = fir.alloca i64 {bindc_name = "res", uniq_name = "_QFselected_int_kind_test8Eres"}53! CHECK: %[[VAL_4:.*]] = arith.constant 8 : i3254! CHECK: %[[VAL_6:.*]] = fir.convert %[[VAL_0]] : (!fir.ref<i64>) -> !fir.llvm_ptr<i8>55! CHECK: %[[VAL_7:.*]] = fir.call @_FortranASelectedIntKind(%{{.*}}, %{{.*}}, %[[VAL_6]], %[[VAL_4]]) {{.*}}: (!fir.ref<i8>, i32, !fir.llvm_ptr<i8>, i32) -> i3256! CHECK: %[[VAL_8:.*]] = fir.convert %[[VAL_7]] : (i32) -> i6457! CHECK: fir.store %[[VAL_8]] to %[[VAL_1]] : !fir.ref<i64>58! CHECK: return59! CHECK: }60 61subroutine selected_int_kind_test8(a)62 integer(8) :: a, res63 res = selected_int_kind(a)64end65 66! CHECK-LABEL: func.func @_QPselected_int_kind_test16(67! CHECK-SAME: %[[VAL_0:.*]]: !fir.ref<i128> {fir.bindc_name = "a"}) {68! CHECK: %[[VAL_1:.*]] = fir.alloca i128 {bindc_name = "res", uniq_name = "_QFselected_int_kind_test16Eres"}69! CHECK: %[[VAL_4:.*]] = arith.constant 16 : i3270! CHECK: %[[VAL_6:.*]] = fir.convert %[[VAL_0]] : (!fir.ref<i128>) -> !fir.llvm_ptr<i8>71! CHECK: %[[VAL_7:.*]] = fir.call @_FortranASelectedIntKind(%{{.*}}, %{{.*}}, %[[VAL_6]], %[[VAL_4]]) {{.*}}: (!fir.ref<i8>, i32, !fir.llvm_ptr<i8>, i32) -> i3272! CHECK: %[[VAL_8:.*]] = fir.convert %[[VAL_7]] : (i32) -> i12873! CHECK: fir.store %[[VAL_8]] to %[[VAL_1]] : !fir.ref<i128>74! CHECK: return75! CHECK: }76 77subroutine selected_int_kind_test16(a)78 integer(16) :: a, res79 res = selected_int_kind(a)80end81