Construct the MCStreamer before constructing the MCTargetStreamer.
This has a few advantages:
* Only targets that use a MCTargetStreamer have to worry about it.
* There is never a MCTargetStreamer without a MCStreamer, so we can use a
reference.
* A MCTargetStreamer can talk to the MCStreamer in its constructor.
llvm-svn: 200129
diff --git a/llvm/lib/Target/Sparc/SparcTargetStreamer.h b/llvm/lib/Target/Sparc/SparcTargetStreamer.h
index 73339ac..503ebd9 100644
--- a/llvm/lib/Target/Sparc/SparcTargetStreamer.h
+++ b/llvm/lib/Target/Sparc/SparcTargetStreamer.h
@@ -18,6 +18,7 @@
virtual void anchor();
public:
+ SparcTargetStreamer(MCStreamer &S);
/// Emit ".register <reg>, #ignore".
virtual void emitSparcRegisterIgnore(unsigned reg) = 0;
/// Emit ".register <reg>, #scratch".
@@ -29,7 +30,7 @@
formatted_raw_ostream &OS;
public:
- SparcTargetAsmStreamer(formatted_raw_ostream &OS);
+ SparcTargetAsmStreamer(MCStreamer &S, formatted_raw_ostream &OS);
virtual void emitSparcRegisterIgnore(unsigned reg);
virtual void emitSparcRegisterScratch(unsigned reg);
@@ -38,6 +39,7 @@
// This part is for ELF object output
class SparcTargetELFStreamer : public SparcTargetStreamer {
public:
+ SparcTargetELFStreamer(MCStreamer &S);
MCELFStreamer &getStreamer();
virtual void emitSparcRegisterIgnore(unsigned reg) {}
virtual void emitSparcRegisterScratch(unsigned reg) {}