brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.0 KiB · 4a9b65b Raw
76 lines · plain
1! RUN: bbc -emit-hlfir %s -o - | FileCheck %s2! RUN: %flang_fc1 -emit-hlfir %s -o - | FileCheck %s3 4! CHECK-LABEL: func.func @_QPmalloc_ptr() {5subroutine malloc_ptr()6  integer :: x7  pointer (ptr_x, x)8  ! CHECK:           %[[X:.*]] = fir.alloca !fir.box<!fir.ptr<i32>>9  ! CHECK:           %[[X_PTR:.*]] = fir.alloca i64 {bindc_name = "ptr_x", uniq_name = "_QFmalloc_ptrEptr_x"}10  ! CHECK:           %[[X_PTR_DECL:.*]]:2 = hlfir.declare %[[X_PTR]] {uniq_name = "_QFmalloc_ptrEptr_x"} : (!fir.ref<i64>) -> (!fir.ref<i64>, !fir.ref<i64>)11  ! CHECK:           %[[CST:.*]] = arith.constant 4 : i3212  ! CHECK:           %[[CST_I64:.*]] = fir.convert %[[CST]] : (i32) -> i6413  ! CHECK:           %[[ALLOC:.*]] = fir.call @_FortranAMalloc(%[[CST_I64]]) fastmath<contract> : (i64) -> i6414  ! CHECK:           hlfir.assign %[[ALLOC]] to %[[X_PTR_DECL]]#0 : i64, !fir.ref<i64>15  ! CHECK:           return16  ptr_x = malloc(4)17end subroutine18 19! gfortran allows malloc to be assigned to integers, so we accept it.20 21! CHECK-LABEL:   func.func @_QPmalloc_i8() {22subroutine malloc_i8()23  integer(kind=1) :: x24! CHECK:           %[[X:.*]] = fir.alloca i8 {bindc_name = "x", uniq_name = "_QFmalloc_i8Ex"}25! CHECK:           %[[X_DECL:.*]]:2 = hlfir.declare %[[X]] {uniq_name = "_QFmalloc_i8Ex"} : (!fir.ref<i8>) -> (!fir.ref<i8>, !fir.ref<i8>)26! CHECK:           %[[CST:.*]] = arith.constant 1 : i3227! CHECK:           %[[CST_I64:.*]] = fir.convert %[[CST]] : (i32) -> i6428! CHECK:           %[[ALLOC:.*]] = fir.call @_FortranAMalloc(%[[CST_I64]]) fastmath<contract> : (i64) -> i6429! CHECK:           %[[ALLOC_I8:.*]] = fir.convert %[[ALLOC]] : (i64) -> i830! CHECK:           hlfir.assign %[[ALLOC_I8]] to %[[X_DECL]]#0 : i8, !fir.ref<i8>31! CHECK:           return32  x = malloc(1)33end subroutine34 35! CHECK-LABEL:   func.func @_QPmalloc_i16() {36subroutine malloc_i16()37  integer(kind=2) :: x38! CHECK:           %[[X:.*]] = fir.alloca i16 {bindc_name = "x", uniq_name = "_QFmalloc_i16Ex"}39! CHECK:           %[[X_DECL:.*]]:2 = hlfir.declare %[[X]] {uniq_name = "_QFmalloc_i16Ex"} : (!fir.ref<i16>) -> (!fir.ref<i16>, !fir.ref<i16>)40! CHECK:           %[[CST:.*]] = arith.constant 1 : i3241! CHECK:           %[[CST_I64:.*]] = fir.convert %[[CST]] : (i32) -> i6442! CHECK:           %[[ALLOC:.*]] = fir.call @_FortranAMalloc(%[[CST_I64]]) fastmath<contract> : (i64) -> i6443! CHECK:           %[[ALLOC_I16:.*]] = fir.convert %[[ALLOC]] : (i64) -> i1644! CHECK:           hlfir.assign %[[ALLOC_I16]] to %[[X_DECL]]#0 : i16, !fir.ref<i16>45! CHECK:           return46  x = malloc(1)47end subroutine48 49 50! CHECK-LABEL:   func.func @_QPmalloc_i32() {51subroutine malloc_i32()52  integer(kind=4) :: x53! CHECK:           %[[X:.*]] = fir.alloca i32 {bindc_name = "x", uniq_name = "_QFmalloc_i32Ex"}54! CHECK:           %[[X_DECL:.*]]:2 = hlfir.declare %[[X]] {uniq_name = "_QFmalloc_i32Ex"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)55! CHECK:           %[[CST:.*]] = arith.constant 1 : i3256! CHECK:           %[[CST_I64:.*]] = fir.convert %[[CST]] : (i32) -> i6457! CHECK:           %[[ALLOC:.*]] = fir.call @_FortranAMalloc(%[[CST_I64]]) fastmath<contract> : (i64) -> i6458! CHECK:           %[[ALLOC_I32:.*]] = fir.convert %[[ALLOC]] : (i64) -> i3259! CHECK:           hlfir.assign %[[ALLOC_I32]] to %[[X_DECL]]#0 : i32, !fir.ref<i32>60! CHECK:           return61  x = malloc(1)62end subroutine63 64! CHECK-LABEL:   func.func @_QPmalloc_i64() {65subroutine malloc_i64()66  integer(kind=8) :: x67! CHECK:           %[[X:.*]] = fir.alloca i64 {bindc_name = "x", uniq_name = "_QFmalloc_i64Ex"}68! CHECK:           %[[X_DECL:.*]]:2 = hlfir.declare %[[X]] {uniq_name = "_QFmalloc_i64Ex"} : (!fir.ref<i64>) -> (!fir.ref<i64>, !fir.ref<i64>)69! CHECK:           %[[CST:.*]] = arith.constant 1 : i3270! CHECK:           %[[CST_I64:.*]] = fir.convert %[[CST]] : (i32) -> i6471! CHECK:           %[[ALLOC:.*]] = fir.call @_FortranAMalloc(%[[CST_I64]]) fastmath<contract> : (i64) -> i6472! CHECK:           hlfir.assign %[[ALLOC]] to %[[X_DECL]]#0 : i64, !fir.ref<i64>73! CHECK:           return74  x = malloc(1)75end subroutine76