mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-12 13:38:21 +00:00
Debug Info: LiveDebugVarible can remove DBG_VALUEs, make sure we emit them back.
RegisterCoalescer used to depend on LiveDebugVariable. LDV removes DBG_VALUEs without emitting them at the end. We fix this by removing LDV from RegisterCoalescer. Also add an assertion to make sure we call emitDebugValues if DBG_VALUEs are removed at runOnMachineFunction. rdar://problem/13183203 Reviewed by Andy & Jakob git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175023 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -64,7 +64,8 @@ void LiveDebugVariables::getAnalysisUsage(AnalysisUsage &AU) const {
|
||||
MachineFunctionPass::getAnalysisUsage(AU);
|
||||
}
|
||||
|
||||
LiveDebugVariables::LiveDebugVariables() : MachineFunctionPass(ID), pImpl(0) {
|
||||
LiveDebugVariables::LiveDebugVariables() : MachineFunctionPass(ID), pImpl(0),
|
||||
EmitDone(false), ModifiedMF(false) {
|
||||
initializeLiveDebugVariablesPass(*PassRegistry::getPassRegistry());
|
||||
}
|
||||
|
||||
@ -701,12 +702,17 @@ bool LiveDebugVariables::runOnMachineFunction(MachineFunction &mf) {
|
||||
return false;
|
||||
if (!pImpl)
|
||||
pImpl = new LDVImpl(this);
|
||||
return static_cast<LDVImpl*>(pImpl)->runOnMachineFunction(mf);
|
||||
ModifiedMF = static_cast<LDVImpl*>(pImpl)->runOnMachineFunction(mf);
|
||||
return ModifiedMF;
|
||||
}
|
||||
|
||||
void LiveDebugVariables::releaseMemory() {
|
||||
if (pImpl)
|
||||
if (pImpl) {
|
||||
static_cast<LDVImpl*>(pImpl)->clear();
|
||||
// Make sure we call emitDebugValues if the machine function was modified.
|
||||
assert((!ModifiedMF || EmitDone) &&
|
||||
"Dbg values are not emitted in LDV");
|
||||
}
|
||||
}
|
||||
|
||||
LiveDebugVariables::~LiveDebugVariables() {
|
||||
@ -1014,8 +1020,10 @@ void LDVImpl::emitDebugValues(VirtRegMap *VRM) {
|
||||
}
|
||||
|
||||
void LiveDebugVariables::emitDebugValues(VirtRegMap *VRM) {
|
||||
if (pImpl)
|
||||
if (pImpl) {
|
||||
static_cast<LDVImpl*>(pImpl)->emitDebugValues(VRM);
|
||||
EmitDone = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user