This patch changes a static_cast to dyn_cast
authorJack Carter <jcarter@mips.com>
Tue, 5 Feb 2013 07:47:41 +0000 (07:47 +0000)
committerJack Carter <jcarter@mips.com>
Tue, 5 Feb 2013 07:47:41 +0000 (07:47 +0000)
for MipsELFStreamer objects.

Contributer: Jack Carter

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174354 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/MC/MCStreamer.h
lib/Target/Mips/MCTargetDesc/MipsELFStreamer.h
lib/Target/Mips/MipsAsmPrinter.cpp

index 36313258c75829cbcdfeaa8a865b55776f53071b..8d7d542e6cb5881af616172222a896559e24cd3c 100644 (file)
@@ -57,6 +57,7 @@ namespace llvm {
       SK_ARMELFStreamer,
       SK_MachOStreamer,
       SK_PureStreamer,
+      SK_MipsELFStreamer,
       SK_WinCOFFStreamer
     };
 
index 0d067e063b3dd818c36997aaf0b826c79f84701d..360dbe178cc8f98856629d9ea02e5ed23aeaf173 100644 (file)
@@ -19,12 +19,16 @@ public:
   MipsELFStreamer(MCContext &Context, MCAsmBackend &TAB,
                   raw_ostream &OS, MCCodeEmitter *Emitter,
                   bool RelaxAll, bool NoExecStack)
-    : MCELFStreamer(Context, TAB, OS, Emitter) {
+    : MCELFStreamer(SK_MipsELFStreamer, Context, TAB, OS, Emitter) {
   }
 
   ~MipsELFStreamer() {}
   void emitELFHeaderFlagsCG(const MipsSubtarget &Subtarget);
 //  void emitELFHeaderFlagCG(unsigned Val);
+
+  static bool classof(const MCStreamer *S) {
+    return S->getKind() == SK_MipsELFStreamer;
+  }
 };
 
   MCELFStreamer* createMipsELFStreamer(MCContext &Context, MCAsmBackend &TAB,
index df6baaf474e660b2e49bf44cccbb34c0dbad9394..07a4faa144c1a87b1074936aceaa8f6efdc109ce 100644 (file)
@@ -551,8 +551,8 @@ void MipsAsmPrinter::EmitEndOfAsmFile(Module &M) {
   // Emit Mips ELF register info
   Subtarget->getMReginfo().emitMipsReginfoSectionCG(
              OutStreamer, getObjFileLowering(), *Subtarget);
-  MipsELFStreamer & MES = static_cast<MipsELFStreamer &>(OutStreamer);
-  MES.emitELFHeaderFlagsCG(*Subtarget);
+  if (MipsELFStreamer *MES = dyn_cast<MipsELFStreamer>(&OutStreamer))
+    MES->emitELFHeaderFlagsCG(*Subtarget);
 }
 
 MachineLocation