From 220504496854df2aa8e738ad998b100992292e11 Mon Sep 17 00:00:00 2001 From: Gerolf Hoflehner Date: Wed, 13 Aug 2014 22:07:36 +0000 Subject: [PATCH] [MachineCombiner] Removal of dangling DBG_VALUES after combining [20598] This is a cleaner solution to the problem described in r215431. When instructions are combined a dangling DBG_VALUE is removed. This resolves bug 20598. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215587 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/MachineCombiner.cpp | 2 +- lib/Target/AArch64/AArch64InstrInfo.cpp | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/CodeGen/MachineCombiner.cpp b/lib/CodeGen/MachineCombiner.cpp index 032b4ee5cbb..aeb864efa34 100644 --- a/lib/CodeGen/MachineCombiner.cpp +++ b/lib/CodeGen/MachineCombiner.cpp @@ -380,7 +380,7 @@ bool MachineCombiner::combineInstructions(MachineBasicBlock *MBB) { MBB->insert((MachineBasicBlock::iterator) & MI, (MachineInstr *)InstrPtr); for (auto *InstrPtr : DelInstrs) - InstrPtr->eraseFromParent(); + InstrPtr->eraseFromParentAndMarkDBGValuesForRemoval(); Changed = true; ++NumInstCombined; diff --git a/lib/Target/AArch64/AArch64InstrInfo.cpp b/lib/Target/AArch64/AArch64InstrInfo.cpp index fcf04dd2c04..df883d35fa1 100644 --- a/lib/Target/AArch64/AArch64InstrInfo.cpp +++ b/lib/Target/AArch64/AArch64InstrInfo.cpp @@ -2293,8 +2293,7 @@ static bool canCombineWithMUL(MachineBasicBlock &MBB, MachineOperand &MO, return false; // Must only used by the user we combine with. - // FIXME: handle the case of DBG uses gracefully - if (!MRI.hasOneUse(MI->getOperand(0).getReg())) + if (!MRI.hasOneNonDBGUse(MI->getOperand(0).getReg())) return false; return true;