aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/CodeGen/AsmPrinter/AsmPrinter.cpp25
-rw-r--r--lib/MC/MCAsmStreamer.cpp4
-rw-r--r--lib/MC/MCStreamer.cpp2
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() {