1// RUN: fir-opt --add-debug-info --mlir-print-debuginfo %s | FileCheck %s 2 3module attributes {dlti.dl_spec = #dlti.dl_spec<>} { 4 fir.global @_QMhelperEpar : !fir.box<!fir.ptr<!fir.array<?x?xf32>>> { 5 %0 = fir.zero_bits !fir.ptr<!fir.array<?x?xf32>> 6 %c0 = arith.constant 0 : index 7 %1 = fir.shape %c0, %c0 : (index, index) -> !fir.shape<2> 8 %2 = fir.embox %0(%1) : (!fir.ptr<!fir.array<?x?xf32>>, !fir.shape<2>) -> !fir.box<!fir.ptr<!fir.array<?x?xf32>>> 9 fir.has_value %2 : !fir.box<!fir.ptr<!fir.array<?x?xf32>>> 10 } loc(#loc1) 11 fir.global @_QMhelperEpar2 : !fir.box<!fir.ptr<!fir.array<?xi32>>> { 12 %0 = fir.zero_bits !fir.ptr<!fir.array<?xi32>> 13 %c0 = arith.constant 0 : index 14 %1 = fir.shape %c0 : (index) -> !fir.shape<1> 15 %2 = fir.embox %0(%1) : (!fir.ptr<!fir.array<?xi32>>, !fir.shape<1>) -> !fir.box<!fir.ptr<!fir.array<?xi32>>> 16 fir.has_value %2 : !fir.box<!fir.ptr<!fir.array<?xi32>>> 17 } loc(#loc2) 18 fir.global @_QMhelperEpsc : !fir.box<!fir.ptr<i32>> { 19 %0 = fir.zero_bits !fir.ptr<i32> 20 %1 = fir.embox %0 : (!fir.ptr<i32>) -> !fir.box<!fir.ptr<i32>> 21 fir.has_value %1 : !fir.box<!fir.ptr<i32>> 22 } loc(#loc3) 23 fir.global @_QMmEpstr : !fir.box<!fir.ptr<!fir.char<1,16>>> { 24 %0 = fir.zero_bits !fir.ptr<!fir.char<1,16>> 25 %1 = fir.embox %0 : (!fir.ptr<!fir.char<1,16>>) -> !fir.box<!fir.ptr<!fir.char<1,16>>> 26 fir.has_value %1 : !fir.box<!fir.ptr<!fir.char<1,16>>> 27 } loc(#loc4) 28} 29#loc1 = loc("test.f90":5:1) 30#loc2 = loc("test.f90":6:1) 31#loc3 = loc("test.f90":7:1) 32#loc4 = loc("test.f90":8:1) 33 34// CHECK-DAG: #[[INT_TY:.*]] = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "integer"{{.*}}> 35// CHECK-DAG: #[[ARR1_TY:.*]] = #llvm.di_composite_type<tag = DW_TAG_array_type{{.*}}elements = #llvm.di_subrange<count = #llvm.di_expression<{{.*}}>, lowerBound = #llvm.di_expression<{{.*}}>, #llvm.di_subrange<count = #llvm.di_expression<{{.*}}>, lowerBound = #llvm.di_expression<{{.*}}>>, dataLocation = {{.*}}, associated = <[DW_OP_push_object_address, DW_OP_deref, DW_OP_lit0, DW_OP_ne]>> 36// CHECK-DAG: #[[ARR2_TY:.*]] = #llvm.di_composite_type<tag = DW_TAG_array_type{{.*}}elements = #llvm.di_subrange<count = #llvm.di_expression<{{.*}}>, lowerBound = #llvm.di_expression<{{.*}}>>, dataLocation = {{.*}}, associated = <[DW_OP_push_object_address, DW_OP_deref, DW_OP_lit0, DW_OP_ne]>> 37// CHECK-DAG: #[[PTR_TY:.*]] = #llvm.di_derived_type<tag = DW_TAG_pointer_type{{.*}}baseType = #[[INT_TY]]{{.*}}> 38// CHECK-DAG: #llvm.di_global_variable<{{.*}}name = "par"{{.*}}type = #[[ARR1_TY]]{{.*}}> 39// CHECK-DAG: #llvm.di_global_variable<{{.*}}name = "par2"{{.*}}type = #[[ARR2_TY]]{{.*}}> 40// CHECK-DAG: #llvm.di_global_variable<{{.*}}name = "psc"{{.*}}type = #[[PTR_TY]]{{.*}}> 41