From 2abf2a6ea6f8faef323302f20f7805e09045da4c Mon Sep 17 00:00:00 2001 From: Abid Qadeer Date: Wed, 23 Oct 2024 13:11:41 +0100 Subject: [PATCH] Generate more descriptive name for the vector type. --- flang/lib/Optimizer/Transforms/DebugTypeGenerator.cpp | 10 +++++++++- flang/test/Transforms/debug-vector-type.fir | 10 +++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/flang/lib/Optimizer/Transforms/DebugTypeGenerator.cpp b/flang/lib/Optimizer/Transforms/DebugTypeGenerator.cpp index 5b6b5b22409b5..6b125a4aa39fc 100644 --- a/flang/lib/Optimizer/Transforms/DebugTypeGenerator.cpp +++ b/flang/lib/Optimizer/Transforms/DebugTypeGenerator.cpp @@ -418,8 +418,16 @@ mlir::LLVM::DITypeAttr DebugTypeGenerator::convertVectorType( elements.push_back(subrangeTy); mlir::Type llvmTy = llvmTypeConverter.convertType(vecTy.getEleTy()); uint64_t sizeInBits = dataLayout->getTypeSize(llvmTy) * vecTy.getLen() * 8; + std::string name("vector"); + // The element type of the vector must be integer or real so it will be a + // DIBasicTypeAttr. + if (auto ty = mlir::dyn_cast_if_present(elemTy)) + name += " " + ty.getName().str(); + + name += " (" + std::to_string(vecTy.getLen()) + ")"; return mlir::LLVM::DICompositeTypeAttr::get( - context, llvm::dwarf::DW_TAG_array_type, /*name=*/nullptr, + context, llvm::dwarf::DW_TAG_array_type, + mlir::StringAttr::get(context, name), /*file=*/nullptr, /*line=*/0, /*scope=*/nullptr, elemTy, mlir::LLVM::DIFlags::Vector, sizeInBits, /*alignInBits=*/0, elements, /*dataLocation=*/nullptr, /*rank=*/nullptr, /*allocated=*/nullptr, diff --git a/flang/test/Transforms/debug-vector-type.fir b/flang/test/Transforms/debug-vector-type.fir index 01f68d87286dc..63846ce006c6c 100644 --- a/flang/test/Transforms/debug-vector-type.fir +++ b/flang/test/Transforms/debug-vector-type.fir @@ -3,21 +3,21 @@ module attributes {dlti.dl_spec = #dlti.dl_spec<>} { func.func private @foo1(%arg0: !fir.vector<20:bf16>) // CHECK-DAG: #[[F16:.*]] = #llvm.di_basic_type -// CHECK-DAG: #llvm.di_composite_type> +// CHECK-DAG: #llvm.di_composite_type> func.func private @foo2(%arg0: !fir.vector<30:f32>) // CHECK-DAG: #[[F32:.*]] = #llvm.di_basic_type -// CHECK-DAG: #llvm.di_composite_type> +// CHECK-DAG: #llvm.di_composite_type> func.func private @foo3(%arg0: !fir.vector<10:f64>) // CHECK-DAG: #[[F64:.*]] = #llvm.di_basic_type -// CHECK-DAG: #llvm.di_composite_type> +// CHECK-DAG: #llvm.di_composite_type> func.func private @foo4(%arg0: !fir.vector<5:i32>) // CHECK-DAG: #[[I32:.*]] = #llvm.di_basic_type -// CHECK-DAG: #llvm.di_composite_type> +// CHECK-DAG: #llvm.di_composite_type> func.func private @foo5(%arg0: !fir.vector<2:i64>) // CHECK-DAG: #[[I64:.*]] = #llvm.di_basic_type -// CHECK-DAG: #llvm.di_composite_type> +// CHECK-DAG: #llvm.di_composite_type> }