diff options
author | Chris Lattner <sabre@nondot.org> | 2010-03-08 23:23:25 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-03-08 23:23:25 +0000 |
commit | 57578766aa33d1a22cd124316df318db3e44f34a (patch) | |
tree | 8723353009d053edbed7467d873f9d355872b1ca /lib/CodeGen/AsmPrinter | |
parent | 82f05078b08f086b868e096ff0bb89324ca5c1d5 (diff) | |
download | llvm-57578766aa33d1a22cd124316df318db3e44f34a.tar.gz llvm-57578766aa33d1a22cd124316df318db3e44f34a.tar.bz2 llvm-57578766aa33d1a22cd124316df318db3e44f34a.tar.xz |
simplify EmitSectionOffset to always use .set if it is
available, the only thing this affects is that we produce
.set in one case we didn't before, which shouldn't harm
anything. Make EmitSectionOffset call EmitDifference
instead of duplicating it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98005 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/AsmPrinter')
-rw-r--r-- | lib/CodeGen/AsmPrinter/DIE.cpp | 4 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/DIE.h | 5 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 4 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfDebug.h | 2 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfException.cpp | 2 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfPrinter.cpp | 33 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfPrinter.h | 4 |
7 files changed, 16 insertions, 38 deletions
diff --git a/lib/CodeGen/AsmPrinter/DIE.cpp b/lib/CodeGen/AsmPrinter/DIE.cpp index cc1027af31..d894ba72c0 100644 --- a/lib/CodeGen/AsmPrinter/DIE.cpp +++ b/lib/CodeGen/AsmPrinter/DIE.cpp @@ -285,7 +285,7 @@ void DIELabel::print(raw_ostream &O) { /// void DIESectionOffset::EmitValue(DwarfPrinter *D, unsigned Form) const { bool IsSmall = Form == dwarf::DW_FORM_data4; - D->EmitSectionOffset(Label, Section, IsSmall, IsEH, UseSet); + D->EmitSectionOffset(Label, Section, IsSmall, IsEH); D->getAsm()->O << '\n'; // FIXME: Necesssary? } @@ -299,7 +299,7 @@ unsigned DIESectionOffset::SizeOf(const TargetData *TD, unsigned Form) const { #ifndef NDEBUG void DIESectionOffset::print(raw_ostream &O) { O << "Off: " << Label->getName() << "-" << Section->getName() - << "-" << IsEH << "-" << UseSet; + << "-" << IsEH; } #endif diff --git a/lib/CodeGen/AsmPrinter/DIE.h b/lib/CodeGen/AsmPrinter/DIE.h index b6a7fa89cf..e08d748dc1 100644 --- a/lib/CodeGen/AsmPrinter/DIE.h +++ b/lib/CodeGen/AsmPrinter/DIE.h @@ -336,12 +336,11 @@ namespace llvm { const MCSymbol *Label; const MCSymbol *Section; bool IsEH : 1; - bool UseSet : 1; public: DIESectionOffset(const MCSymbol *Lab, const MCSymbol *Sec, - bool isEH = false, bool useSet = true) + bool isEH = false) : DIEValue(isSectionOffset), Label(Lab), Section(Sec), - IsEH(isEH), UseSet(useSet) {} + IsEH(isEH) {} /// EmitValue - Emit section offset. /// diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 247a3c57aa..9b50d91183 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -376,8 +376,8 @@ void DwarfDebug::addLabel(DIE *Die, unsigned Attribute, unsigned Form, /// void DwarfDebug::addSectionOffset(DIE *Die, unsigned Attribute, unsigned Form, const MCSymbol *Label,const MCSymbol *Section, - bool isEH, bool useSet) { - DIEValue *Value = new DIESectionOffset(Label, Section, isEH, useSet); + bool isEH) { + DIEValue *Value = new DIESectionOffset(Label, Section, isEH); DIEValues.push_back(Value); Die->addValue(Attribute, Form, Value); } diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.h b/lib/CodeGen/AsmPrinter/DwarfDebug.h index bd07b25d61..2abad8aac2 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.h +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.h @@ -249,7 +249,7 @@ class DwarfDebug : public DwarfPrinter { /// void addSectionOffset(DIE *Die, unsigned Attribute, unsigned Form, const MCSymbol *Label, const MCSymbol *Section, - bool isEH = false, bool useSet = true); + bool isEH = false); /// addDelta - Add a label delta attribute data and value. /// diff --git a/lib/CodeGen/AsmPrinter/DwarfException.cpp b/lib/CodeGen/AsmPrinter/DwarfException.cpp index b5c6bbe705..6da90bb28c 100644 --- a/lib/CodeGen/AsmPrinter/DwarfException.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfException.cpp @@ -232,7 +232,7 @@ void DwarfException::EmitFDE(const FunctionEHFrameInfo &EHFrameInfo) { EmitSectionOffset(getDWLabel("eh_frame_begin", EHFrameInfo.Number), getDWLabel("eh_frame_common", EHFrameInfo.PersonalityIndex), - true, true, false); + true, true); EOL("FDE CIE offset"); diff --git a/lib/CodeGen/AsmPrinter/DwarfPrinter.cpp b/lib/CodeGen/AsmPrinter/DwarfPrinter.cpp index 23b2158272..52a4055d15 100644 --- a/lib/CodeGen/AsmPrinter/DwarfPrinter.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfPrinter.cpp @@ -278,39 +278,18 @@ void DwarfPrinter::EmitDifference(const MCSymbol *TagHi, const MCSymbol *TagLo, void DwarfPrinter::EmitSectionOffset(const MCSymbol *Label, const MCSymbol *Section, - bool IsSmall, bool isEH, - bool useSet) { + bool IsSmall, bool isEH) { bool printAbsolute = false; if (isEH) printAbsolute = MAI->isAbsoluteEHSectionOffsets(); else printAbsolute = MAI->isAbsoluteDebugSectionOffsets(); - if (MAI->hasSetDirective() && useSet) { - // FIXME: switch to OutStreamer.EmitAssignment. - O << "\t.set\t"; - PrintLabelName("set", SetCounter, Flavor); - O << ","; - PrintLabelName(Label); - - if (!printAbsolute) { - O << "-"; - PrintLabelName(Section); - } - - O << "\n"; - PrintRelDirective(IsSmall); - PrintLabelName("set", SetCounter, Flavor); - ++SetCounter; - } else { - PrintRelDirective(IsSmall, true); - PrintLabelName(Label); - - if (!printAbsolute) { - O << "-"; - PrintLabelName(Section); - } - } + if (!printAbsolute) + return EmitDifference(Label, Section, IsSmall); + + PrintRelDirective(IsSmall, true); + PrintLabelName(Label); } /// EmitFrameMoves - Emit frame instructions to describe the layout of the diff --git a/lib/CodeGen/AsmPrinter/DwarfPrinter.h b/lib/CodeGen/AsmPrinter/DwarfPrinter.h index 016553a696..5228ca5303 100644 --- a/lib/CodeGen/AsmPrinter/DwarfPrinter.h +++ b/lib/CodeGen/AsmPrinter/DwarfPrinter.h @@ -139,9 +139,9 @@ public: /// EmitDifference - Emit the difference between two labels. void EmitDifference(const MCSymbol *LabelHi, const MCSymbol *LabelLo, bool IsSmall = false); + void EmitSectionOffset(const MCSymbol *Label, const MCSymbol *Section, - bool IsSmall = false, bool isEH = false, - bool useSet = true); + bool IsSmall = false, bool isEH = false); /// EmitFrameMoves - Emit frame instructions to describe the layout of the /// frame. |