Move expression visitation logic up to MCStreamer.
authorRafael Espindola <rafael.espindola@gmail.com>
Wed, 25 Jun 2014 15:45:33 +0000 (15:45 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Wed, 25 Jun 2014 15:45:33 +0000 (15:45 +0000)
Remove the duplicate from MCRecordStreamer. No functionality change.

llvm-svn: 211714

17 files changed:
llvm/include/llvm/MC/MCExpr.h
llvm/include/llvm/MC/MCObjectStreamer.h
llvm/include/llvm/MC/MCStreamer.h
llvm/lib/LTO/LTOModule.cpp
llvm/lib/MC/MCObjectStreamer.cpp
llvm/lib/MC/MCStreamer.cpp
llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCExpr.cpp
llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCExpr.h
llvm/lib/Target/ARM/MCTargetDesc/ARMMCExpr.cpp
llvm/lib/Target/ARM/MCTargetDesc/ARMMCExpr.h
llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp
llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.h
llvm/lib/Target/NVPTX/NVPTXMCExpr.h
llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCExpr.cpp
llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCExpr.h
llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.cpp
llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.h

index 8552d9d..e96ecb4 100644 (file)
@@ -21,7 +21,7 @@ class MCAssembler;
 class MCContext;
 class MCSection;
 class MCSectionData;
-class MCObjectStreamer;
+class MCStreamer;
 class MCSymbol;
 class MCValue;
 class raw_ostream;
@@ -525,7 +525,7 @@ public:
   virtual void PrintImpl(raw_ostream &OS) const = 0;
   virtual bool EvaluateAsRelocatableImpl(MCValue &Res,
                                          const MCAsmLayout *Layout) const = 0;
-  virtual void visitUsedExpr(MCObjectStreamer& Streamer) const = 0;
+  virtual void visitUsedExpr(MCStreamer& Streamer) const = 0;
   virtual const MCSection *FindAssociatedSection() const = 0;
 
   virtual void fixELFSymbolsInTLSFixups(MCAssembler &) const = 0;
index d4eb398..8d37c85 100644 (file)
@@ -79,8 +79,7 @@ protected:
   MCDataFragment *getOrCreateDataFragment() const;
 
 public:
-  void visitUsedExpr(const MCExpr &Expr);
-  void visitUsedSymbol(const MCSymbol &Sym);
+  void visitUsedSymbol(const MCSymbol &Sym) override;
 
   MCAssembler &getAssembler() { return *Assembler; }
 
index 4184cee..c24c642 100644 (file)
@@ -214,6 +214,9 @@ protected:
 public:
   virtual ~MCStreamer();
 
+  void visitUsedExpr(const MCExpr &Expr);
+  virtual void visitUsedSymbol(const MCSymbol &Sym);
+
   void setTargetStreamer(MCTargetStreamer *TS) {
     TargetStreamer.reset(TS);
   }
index 20faa97..22ccff3 100644 (file)
@@ -605,31 +605,8 @@ namespace {
       }
     }
 
