From 45012699725480fcd89461623e887ca0f96a4c89 Mon Sep 17 00:00:00 2001 From: Billy Zhu Date: Tue, 9 Apr 2024 15:20:51 +0200 Subject: [PATCH 1/3] must not cache temporaries --- mlir/lib/Target/LLVMIR/DebugTranslation.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mlir/lib/Target/LLVMIR/DebugTranslation.cpp b/mlir/lib/Target/LLVMIR/DebugTranslation.cpp index 46e2e7f2ba5dc..905af7175f183 100644 --- a/mlir/lib/Target/LLVMIR/DebugTranslation.cpp +++ b/mlir/lib/Target/LLVMIR/DebugTranslation.cpp @@ -352,7 +352,8 @@ llvm::DINode *DebugTranslation::translate(DINodeAttr attr) { DISubroutineTypeAttr>( [&](auto attr) { return translateImpl(attr); }); - attrToNode.insert({attr, node}); + if (!node->isTemporary()) + attrToNode.insert({attr, node}); return node; } From 7906e71b920bada1898a17a40a7f3742c2660adc Mon Sep 17 00:00:00 2001 From: Billy Zhu Date: Sun, 14 Apr 2024 18:04:58 -0700 Subject: [PATCH 2/3] fix null --- mlir/lib/Target/LLVMIR/DebugTranslation.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mlir/lib/Target/LLVMIR/DebugTranslation.cpp b/mlir/lib/Target/LLVMIR/DebugTranslation.cpp index 905af7175f183..2de5e372d88c0 100644 --- a/mlir/lib/Target/LLVMIR/DebugTranslation.cpp +++ b/mlir/lib/Target/LLVMIR/DebugTranslation.cpp @@ -352,7 +352,7 @@ llvm::DINode *DebugTranslation::translate(DINodeAttr attr) { DISubroutineTypeAttr>( [&](auto attr) { return translateImpl(attr); }); - if (!node->isTemporary()) + if (node && !node->isTemporary()) attrToNode.insert({attr, node}); return node; } From 2c2e9a2332a40d83c716064d5a8de10bc2416d01 Mon Sep 17 00:00:00 2001 From: Billy Zhu Date: Sun, 14 Apr 2024 18:38:28 -0700 Subject: [PATCH 3/3] update test --- mlir/test/Target/LLVMIR/llvmir-debug.mlir | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mlir/test/Target/LLVMIR/llvmir-debug.mlir b/mlir/test/Target/LLVMIR/llvmir-debug.mlir index f4c18bf6bd53c..8ab1a1b290dad 100644 --- a/mlir/test/Target/LLVMIR/llvmir-debug.mlir +++ b/mlir/test/Target/LLVMIR/llvmir-debug.mlir @@ -442,12 +442,16 @@ llvm.mlir.global @global_variable() {dbg_expr = #di_global_variable_expression} #di_subprogram = #llvm.di_subprogram #di_composite_type = #llvm.di_composite_type, scope = #di_subprogram> -#di_global_variable = #llvm.di_global_variable +// Use the inner type standalone outside too. Ensures it's not cached wrong. +#di_var_type = #llvm.di_subroutine_type +#di_global_variable = #llvm.di_global_variable #di_global_variable_expression = #llvm.di_global_variable_expression llvm.mlir.global @global_variable() {dbg_expr = #di_global_variable_expression} : !llvm.struct<()> -// CHECK: distinct !DIGlobalVariable({{.*}}type: ![[COMP:[0-9]+]], +// CHECK: distinct !DIGlobalVariable({{.*}}type: ![[VAR:[0-9]+]], +// CHECK: ![[VAR]] = !DISubroutineType(types: ![[COMPS:[0-9]+]]) +// CHECK: ![[COMPS]] = !{![[COMP:[0-9]+]], // CHECK: ![[COMP]] = distinct !DICompositeType({{.*}}scope: ![[SCOPE:[0-9]+]], // CHECK: ![[SCOPE]] = !DISubprogram({{.*}}type: ![[SUBROUTINE:[0-9]+]], // CHECK: ![[SUBROUTINE]] = !DISubroutineType(types: ![[SR_TYPES:[0-9]+]])