From abb5e38a8f03307299b1130c58fe6aa8273f7c78 Mon Sep 17 00:00:00 2001 From: Paul Robinson Date: Tue, 22 Nov 2016 19:46:51 +0000 Subject: [PATCH] Restructure DwarfDebug::beginInstruction(). [NFC] Will help a pending patch. Differential Revision: http://reviews.llvm.org/D26982 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@287686 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 47 +++++++++++++++------------ 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 59467f7dbaf..06641d80784 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -1007,29 +1007,34 @@ void DwarfDebug::beginInstruction(const MachineInstr *MI) { assert(CurMI); // Check if source location changes, but ignore DBG_VALUE locations. - if (!MI->isDebugValue()) { - const DebugLoc &DL = MI->getDebugLoc(); - if (DL != PrevInstLoc) { - if (DL) { - unsigned Flags = 0; - PrevInstLoc = DL; - if (DL == PrologEndLoc) { - Flags |= DWARF2_FLAG_PROLOGUE_END; - PrologEndLoc = DebugLoc(); - Flags |= DWARF2_FLAG_IS_STMT; - } - if (DL.getLine() != - Asm->OutStreamer->getContext().getCurrentDwarfLoc().getLine()) - Flags |= DWARF2_FLAG_IS_STMT; - - const MDNode *Scope = DL.getScope(); - recordSourceLine(DL.getLine(), DL.getCol(), Scope, Flags); - } else if (UnknownLocations) { - PrevInstLoc = DL; - recordSourceLine(0, 0, nullptr, 0); - } + if (MI->isDebugValue()) + return; + const DebugLoc &DL = MI->getDebugLoc(); + if (DL == PrevInstLoc) + return; + + if (!DL) { + // We have an unspecified location, which might want to be line 0. + if (UnknownLocations) { + PrevInstLoc = DL; + recordSourceLine(0, 0, nullptr, 0); } + return; + } + + // We have a new, explicit location. + unsigned Flags = 0; + PrevInstLoc = DL; + if (DL == PrologEndLoc) { + Flags |= DWARF2_FLAG_PROLOGUE_END | DWARF2_FLAG_IS_STMT; + PrologEndLoc = DebugLoc(); } + if (DL.getLine() != + Asm->OutStreamer->getContext().getCurrentDwarfLoc().getLine()) + Flags |= DWARF2_FLAG_IS_STMT; + + const MDNode *Scope = DL.getScope(); + recordSourceLine(DL.getLine(), DL.getCol(), Scope, Flags); } static DebugLoc findPrologueEndLoc(const MachineFunction *MF) { -- 2.50.1