diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 8637c4d6519f..7954423141f1 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -771,6 +771,7 @@ DwarfCompileUnit *DwarfDebug::constructDwarfCompileUnit(DICompileUnit DIUnit) { Asm->OutStreamer.hasRawTextSupport() || (NewCU->getUniqueID() == 0); if (!useSplitDwarf()) { + NewCU->setStatementListIndex(Die->getValues().size()); // DW_AT_stmt_list is a offset of line number information for this // compile unit in debug_line section. For split dwarf this is // left in the skeleton CU and so not included. diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h b/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h index 3f42e2f67281..61a50a793648 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h @@ -534,6 +534,8 @@ private: }; class DwarfCompileUnit : public DwarfUnit { + unsigned statementListIndex; + public: DwarfCompileUnit(unsigned UID, DIE *D, DICompileUnit Node, AsmPrinter *A, DwarfDebug *DW, DwarfFile *DWU); @@ -545,6 +547,17 @@ public: /// addLabelAddress - Add a dwarf label attribute data and value using /// either DW_FORM_addr or DW_FORM_GNU_addr_index. void addLabelAddress(DIE *Die, dwarf::Attribute Attribute, MCSymbol *Label); + + void setStatementListIndex(unsigned statementListIndex) { + this->statementListIndex = statementListIndex; + } + + void initStatementList(DIE *D) const { + DIE *UD = getUnitDie(); + D->addValue(dwarf::DW_AT_stmt_list, + UD->getAbbrev().getData()[statementListIndex].getForm(), + UD->getValues()[statementListIndex]); + } }; class DwarfTypeUnit : public DwarfUnit { diff --git a/llvm/lib/CodeGen/RegisterPressure.cpp b/llvm/lib/CodeGen/RegisterPressure.cpp index 249789a4b16b..cfeafbf40306 100644 --- a/llvm/lib/CodeGen/RegisterPressure.cpp +++ b/llvm/lib/CodeGen/RegisterPressure.cpp @@ -512,8 +512,7 @@ bool RegPressureTracker::recede(SmallVectorImpl *LiveUses, // live-out, increase its PDiff value to avoid underflowing pressure. if (PDiff) PDiff->addPressureChange(Reg, false, MRI); - } - else { + } else { if (LiveRegs.erase(Reg)) decreaseRegPressure(Reg); else