]> granicus.if.org Git - llvm/commitdiff
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.

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

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

index 8552d9d6bea230dd218bbfc37bf69364280b5e31..e96ecb4be1759ddfa19e4434f6441c31a5870f52 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 d4eb398a3db6d3377fa4c83f2d48d57b2cf68dfb..8d37c85b05859b249e8820bfc47e007622242814 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 4184cee174fb5cb3b4446323254e22c1752b653a..c24c64283d2db979fbb34a16dfea4eb4d409bb1d 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 20faa97cf454e4cf5d726e3bbc3379fdc94a5cc1..22ccff3dda7a4ddec824cabc0e1a40fd90cb02b7 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 2692c3df67eeb9ac74dc0afa513d15e95f257f25..9d92f1ddcac11ffdfd4d85212df6ad00e6b95e4a 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 8e675e5f4eac782ba37465e5d6d37c45579c98e1..6b4bb6f432f5c315d30cbd6544304a4ce5067c0f 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 f1fdecca287e01491c87b2614694b5608b9c3f30..42a6787da48ebaac5dad834d6e037c472a10daf2 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 79b7463b0527a01456ea38e35941bd5a1e636f2e..5422f9d7067e1158818a2cc5c8ac58fe29c43141 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 759fb2932614fecc48812fd3f994e3d2bf48de32..e545e3c2f301f328d555cadd76ab42c88f167f52 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 717f4158cfb9c3ce8273a93e9c3c3af242ed3225..c5c0b10f8ad91563643e258126ec0d0cb18abda7 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 7508be6e0dd49ad3e22ad570ce139f116e712a92..5bba3e5b7ae27f3a0640bc9dc63e0524e36376e3 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 b6836ba93f5f804b4f9faa57ca55d686169b29a5..f193dc9b9d507b6161c964747c5309d0b73b6eab 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 10d2f74e0de713cbb2cd0e0c43a25374b6b8e261..554764930a9e88b582a3c0584108aa2bdec0b395 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 e4740c240da7508f9f23456ac3a50837c053e8f8..3ac0aca6b78cf4681346453e9b1eadd4c435ae9e 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 987240e431c493a3669ac76a44f7bd08db4176d5..bca408507e72895349af8fa1db6fc477e70957d0 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 f0552c991e214b293889a9f5e4d17f2986962f75..7f01ab06879f7bbea841a641aebaba1070a03bbe 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 ac3a0c47bddcba36dcb47fd0d87050e273ee8fdb..f0d0ef363ad82c1c5a564c29d79c96a08514316a 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();
   }