summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-07-27 21:28:04 +0000
committerChris Lattner <sabre@nondot.org>2009-07-27 21:28:04 +0000
commit9d0e762c814300401c876b594c9dfb2ff2e665e3 (patch)
tree0215011406e45362b25cc8169d0e5037d7524b7f /llvm/lib
parenta87555aaa8fcb856a45d05154150686612862432 (diff)
downloadbcm5719-llvm-9d0e762c814300401c876b594c9dfb2ff2e665e3.tar.gz
bcm5719-llvm-9d0e762c814300401c876b594c9dfb2ff2e665e3.zip
hoist MCContext/MCStreamer up to AsmPrinter since we're going to start creating
MCSections soon instead of Section for all targets, and we need something to own them. llvm-svn: 77252
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp11
-rw-r--r--llvm/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp25
-rw-r--r--llvm/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h6
3 files changed, 12 insertions, 30 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index 792db22b2d9..0303f26d8ee 100644
--- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -22,6 +22,8 @@
#include "llvm/CodeGen/MachineModuleInfo.h"
#include "llvm/CodeGen/DwarfWriter.h"
#include "llvm/Analysis/DebugInfo.h"
+#include "llvm/MC/MCContext.h"
+#include "llvm/MC/MCStreamer.h"
#include "llvm/MC/MCInst.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/ErrorHandling.h"
@@ -47,6 +49,10 @@ AsmPrinter::AsmPrinter(formatted_raw_ostream &o, TargetMachine &tm,
const TargetAsmInfo *T, bool VDef)
: MachineFunctionPass(&ID), FunctionNumber(0), O(o),
TM(tm), TAI(T), TRI(tm.getRegisterInfo()),
+
+ OutContext(*new MCContext()),
+ OutStreamer(*createAsmStreamer(OutContext, O)),
+
IsInTextSection(false), LastMI(0), LastFn(0), Counter(~0U),
PrevDLT(0, ~0U, ~0U) {
DW = 0; MMI = 0;
@@ -61,6 +67,9 @@ AsmPrinter::~AsmPrinter() {
for (gcp_iterator I = GCMetadataPrinters.begin(),
E = GCMetadataPrinters.end(); I != E; ++I)
delete I->second;
+
+ delete &OutStreamer;
+ delete &OutContext;
}
/// SwitchToTextSection - Switch to the specified text section of the executable
@@ -270,6 +279,8 @@ bool AsmPrinter::doFinalization(Module &M) {
delete Mang; Mang = 0;
DW = 0; MMI = 0;
+
+ OutStreamer.Finish();
return false;
}
diff --git a/llvm/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp b/llvm/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
index 90cbf8085a7..88c64344973 100644
--- a/llvm/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
+++ b/llvm/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
@@ -751,18 +751,6 @@ void X86ATTAsmPrinter::printMachineInstruction(const MachineInstr *MI) {
printInstruction(MI);
}
-/// doInitialization
-bool X86ATTAsmPrinter::doInitialization(Module &M) {
- if (NewAsmPrinter) {
- Context = new MCContext();
- // FIXME: Send this to "O" instead of outs(). For now, we force it to
- // stdout to make it easy to compare.
- Streamer = createAsmStreamer(*Context, outs());
- }
-
- return AsmPrinter::doInitialization(M);
-}
-
void X86ATTAsmPrinter::PrintGlobalVariable(const GlobalVariable* GVar) {
const TargetData *TD = TM.getTargetData();
@@ -988,18 +976,7 @@ bool X86ATTAsmPrinter::doFinalization(Module &M) {
}
// Do common shutdown.
- bool Changed = AsmPrinter::doFinalization(M);
-
- if (NewAsmPrinter) {
- Streamer->Finish();
-
- delete Streamer;
- delete Context;
- Streamer = 0;
- Context = 0;
- }
-
- return Changed;
+ return AsmPrinter::doFinalization(M);
}
// Include the auto-generated portion of the assembly writer.
diff --git a/llvm/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h b/llvm/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h
index ab81659eb97..65ef5ff6e4b 100644
--- a/llvm/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h
+++ b/llvm/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h
@@ -33,16 +33,11 @@ class MCStreamer;
class VISIBILITY_HIDDEN X86ATTAsmPrinter : public AsmPrinter {
const X86Subtarget *Subtarget;
-
- MCContext *Context;
- MCStreamer *Streamer;
public:
explicit X86ATTAsmPrinter(formatted_raw_ostream &O, TargetMachine &TM,
const TargetAsmInfo *T, bool V)
: AsmPrinter(O, TM, T, V) {
Subtarget = &TM.getSubtarget<X86Subtarget>();
- Context = 0;
- Streamer = 0;
}
virtual const char *getPassName() const {
@@ -60,7 +55,6 @@ class VISIBILITY_HIDDEN X86ATTAsmPrinter : public AsmPrinter {
AsmPrinter::getAnalysisUsage(AU);
}
- bool doInitialization(Module &M);
bool doFinalization(Module &M);
/// printInstruction - This method is automatically generated by tablegen
OpenPOWER on IntegriCloud