[PATCH] D40882: Skip DBG instr in OptimizePHIs when looking for dead PHI cycles
Mikael Holmén via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 6 00:16:56 PST 2017
uabelho created this revision.
Herald added a subscriber: aprantl.
Changed use_instructions() to use_nodbg_instructions() when
building an instruction set.
We don't want the presence of debug info to affect the code
we generate.
https://reviews.llvm.org/D40882
Files:
lib/CodeGen/OptimizePHIs.cpp
test/CodeGen/MIR/X86/opt_phis.mir
Index: test/CodeGen/MIR/X86/opt_phis.mir
===================================================================
--- /dev/null
+++ test/CodeGen/MIR/X86/opt_phis.mir
@@ -0,0 +1,37 @@
+# RUN: llc -run-pass opt-phis -march=x86-64 -o - %s | FileCheck %s
+--- |
+ define void @test() {
+ ret void
+ }
+
+ !llvm.dbg.cu = !{!1}
+ !llvm.module.flags = !{!2, !3}
+ !llvm.ident = !{!4}
+
+ !0 = !DIFile(filename: "foo.c", directory: "/bar")
+ !1 = distinct !DICompileUnit(language: DW_LANG_C, file: !0, producer: "My Compiler")
+ !2 = !{i32 2, !"Dwarf Version", i32 4}
+ !3 = !{i32 2, !"Debug Info Version", i32 3}
+ !4 = !{!"My Compiler"}
+ !5 = distinct !DISubprogram(name: "test")
+ !6 = !DILocation(line: 7, column: 11, scope: !5)
+ !7 = !DILocalVariable(name: "l", scope: !5)
+
+...
+---
+name: test
+tracksRegLiveness: true
+body: |
+ bb.0:
+ %0:gr32 = IMPLICIT_DEF
+
+ bb.1:
+ %1:gr32 = PHI %0, %bb.0, %2, %bb.1
+ DBG_VALUE debug-use %1, debug-use _, !7, !DIExpression(), debug-location !6
+ %2:gr32 = IMPLICIT_DEF
+ JMP_1 %bb.1
+...
+
+# The PHI should be removed since it's only used in a DBG_VALUE
+# CHECK-LABEL: bb.1:
+# CHECK-NOT: PHI
Index: lib/CodeGen/OptimizePHIs.cpp
===================================================================
--- lib/CodeGen/OptimizePHIs.cpp
+++ lib/CodeGen/OptimizePHIs.cpp
@@ -154,7 +154,7 @@
if (PHIsInCycle.size() == 16)
return false;
- for (MachineInstr &UseMI : MRI->use_instructions(DstReg)) {
+ for (MachineInstr &UseMI : MRI->use_nodbg_instructions(DstReg)) {
if (!UseMI.isPHI() || !IsDeadPHICycle(&UseMI, PHIsInCycle))
return false;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D40882.125673.patch
Type: text/x-patch
Size: 1657 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20171206/7c1c5cbc/attachment.bin>
More information about the llvm-commits
mailing list