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.
};
class DwarfCompileUnit : public DwarfUnit {
+ unsigned statementListIndex;
+
public:
DwarfCompileUnit(unsigned UID, DIE *D, DICompileUnit Node, AsmPrinter *A,
DwarfDebug *DW, DwarfFile *DWU);
/// 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 {
// 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