@@ -56,3 +56,73 @@ module attributes {dlti.dl_spec = #dlti.dl_spec<f80 = dense<128> : vector<2xi64>
56
56
// CHECK-LABEL: llvm.func @_QQmain()
57
57
// CHECK: llvm.call @_FortranACUFMemAlloc
58
58
// CHECK: llvm.call @_FortranACUFAllocDesciptor
59
+
60
+ // -----
61
+
62
+ module attributes {dlti.dl_spec = #dlti.dl_spec <f80 = dense <128 > : vector <2 xi64 >, i128 = dense <128 > : vector <2 xi64 >, i64 = dense <64 > : vector <2 xi64 >, !llvm.ptr <272 > = dense <64 > : vector <4 xi64 >, !llvm.ptr <271 > = dense <32 > : vector <4 xi64 >, !llvm.ptr <270 > = dense <32 > : vector <4 xi64 >, f128 = dense <128 > : vector <2 xi64 >, f64 = dense <64 > : vector <2 xi64 >, f16 = dense <16 > : vector <2 xi64 >, i32 = dense <32 > : vector <2 xi64 >, i16 = dense <16 > : vector <2 xi64 >, i8 = dense <8 > : vector <2 xi64 >, i1 = dense <8 > : vector <2 xi64 >, !llvm.ptr = dense <64 > : vector <4 xi64 >, " dlti.endianness" = " little" , " dlti.stack_alignment" = 128 : i64 >} {
63
+ func.func @_QQmain () attributes {fir.bindc_name = " p1" } {
64
+ %c1_i32 = arith.constant 1 : i32
65
+ %c0_i32 = arith.constant 0 : i32
66
+ %c16_i32 = arith.constant 16 : i32
67
+ %c1 = arith.constant 1 : index
68
+ %c0 = arith.constant 0 : index
69
+ %0 = fir.alloca i32 {bindc_name = " iblk" , uniq_name = " _QFEiblk" }
70
+ %1 = fir.alloca i32 {bindc_name = " ithr" , uniq_name = " _QFEithr" }
71
+ %2 = fir.address_of (@_QQclX64756D6D792E6D6C697200 ) : !fir.ref <!fir.char <1 ,11 >>
72
+ %c14_i32 = arith.constant 14 : i32
73
+ %c72 = arith.constant 72 : index
74
+ %3 = fir.convert %c72 : (index ) -> i64
75
+ %4 = fir.convert %2 : (!fir.ref <!fir.char <1 ,11 >>) -> !fir.ref <i8 >
76
+ %5 = fir.call @_FortranACUFAllocDesciptor (%3 , %4 , %c14_i32 ) : (i64 , !fir.ref <i8 >, i32 ) -> !fir.ref <!fir.box <none >>
77
+ %6 = fir.convert %5 : (!fir.ref <!fir.box <none >>) -> !fir.ref <!fir.box <!fir.heap <!fir.array <?x ?xf32 >>>>
78
+ %7 = fir.zero_bits !fir.heap <!fir.array <?x ?xf32 >>
79
+ %8 = fircg.ext_embox %7 (%c0 , %c0 ) {allocator_idx = 2 : i32 } : (!fir.heap <!fir.array <?x ?xf32 >>, index , index ) -> !fir.box <!fir.heap <!fir.array <?x ?xf32 >>>
80
+ fir.store %8 to %6 : !fir.ref <!fir.box <!fir.heap <!fir.array <?x ?xf32 >>>>
81
+ %9 = fir.address_of (@_QQclX64756D6D792E6D6C697200 ) : !fir.ref <!fir.char <1 ,11 >>
82
+ %c20_i32 = arith.constant 20 : i32
83
+ %c48 = arith.constant 48 : index
84
+ %10 = fir.convert %c48 : (index ) -> i64
85
+ %11 = fir.convert %9 : (!fir.ref <!fir.char <1 ,11 >>) -> !fir.ref <i8 >
86
+ %12 = fir.call @_FortranACUFAllocDesciptor (%10 , %11 , %c20_i32 ) : (i64 , !fir.ref <i8 >, i32 ) -> !fir.ref <!fir.box <none >>
87
+ %13 = fir.convert %12 : (!fir.ref <!fir.box <none >>) -> !fir.ref <!fir.box <!fir.heap <!fir.array <?xf32 >>>>
88
+ %14 = fir.zero_bits !fir.heap <!fir.array <?xf32 >>
89
+ %15 = fircg.ext_embox %14 (%c0 ) {allocator_idx = 2 : i32 } : (!fir.heap <!fir.array <?xf32 >>, index ) -> !fir.box <!fir.heap <!fir.array <?xf32 >>>
90
+ fir.store %15 to %13 : !fir.ref <!fir.box <!fir.heap <!fir.array <?xf32 >>>>
91
+ %16 = fir.convert %6 : (!fir.ref <!fir.box <!fir.heap <!fir.array <?x ?xf32 >>>>) -> !fir.ref <!fir.box <none >>
92
+ %17 = fir.convert %c1 : (index ) -> i64
93
+ %18 = fir.convert %c16_i32 : (i32 ) -> i64
94
+ %19 = fir.call @_FortranAAllocatableSetBounds (%16 , %c0_i32 , %17 , %18 ) fastmath <contract > : (!fir.ref <!fir.box <none >>, i32 , i64 , i64 ) -> none
95
+ %20 = fir.call @_FortranAAllocatableSetBounds (%16 , %c1_i32 , %17 , %18 ) fastmath <contract > : (!fir.ref <!fir.box <none >>, i32 , i64 , i64 ) -> none
96
+ %21 = fir.address_of (@_QQclX64756D6D792E6D6C697200 ) : !fir.ref <!fir.char <1 ,11 >>
97
+ %c31_i32 = arith.constant 31 : i32
98
+ %false = arith.constant false
99
+ %22 = fir.absent !fir.box <none >
100
+ %c -1 _i64 = arith.constant -1 : i64
101
+ %23 = fir.convert %6 : (!fir.ref <!fir.box <!fir.heap <!fir.array <?x ?xf32 >>>>) -> !fir.ref <!fir.box <none >>
102
+ %24 = fir.convert %21 : (!fir.ref <!fir.char <1 ,11 >>) -> !fir.ref <i8 >
103
+ %25 = fir.call @_FortranACUFAllocatableAllocate (%23 , %c -1 _i64 , %false , %22 , %24 , %c31_i32 ) : (!fir.ref <!fir.box <none >>, i64 , i1 , !fir.box <none >, !fir.ref <i8 >, i32 ) -> i32
104
+ %26 = fir.convert %13 : (!fir.ref <!fir.box <!fir.heap <!fir.array <?xf32 >>>>) -> !fir.ref <!fir.box <none >>
105
+ %27 = fir.call @_FortranAAllocatableSetBounds (%26 , %c0_i32 , %17 , %18 ) fastmath <contract > : (!fir.ref <!fir.box <none >>, i32 , i64 , i64 ) -> none
106
+ %28 = fir.address_of (@_QQclX64756D6D792E6D6C697200 ) : !fir.ref <!fir.char <1 ,11 >>
107
+ %c34_i32 = arith.constant 34 : i32
108
+ %false_0 = arith.constant false
109
+ %29 = fir.absent !fir.box <none >
110
+ %c -1 _i64 _1 = arith.constant -1 : i64
111
+ %30 = fir.convert %13 : (!fir.ref <!fir.box <!fir.heap <!fir.array <?xf32 >>>>) -> !fir.ref <!fir.box <none >>
112
+ %31 = fir.convert %28 : (!fir.ref <!fir.char <1 ,11 >>) -> !fir.ref <i8 >
113
+ %32 = fir.call @_FortranACUFAllocatableAllocate (%30 , %c -1 _i64 _1 , %false_0 , %29 , %31 , %c34_i32 ) : (!fir.ref <!fir.box <none >>, i64 , i1 , !fir.box <none >, !fir.ref <i8 >, i32 ) -> i32
114
+ %33 = fir.load %6 : !fir.ref <!fir.box <!fir.heap <!fir.array <?x ?xf32 >>>>
115
+ %34 = fircg.ext_rebox %33 : (!fir.box <!fir.heap <!fir.array <?x ?xf32 >>>) -> !fir.box <!fir.array <?x ?xf32 >>
116
+ return
117
+ }
118
+ func.func private @_FortranAAllocatableSetBounds (!fir.ref <!fir.box <none >>, i32 , i64 , i64 ) -> none attributes {fir.runtime }
119
+ fir.global linkonce @_QQclX64756D6D792E6D6C697200 constant : !fir.char <1 ,11 > {
120
+ %0 = fir.string_lit " dummy.mlir\00" (11 ) : !fir.char <1 ,11 >
121
+ fir.has_value %0 : !fir.char <1 ,11 >
122
+ }
123
+ func.func private @_FortranACUFAllocDesciptor (i64 , !fir.ref <i8 >, i32 ) -> !fir.ref <!fir.box <none >> attributes {fir.runtime }
124
+ func.func private @_FortranACUFAllocatableAllocate (!fir.ref <!fir.box <none >>, i64 , i1 , !fir.box <none >, !fir.ref <i8 >, i32 ) -> i32 attributes {fir.runtime }
125
+ }
126
+
127
+ // CHECK-LABEL: llvm.func @_QQmain()
128
+ // CHECK-COUNT-4: llvm.call @_FortranACUFAllocDesciptor
0 commit comments