Skip to content

Commit 2abf2a6

Browse files
committed
Generate more descriptive name for the vector type.
1 parent c06d841 commit 2abf2a6

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

flang/lib/Optimizer/Transforms/DebugTypeGenerator.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -418,8 +418,16 @@ mlir::LLVM::DITypeAttr DebugTypeGenerator::convertVectorType(
418418
elements.push_back(subrangeTy);
419419
mlir::Type llvmTy = llvmTypeConverter.convertType(vecTy.getEleTy());
420420
uint64_t sizeInBits = dataLayout->getTypeSize(llvmTy) * vecTy.getLen() * 8;
421+
std::string name("vector");
422+
// The element type of the vector must be integer or real so it will be a
423+
// DIBasicTypeAttr.
424+
if (auto ty = mlir::dyn_cast_if_present<mlir::LLVM::DIBasicTypeAttr>(elemTy))
425+
name += " " + ty.getName().str();
426+
427+
name += " (" + std::to_string(vecTy.getLen()) + ")";
421428
return mlir::LLVM::DICompositeTypeAttr::get(
422-
context, llvm::dwarf::DW_TAG_array_type, /*name=*/nullptr,
429+
context, llvm::dwarf::DW_TAG_array_type,
430+
mlir::StringAttr::get(context, name),
423431
/*file=*/nullptr, /*line=*/0, /*scope=*/nullptr, elemTy,
424432
mlir::LLVM::DIFlags::Vector, sizeInBits, /*alignInBits=*/0, elements,
425433
/*dataLocation=*/nullptr, /*rank=*/nullptr, /*allocated=*/nullptr,

flang/test/Transforms/debug-vector-type.fir

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,21 @@
33
module attributes {dlti.dl_spec = #dlti.dl_spec<>} {
44
func.func private @foo1(%arg0: !fir.vector<20:bf16>)
55
// CHECK-DAG: #[[F16:.*]] = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "real", sizeInBits = 16, encoding = DW_ATE_float>
6-
// CHECK-DAG: #llvm.di_composite_type<tag = DW_TAG_array_type, baseType = #[[F16]], flags = Vector, sizeInBits = 320, elements = #llvm.di_subrange<count = 20 : i64>>
6+
// CHECK-DAG: #llvm.di_composite_type<tag = DW_TAG_array_type, name = "vector real (20)", baseType = #[[F16]], flags = Vector, sizeInBits = 320, elements = #llvm.di_subrange<count = 20 : i64>>
77

88
func.func private @foo2(%arg0: !fir.vector<30:f32>)
99
// CHECK-DAG: #[[F32:.*]] = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "real", sizeInBits = 32, encoding = DW_ATE_float>
10-
// CHECK-DAG: #llvm.di_composite_type<tag = DW_TAG_array_type, baseType = #[[F32]], flags = Vector, sizeInBits = 960, elements = #llvm.di_subrange<count = 30 : i64>>
10+
// CHECK-DAG: #llvm.di_composite_type<tag = DW_TAG_array_type, name = "vector real (30)", baseType = #[[F32]], flags = Vector, sizeInBits = 960, elements = #llvm.di_subrange<count = 30 : i64>>
1111

1212
func.func private @foo3(%arg0: !fir.vector<10:f64>)
1313
// CHECK-DAG: #[[F64:.*]] = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "real", sizeInBits = 64, encoding = DW_ATE_float>
14-
// CHECK-DAG: #llvm.di_composite_type<tag = DW_TAG_array_type, baseType = #[[F64]], flags = Vector, sizeInBits = 640, elements = #llvm.di_subrange<count = 10 : i64>>
14+
// CHECK-DAG: #llvm.di_composite_type<tag = DW_TAG_array_type, name = "vector real (10)", baseType = #[[F64]], flags = Vector, sizeInBits = 640, elements = #llvm.di_subrange<count = 10 : i64>>
1515

1616
func.func private @foo4(%arg0: !fir.vector<5:i32>)
1717
// CHECK-DAG: #[[I32:.*]] = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "integer", sizeInBits = 32, encoding = DW_ATE_signed>
18-
// CHECK-DAG: #llvm.di_composite_type<tag = DW_TAG_array_type, baseType = #[[I32]], flags = Vector, sizeInBits = 160, elements = #llvm.di_subrange<count = 5 : i64>>
18+
// CHECK-DAG: #llvm.di_composite_type<tag = DW_TAG_array_type, name = "vector integer (5)", baseType = #[[I32]], flags = Vector, sizeInBits = 160, elements = #llvm.di_subrange<count = 5 : i64>>
1919

2020
func.func private @foo5(%arg0: !fir.vector<2:i64>)
2121
// CHECK-DAG: #[[I64:.*]] = #llvm.di_basic_type<tag = DW_TAG_base_type, name = "integer", sizeInBits = 64, encoding = DW_ATE_signed>
22-
// CHECK-DAG: #llvm.di_composite_type<tag = DW_TAG_array_type, baseType = #[[I64]], flags = Vector, sizeInBits = 128, elements = #llvm.di_subrange<count = 2 : i64>>
22+
// CHECK-DAG: #llvm.di_composite_type<tag = DW_TAG_array_type, name = "vector integer (2)", baseType = #[[I64]], flags = Vector, sizeInBits = 128, elements = #llvm.di_subrange<count = 2 : i64>>
2323
}

0 commit comments

Comments
 (0)