[llvm] [InstCombine] Retain debug information on store to null instruction (PR #86105)
Abinaya Saravanan via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 3 07:09:54 PDT 2024
https://github.com/quic-asaravan updated https://github.com/llvm/llvm-project/pull/86105
>From 4a8657baf6669ebb419e70554337b848749bba8d Mon Sep 17 00:00:00 2001
From: quic-asaravan <quic_asaravan at quicinc.com>
Date: Thu, 21 Mar 2024 03:02:18 -0700
Subject: [PATCH 1/5] [InstCombine] Retain debug information on store to null
instruction
---
llvm/lib/Transforms/InstCombine/InstCombineInternal.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineInternal.h b/llvm/lib/Transforms/InstCombine/InstCombineInternal.h
index b9ad3a7400792..c998c727eba48 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineInternal.h
+++ b/llvm/lib/Transforms/InstCombine/InstCombineInternal.h
@@ -461,7 +461,7 @@ class LLVM_LIBRARY_VISIBILITY InstCombinerImpl final
auto *SI = new StoreInst(ConstantInt::getTrue(Ctx),
PoisonValue::get(PointerType::getUnqual(Ctx)),
/*isVolatile*/ false, Align(1));
- InsertNewInstBefore(SI, InsertAt->getIterator());
+ InsertNewInstWith(SI, InsertAt->getIterator());
}
/// Combiner aware instruction erasure.
>From e10ce4787b466bf5ed9b26f4d4422bdc548323f1 Mon Sep 17 00:00:00 2001
From: quic-asaravan <quic_asaravan at quicinc.com>
Date: Mon, 3 Jun 2024 02:12:43 -0700
Subject: [PATCH 2/5] [InstCombine] Lit test added for "Retain debug
information on store to null instruction"
---
.../InstCombine/StoreToNull-DbgCheck.ll | 30 +++++++++++++++++++
1 file changed, 30 insertions(+)
create mode 100644 llvm/test/Transforms/InstCombine/StoreToNull-DbgCheck.ll
diff --git a/llvm/test/Transforms/InstCombine/StoreToNull-DbgCheck.ll b/llvm/test/Transforms/InstCombine/StoreToNull-DbgCheck.ll
new file mode 100644
index 0000000000000..19638a7a44ae1
--- /dev/null
+++ b/llvm/test/Transforms/InstCombine/StoreToNull-DbgCheck.ll
@@ -0,0 +1,30 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4
+; Verify whether debug information is attached to the store to null/undef instruction
+; !dbg should be present at the end of "store to null" instruction
+; RUN: opt -S -passes='instcombine' < %s | FileCheck %s > /dev/null
+
+source_filename = "test.ll"
+target triple = "hexagon"
+
+define void @_Z3foov() {
+; CHECK-LABEL: define void @_Z3foov() {
+; CHECK-NEXT: entry:
+; CHECK-NEXT: store i1 true, ptr poison, align 1, !dbg
+; CHECK-NEXT: ret void
+
+entry:
+ tail call void null(), !dbg !4
+ ret void
+}
+
+!llvm.dbg.cu = !{!0}
+!llvm.module.flags = !{!3}
+
+!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !1, producer: "Clang", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, globals: !2, splitDebugInlining: false, debugInfoForProfiling: true, nameTableKind: None)
+!1 = !DIFile(filename: "test_sym_mod.cpp", directory: "/workspace/asaravan/test_bugpoint")
+!2 = !{}
+!3 = !{i32 2, !"Debug Info Version", i32 3}
+!4 = !DILocation(line: 83, column: 3, scope: !5)
+!5 = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", scope: !1, file: !1, line: 77, type: !6, scopeLine: 78, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
+!6 = !DISubroutineType(types: !7)
+!7 = !{null}
>From 2a2220b011dfa39aabc55f052539cfc6d351f655 Mon Sep 17 00:00:00 2001
From: quic-asaravan <quic_asaravan at quicinc.com>
Date: Mon, 3 Jun 2024 02:33:54 -0700
Subject: [PATCH 3/5] Addressing review comments
---
llvm/test/Transforms/InstCombine/StoreToNull-DbgCheck.ll | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/llvm/test/Transforms/InstCombine/StoreToNull-DbgCheck.ll b/llvm/test/Transforms/InstCombine/StoreToNull-DbgCheck.ll
index 19638a7a44ae1..cc8a5aaa87a33 100644
--- a/llvm/test/Transforms/InstCombine/StoreToNull-DbgCheck.ll
+++ b/llvm/test/Transforms/InstCombine/StoreToNull-DbgCheck.ll
@@ -3,15 +3,12 @@
; !dbg should be present at the end of "store to null" instruction
; RUN: opt -S -passes='instcombine' < %s | FileCheck %s > /dev/null
-source_filename = "test.ll"
-target triple = "hexagon"
-
define void @_Z3foov() {
; CHECK-LABEL: define void @_Z3foov() {
; CHECK-NEXT: entry:
-; CHECK-NEXT: store i1 true, ptr poison, align 1, !dbg
+; CHECK-NEXT: store i1 true, ptr poison, align 1
; CHECK-NEXT: ret void
-
+;
entry:
tail call void null(), !dbg !4
ret void
@@ -20,7 +17,7 @@ entry:
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!3}
-!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !1, producer: "Clang", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, globals: !2, splitDebugInlining: false, debugInfoForProfiling: true, nameTableKind: None)
+!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !1, producer: "clang", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, globals: !2, splitDebugInlining: false, debugInfoForProfiling: true, nameTableKind: None)
!1 = !DIFile(filename: "test_sym_mod.cpp", directory: "/workspace/asaravan/test_bugpoint")
!2 = !{}
!3 = !{i32 2, !"Debug Info Version", i32 3}
>From f8f8df67f4da03a3325bb271cf891f8c7f7d34b2 Mon Sep 17 00:00:00 2001
From: quic-asaravan <quic_asaravan at quicinc.com>
Date: Mon, 3 Jun 2024 02:53:38 -0700
Subject: [PATCH 4/5] Adding debug check to the check line in the lit test
---
llvm/test/Transforms/InstCombine/StoreToNull-DbgCheck.ll | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/llvm/test/Transforms/InstCombine/StoreToNull-DbgCheck.ll b/llvm/test/Transforms/InstCombine/StoreToNull-DbgCheck.ll
index cc8a5aaa87a33..ba23fae49e1b8 100644
--- a/llvm/test/Transforms/InstCombine/StoreToNull-DbgCheck.ll
+++ b/llvm/test/Transforms/InstCombine/StoreToNull-DbgCheck.ll
@@ -6,7 +6,7 @@
define void @_Z3foov() {
; CHECK-LABEL: define void @_Z3foov() {
; CHECK-NEXT: entry:
-; CHECK-NEXT: store i1 true, ptr poison, align 1
+; CHECK-NEXT: store i1 true, ptr poison, align 1, !dbg
; CHECK-NEXT: ret void
;
entry:
>From 9aa2e2d8ca2eddba6d775780bb5d263ca7cee7f6 Mon Sep 17 00:00:00 2001
From: quic-asaravan <quic_asaravan at quicinc.com>
Date: Mon, 3 Jun 2024 07:06:53 -0700
Subject: [PATCH 5/5] Updating the lit test
---
.../Transforms/InstCombine/StoreToNull-DbgCheck.ll | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/llvm/test/Transforms/InstCombine/StoreToNull-DbgCheck.ll b/llvm/test/Transforms/InstCombine/StoreToNull-DbgCheck.ll
index ba23fae49e1b8..dadb38820371c 100644
--- a/llvm/test/Transforms/InstCombine/StoreToNull-DbgCheck.ll
+++ b/llvm/test/Transforms/InstCombine/StoreToNull-DbgCheck.ll
@@ -6,9 +6,10 @@
define void @_Z3foov() {
; CHECK-LABEL: define void @_Z3foov() {
; CHECK-NEXT: entry:
-; CHECK-NEXT: store i1 true, ptr poison, align 1, !dbg
+; CHECK-NEXT: store i1 true, ptr poison, align 1, !dbg [[DBG4:![0-9]+]]
; CHECK-NEXT: ret void
;
+
entry:
tail call void null(), !dbg !4
ret void
@@ -17,7 +18,7 @@ entry:
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!3}
-!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !1, producer: "clang", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, globals: !2, splitDebugInlining: false, debugInfoForProfiling: true, nameTableKind: None)
+!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !1, producer: "Clang", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, globals: !2, splitDebugInlining: false, debugInfoForProfiling: true, nameTableKind: None)
!1 = !DIFile(filename: "test_sym_mod.cpp", directory: "/workspace/asaravan/test_bugpoint")
!2 = !{}
!3 = !{i32 2, !"Debug Info Version", i32 3}
@@ -25,3 +26,12 @@ entry:
!5 = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", scope: !1, file: !1, line: 77, type: !6, scopeLine: 78, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
!6 = !DISubroutineType(types: !7)
!7 = !{null}
+;.
+; CHECK: [[META0:![0-9]+]] = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: [[META1:![0-9]+]], producer: "Clang", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: [[META2:![0-9]+]], globals: [[META2]], splitDebugInlining: false, debugInfoForProfiling: true, nameTableKind: None)
+; CHECK: [[META1]] = !DIFile(filename: "test_sym_mod.cpp", directory: {{.*}})
+; CHECK: [[META2]] = !{}
+; CHECK: [[DBG4]] = !DILocation(line: 83, column: 3, scope: [[META5:![0-9]+]])
+; CHECK: [[META5]] = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", scope: [[META1]], file: [[META1]], line: 77, type: [[META6:![0-9]+]], scopeLine: 78, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: [[META0]], retainedNodes: [[META2]])
+; CHECK: [[META6]] = !DISubroutineType(types: [[META7:![0-9]+]])
+; CHECK: [[META7]] = !{null}
+;.
More information about the llvm-commits
mailing list