-    // FIXME: mostly copied for the obj streamer.
-    void AddValueSymbols(const MCExpr *Value) {
-      switch (Value->getKind()) {
-      case MCExpr::Target:
-        // FIXME: What should we do in here?
-        break;
-
-      case MCExpr::Constant:
-        break;
-
-      case MCExpr::Binary: {
-        const MCBinaryExpr *BE = cast<MCBinaryExpr>(Value);
-        AddValueSymbols(BE->getLHS());
-        AddValueSymbols(BE->getRHS());
-        break;
-      }
-
-      case MCExpr::SymbolRef:
-        markUsed(cast<MCSymbolRefExpr>(Value)->getSymbol());
-        break;
-
-      case MCExpr::Unary:
-        AddValueSymbols(cast<MCUnaryExpr>(Value)->getSubExpr());
-        break;
-      }
+    void visitUsedSymbol(const MCSymbol &Sym) override {
+      markUsed(Sym);
     }
 
   public:
@@ -650,7 +627,7 @@ namespace {
       // Scan for values.
       for (unsigned i = Inst.getNumOperands(); i--; )
         if (Inst.getOperand(i).isExpr())
-          AddValueSymbols(Inst.getOperand(i).getExpr());
+          visitUsedExpr(*Inst.getOperand(i).getExpr());
     }
     void EmitLabel(MCSymbol *Symbol) override {
       MCStreamer::EmitLabel(Symbol);
@@ -659,7 +636,7 @@ namespace {
     void EmitAssignment(MCSymbol *Symbol, const MCExpr *Value) override {
       // FIXME: should we handle aliases?
       markDefined(*Symbol);
-      AddValueSymbols(Value);
+      visitUsedExpr(*Value);
     }
     bool EmitSymbolAttribute(MCSymbol *Symbol,
                              MCSymbolAttr Attribute) override {
index 2692c3d..9d92f1d 100644 (file)
@@ -87,32 +87,6 @@ void MCObjectStreamer::visitUsedSymbol(const MCSymbol &Sym) {
   Assembler->getOrCreateSymbolData(Sym);
 }
 
-void MCObjectStreamer::visitUsedExpr(const MCExpr &Expr) {
-  switch (Expr.getKind()) {
-  case MCExpr::Target:
-    cast<MCTargetExpr>(Expr).visitUsedExpr(*this);
-    break;
-
-  case MCExpr::Constant:
-    break;
-
-  case MCExpr::Binary: {
-    const MCBinaryExpr &BE = cast<MCBinaryExpr>(Expr);
-    visitUsedExpr(*BE.getLHS());
-    visitUsedExpr(*BE.getRHS());
-    break;
-  }
-
-  case MCExpr::SymbolRef:
-    visitUsedSymbol(cast<MCSymbolRefExpr>(Expr).getSymbol());
-    break;
-
-  case MCExpr::Unary:
-    visitUsedExpr(*cast<MCUnaryExpr>(Expr).getSubExpr());
-    break;
-  }
-}
-
 void MCObjectStreamer::EmitCFISections(bool EH, bool Debug) {
   MCStreamer::EmitCFISections(EH, Debug);
   EmitEHFrame = EH;
index 8e675e5..6b4bb6f 100644 (file)
@@ -614,6 +614,35 @@ void MCStreamer::EmitAssignment(MCSymbol *Symbol, const MCExpr *Value) {
     TS->emitAssignment(Symbol, Value);
 }
 
+void MCStreamer::visitUsedSymbol(const MCSymbol &Sym) {
+}
+
+void MCStreamer::visitUsedExpr(const MCExpr &Expr) {
+  switch (Expr.getKind()) {
+  case MCExpr::Target:
+    cast<MCTargetExpr>(Expr).visitUsedExpr(*this);
+    break;
+
+  case MCExpr::Constant:
+    break;
+
+  case MCExpr::Binary: {
+    const MCBinaryExpr &BE = cast<MCBinaryExpr>(Expr);
+    visitUsedExpr(*BE.getLHS());
+    visitUsedExpr(*BE.getRHS());
+    break;
+  }
+
+  case MCExpr::SymbolRef:
+    visitUsedSymbol(cast<MCSymbolRefExpr>(Expr).getSymbol());
+    break;
+
+  case MCExpr::Unary:
+    visitUsedExpr(*cast<MCUnaryExpr>(Expr).getSubExpr());
+    break;
+  }
+}
+
 void MCStreamer::EmitAssemblerFlag(MCAssemblerFlag Flag) {}
 void MCStreamer::EmitThumbFunc(MCSymbol *Func) {}
 void MCStreamer::EmitSymbolDesc(MCSymbol *Symbol, unsigned DescValue) {}
index f1fdecc..42a6787 100644 (file)
@@ -16,7 +16,6 @@
 #include "llvm/MC/MCAssembler.h"
 #include "llvm/MC/MCContext.h"
 #include "llvm/MC/MCELF.h"
-#include "llvm/MC/MCObjectStreamer.h"
 #include "llvm/MC/MCSymbol.h"
 #include "llvm/MC/MCValue.h"
 #include "llvm/Object/ELF.h"
@@ -82,7 +81,7 @@ void AArch64MCExpr::PrintImpl(raw_ostream &OS) const {
   OS << *Expr;
 }
 
-void AArch64MCExpr::visitUsedExpr(MCObjectStreamer &Streamer) const {
+void AArch64MCExpr::visitUsedExpr(MCStreamer &Streamer) const {
   Streamer.visitUsedExpr(*getSubExpr());
 }
 
index 79b7463..5422f9d 100644 (file)
@@ -147,7 +147,7 @@ public:
 
   void PrintImpl(raw_ostream &OS) const override;
 
-  void visitUsedExpr(MCObjectStreamer &Streamer) const override;
+  void visitUsedExpr(MCStreamer &Streamer) const override;
 
   const MCSection *FindAssociatedSection() const override;
 
index 759fb29..e545e3c 100644 (file)
@@ -10,7 +10,6 @@
 #include "ARMMCExpr.h"
 #include "llvm/MC/MCAssembler.h"
 #include "llvm/MC/MCContext.h"
-#include "llvm/MC/MCObjectStreamer.h"
 using namespace llvm;
 
 #define DEBUG_TYPE "armmcexpr"
@@ -42,6 +41,6 @@ ARMMCExpr::EvaluateAsRelocatableImpl(MCValue &Res,
   return false;
 }
 
-void ARMMCExpr::visitUsedExpr(MCObjectStreamer &Streamer) const {
+void ARMMCExpr::visitUsedExpr(MCStreamer &Streamer) const {
   Streamer.visitUsedExpr(*getSubExpr());
 }
index 717f415..c5c0b10 100644 (file)
@@ -59,7 +59,7 @@ public:
   void PrintImpl(raw_ostream &OS) const override;
   bool EvaluateAsRelocatableImpl(MCValue &Res,
                                  const MCAsmLayout *Layout) const override;
-  void visitUsedExpr(MCObjectStreamer &Streamer) const override;
+  void visitUsedExpr(MCStreamer &Streamer) const override;
   const MCSection *FindAssociatedSection() const override {
     return getSubExpr()->FindAssociatedSection();
   }
index 7508be6..5bba3e5 100644 (file)
@@ -84,6 +84,6 @@ MipsMCExpr::EvaluateAsRelocatableImpl(MCValue &Res,
   return getSubExpr()->EvaluateAsRelocatable(Res, Layout);
 }
 
-void MipsMCExpr::visitUsedExpr(MCObjectStreamer &Streamer) const {
+void MipsMCExpr::visitUsedExpr(MCStreamer &Streamer) const {
   Streamer.visitUsedExpr(*getSubExpr());
 }
index b6836ba..f193dc9 100644 (file)
@@ -49,7 +49,7 @@ public:
   void PrintImpl(raw_ostream &OS) const override;
   bool EvaluateAsRelocatableImpl(MCValue &Res,
                                  const MCAsmLayout *Layout) const override;
-  void visitUsedExpr(MCObjectStreamer &Streamer) const override;
+  void visitUsedExpr(MCStreamer &Streamer) const override;
   const MCSection *FindAssociatedSection() const override {
     return getSubExpr()->FindAssociatedSection();
   }
index 10d2f74..5547649 100644 (file)
@@ -66,7 +66,7 @@ public:
                                  const MCAsmLayout *Layout) const override {
     return false;
   }
-  void visitUsedExpr(MCObjectStreamer &Streamer) const override {};
+  void visitUsedExpr(MCStreamer &Streamer) const override {};
   const MCSection *FindAssociatedSection() const override {
     return nullptr;
   }
index e4740c2..3ac0aca 100644 (file)
@@ -128,6 +128,6 @@ PPCMCExpr::EvaluateAsRelocatableImpl(MCValue &Res,
   return true;
 }
 
-void PPCMCExpr::visitUsedExpr(MCObjectStreamer &Streamer) const {
+void PPCMCExpr::visitUsedExpr(MCStreamer &Streamer) const {
   Streamer.visitUsedExpr(*getSubExpr());
 }
index 987240e..bca4085 100644 (file)
@@ -79,7 +79,7 @@ public:
   void PrintImpl(raw_ostream &OS) const override;
   bool EvaluateAsRelocatableImpl(MCValue &Res,
                                  const MCAsmLayout *Layout) const override;
-  void visitUsedExpr(MCObjectStreamer &Streamer) const override;
+  void visitUsedExpr(MCStreamer &Streamer) const override;
   const MCSection *FindAssociatedSection() const override {
     return getSubExpr()->FindAssociatedSection();
   }
index f0552c9..7f01ab0 100644 (file)
@@ -220,6 +220,6 @@ void SparcMCExpr::fixELFSymbolsInTLSFixups(MCAssembler &Asm) const {
   fixELFSymbolsInTLSFixupsImpl(getSubExpr(), Asm);
 }
 
-void SparcMCExpr::visitUsedExpr(MCObjectStreamer &Streamer) const {
+void SparcMCExpr::visitUsedExpr(MCStreamer &Streamer) const {
   Streamer.visitUsedExpr(*getSubExpr());
 }
index ac3a0c4..f0d0ef3 100644 (file)
@@ -88,7 +88,7 @@ public:
   void PrintImpl(raw_ostream &OS) const override;
   bool EvaluateAsRelocatableImpl(MCValue &Res,
                                  const MCAsmLayout *Layout) const override;
-  void visitUsedExpr(MCObjectStreamer &Streamer) const override;
+  void visitUsedExpr(MCStreamer &Streamer) const override;
   const MCSection *FindAssociatedSection() const override {
     return getSubExpr()->FindAssociatedSection();
   }