diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/CodeGen/AsmPrinter/AsmPrinter.cpp | 25 | ||||
-rw-r--r-- | lib/MC/MCAsmStreamer.cpp | 4 | ||||
-rw-r--r-- | lib/MC/MCStreamer.cpp | 2 |
3 files changed, 12 insertions, 19 deletions
diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp index d8594db950..e6ee960dc4 100644 --- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -63,7 +63,6 @@ AsmPrinter::AsmPrinter(formatted_raw_ostream &o, TargetMachine &tm, LastMI(0), LastFn(0), Counter(~0U), PrevDLT(0, ~0U, ~0U) { - CurrentSection = 0; DW = 0; MMI = 0; switch (AsmVerbose) { case cl::BOU_UNSET: VerboseAsm = VDef; break; @@ -91,19 +90,18 @@ TargetLoweringObjectFile &AsmPrinter::getObjFileLowering() const { } /// SwitchToSection - Switch to the specified section of the executable if we -/// are not already in it! If "NS" is null, then this causes us to exit the -/// current section and not reenter another one. This is generally used for -/// asmprinter hacks. -/// -/// FIXME: Remove support for null sections. -/// +/// are not already in it! void AsmPrinter::SwitchToSection(const MCSection *NS) { - CurrentSection = NS; - // FIXME: Remove support for null sections! - if (NS) - OutStreamer.SwitchSection(NS); + assert(NS != 0 && "Must specify a section to switch to"); + OutStreamer.SwitchSection(NS); +} + +/// getCurrentSection() - Return the current section we are emitting to. +const MCSection *AsmPrinter::getCurrentSection() const { + return OutStreamer.getCurrentSection(); } + void AsmPrinter::getAnalysisUsage(AnalysisUsage &AU) const { AU.setPreservesAll(); MachineFunctionPass::getAnalysisUsage(AU); @@ -143,8 +141,6 @@ bool AsmPrinter::doInitialization(Module &M) { << '\n' << TAI->getCommentString() << " End of file scope inline assembly\n"; - SwitchToSection(0); // Reset back to no section to close off sections. - if (TAI->doesSupportDebugInformation() || TAI->doesSupportExceptionHandling()) { MMI = getAnalysisIfAvailable<MachineModuleInfo>(); @@ -174,7 +170,6 @@ bool AsmPrinter::doFinalization(Module &M) { // to stuff that is actually used. Note that doing so would require targets // to notice uses in operands (due to constant exprs etc). This should // happen with the MC stuff eventually. - SwitchToSection(0); // Print out module-level global variables here. for (Module::const_global_iterator I = M.global_begin(), E = M.global_end(); @@ -776,7 +771,7 @@ void AsmPrinter::EmitAlignment(unsigned NumBits, const GlobalValue *GV, if (TAI->getAlignmentIsInBytes()) NumBits = 1 << NumBits; O << TAI->getAlignDirective() << NumBits; - if (CurrentSection && CurrentSection->getKind().isText()) + if (getCurrentSection()->getKind().isText()) if (unsigned FillValue = TAI->getTextAlignFillValue()) { O << ','; PrintHex(FillValue); diff --git a/lib/MC/MCAsmStreamer.cpp b/lib/MC/MCAsmStreamer.cpp index 60d66f93af..cb3642532c 100644 --- a/lib/MC/MCAsmStreamer.cpp +++ b/lib/MC/MCAsmStreamer.cpp @@ -24,12 +24,10 @@ class MCAsmStreamer : public MCStreamer { raw_ostream &OS; const TargetAsmInfo &TAI; AsmPrinter *Printer; - const MCSection *CurSection; public: MCAsmStreamer(MCContext &Context, raw_ostream &_OS, const TargetAsmInfo &tai, AsmPrinter *_AsmPrinter) - : MCStreamer(Context), OS(_OS), TAI(tai), Printer(_AsmPrinter), - CurSection(0) {} + : MCStreamer(Context), OS(_OS), TAI(tai), Printer(_AsmPrinter) {} ~MCAsmStreamer() {} /// @name MCStreamer Interface diff --git a/lib/MC/MCStreamer.cpp b/lib/MC/MCStreamer.cpp index a634f33ad3..8a6dcdae7a 100644 --- a/lib/MC/MCStreamer.cpp +++ b/lib/MC/MCStreamer.cpp @@ -11,7 +11,7 @@ using namespace llvm; -MCStreamer::MCStreamer(MCContext &_Context) : Context(_Context) { +MCStreamer::MCStreamer(MCContext &_Context) : Context(_Context), CurSection(0) { } MCStreamer::~MCStreamer() { |