From 21eab936d5b4d3a02ba9038f8dea80ad503b91d1 Mon Sep 17 00:00:00 2001 From: Shiva Chen Date: Wed, 16 May 2018 02:57:26 +0000 Subject: [PATCH] [DebugInfo] Only handle DBG_VALUE in InlineSpiller. The instructions using registers should be DBG_VALUE and normal instructions. Use isDebugValue() to filter out DBG_VALUE and add an assert to ensure there is no other kind of debug instructions using the registers. Differential Revision: https://reviews.llvm.org/D46739 Patch by Hsiangkai Wang. llvm-svn: 332427 --- llvm/lib/CodeGen/InlineSpiller.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/llvm/lib/CodeGen/InlineSpiller.cpp b/llvm/lib/CodeGen/InlineSpiller.cpp index 478ea9b..007e928 100644 --- a/llvm/lib/CodeGen/InlineSpiller.cpp +++ b/llvm/lib/CodeGen/InlineSpiller.cpp @@ -617,9 +617,12 @@ void InlineSpiller::reMaterializeAll() { MachineInstr &MI = *RegI++; // Debug values are not allowed to affect codegen. - if (MI.isDebugInstr()) + if (MI.isDebugValue()) continue; + assert(!MI.isDebugInstr() && "Did not expect to find a use in debug " + "instruction that isn't a DBG_VALUE"); + anyRemat |= reMaterializeFor(LI, MI); } } @@ -933,7 +936,7 @@ void InlineSpiller::spillAroundUses(unsigned Reg) { MachineInstr *MI = &*(RegI++); // Debug values are not allowed to affect codegen. - if (MI->isDebugInstr()) { + if (MI->isDebugValue()) { // Modify DBG_VALUE now that the value is in a spill slot. MachineBasicBlock *MBB = MI->getParent(); LLVM_DEBUG(dbgs() << "Modifying debug info due to spill:\t" << *MI); @@ -942,6 +945,9 @@ void InlineSpiller::spillAroundUses(unsigned Reg) { continue; } + assert(!MI->isDebugInstr() && "Did not expect to find a use in debug " + "instruction that isn't a DBG_VALUE"); + // Ignore copies to/from snippets. We'll delete them. if (SnippetCopies.count(MI)) continue; -- 2.7.4