diff options
| author | Mikael Holmen <mikael.holmen@ericsson.com> | 2017-12-07 07:01:21 +0000 |
|---|---|---|
| committer | Mikael Holmen <mikael.holmen@ericsson.com> | 2017-12-07 07:01:21 +0000 |
| commit | b5deac444d1df66f595a42dfff1df4467a2ed436 (patch) | |
| tree | cb01dc09b921b13b92b7f64bd8296cb83c14ef1b | |
| parent | 8543d53fd94feb7823cdd97964172c8493f93ffd (diff) | |
| download | bcm5719-llvm-b5deac444d1df66f595a42dfff1df4467a2ed436.tar.gz bcm5719-llvm-b5deac444d1df66f595a42dfff1df4467a2ed436.zip | |
Skip DBG instr in OptimizePHIs when looking for dead PHI cycles
Summary:
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.
Reviewers: dblaikie, Eugene.Zelenko, chandlerc, aprantl
Reviewed By: aprantl
Subscribers: aprantl, llvm-commits
Differential Revision: https://reviews.llvm.org/D40882
llvm-svn: 320010
| -rw-r--r-- | llvm/lib/CodeGen/OptimizePHIs.cpp | 2 | ||||
| -rw-r--r-- | llvm/test/CodeGen/MIR/X86/opt_phis.mir | 37 |
2 files changed, 38 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/OptimizePHIs.cpp b/llvm/lib/CodeGen/OptimizePHIs.cpp index 82ec1cb5c94..5421b444d86 100644 --- a/llvm/lib/CodeGen/OptimizePHIs.cpp +++ b/llvm/lib/CodeGen/OptimizePHIs.cpp @@ -154,7 +154,7 @@ bool OptimizePHIs::IsDeadPHICycle(MachineInstr *MI, InstrSet &PHIsInCycle) { 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; } diff --git a/llvm/test/CodeGen/MIR/X86/opt_phis.mir b/llvm/test/CodeGen/MIR/X86/opt_phis.mir new file mode 100644 index 00000000000..e282a92e201 --- /dev/null +++ b/llvm/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 |

