diff options
| author | Rafael Espindola <rafael.espindola@gmail.com> | 2010-11-28 23:08:47 +0000 | 
|---|---|---|
| committer | Rafael Espindola <rafael.espindola@gmail.com> | 2010-11-28 23:08:47 +0000 | 
| commit | a084fd6e9d84694e4300f4f565a713ff97006d3d (patch) | |
| tree | ad1155c1c0b6af481ddf05d078a79259522c4b8f /llvm/lib | |
| parent | acf877be126d1c0d407a233957d79c8f4b32ea55 (diff) | |
| download | bcm5719-llvm-a084fd6e9d84694e4300f4f565a713ff97006d3d.tar.gz bcm5719-llvm-a084fd6e9d84694e4300f4f565a713ff97006d3d.zip | |
Move EmitValue to MCObjectStreamer.
llvm-svn: 120269
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/MC/MCELFStreamer.cpp | 20 | ||||
| -rw-r--r-- | llvm/lib/MC/MCMachOStreamer.cpp | 21 | ||||
| -rw-r--r-- | llvm/lib/MC/MCObjectStreamer.cpp | 19 | ||||
| -rw-r--r-- | llvm/lib/MC/WinCOFFStreamer.cpp | 24 | 
4 files changed, 19 insertions, 65 deletions
| diff --git a/llvm/lib/MC/MCELFStreamer.cpp b/llvm/lib/MC/MCELFStreamer.cpp index c7ece6f3cb2..9dfc16e2098 100644 --- a/llvm/lib/MC/MCELFStreamer.cpp +++ b/llvm/lib/MC/MCELFStreamer.cpp @@ -124,7 +124,6 @@ public:      assert(0 && "ELF doesn't support this directive");    }    virtual void EmitBytes(StringRef Data, unsigned AddrSpace); -  virtual void EmitValue(const MCExpr *Value, unsigned Size,unsigned AddrSpace);    virtual void EmitValueToAlignment(unsigned ByteAlignment, int64_t Value = 0,                                      unsigned ValueSize = 1,                                      unsigned MaxBytesToEmit = 0); @@ -370,25 +369,6 @@ void MCELFStreamer::EmitBytes(StringRef Data, unsigned AddrSpace) {    getOrCreateDataFragment()->getContents().append(Data.begin(), Data.end());  } -void MCELFStreamer::EmitValue(const MCExpr *Value, unsigned Size, -                                unsigned AddrSpace) { -  // TODO: This is exactly the same as WinCOFFStreamer. Consider merging into -  // MCObjectStreamer. -  MCDataFragment *DF = getOrCreateDataFragment(); - -  // Avoid fixups when possible. -  int64_t AbsValue; -  if (AddValueSymbols(Value)->EvaluateAsAbsolute(AbsValue)) { -    // FIXME: Endianness assumption. -    for (unsigned i = 0; i != Size; ++i) -      DF->getContents().push_back(uint8_t(AbsValue >> (i * 8))); -  } else { -    DF->addFixup(MCFixup::Create(DF->getContents().size(), AddValueSymbols(Value), -                                 MCFixup::getKindForSize(Size, false))); -    DF->getContents().resize(DF->getContents().size() + Size, 0); -  } -} -  void MCELFStreamer::EmitValueToAlignment(unsigned ByteAlignment,                                             int64_t Value, unsigned ValueSize,                                             unsigned MaxBytesToEmit) { diff --git a/llvm/lib/MC/MCMachOStreamer.cpp b/llvm/lib/MC/MCMachOStreamer.cpp index fd48e6b2bab..682454398d4 100644 --- a/llvm/lib/MC/MCMachOStreamer.cpp +++ b/llvm/lib/MC/MCMachOStreamer.cpp @@ -74,7 +74,6 @@ public:    virtual void EmitTBSSSymbol(const MCSection *Section, MCSymbol *Symbol,                                uint64_t Size, unsigned ByteAlignment = 0);    virtual void EmitBytes(StringRef Data, unsigned AddrSpace); -  virtual void EmitValue(const MCExpr *Value, unsigned Size,unsigned AddrSpace);    virtual void EmitValueToAlignment(unsigned ByteAlignment, int64_t Value = 0,                                      unsigned ValueSize = 1,                                      unsigned MaxBytesToEmit = 0); @@ -307,26 +306,6 @@ void MCMachOStreamer::EmitBytes(StringRef Data, unsigned AddrSpace) {    getOrCreateDataFragment()->getContents().append(Data.begin(), Data.end());  } -void MCMachOStreamer::EmitValue(const MCExpr *Value, unsigned Size, -                                unsigned AddrSpace) { -  // TODO: This is exactly the same as WinCOFFStreamer. Consider merging into -  // MCObjectStreamer. -  MCDataFragment *DF = getOrCreateDataFragment(); - -  // Avoid fixups when possible. -  int64_t AbsValue; -  if (AddValueSymbols(Value)->EvaluateAsAbsolute(AbsValue)) { -    // FIXME: Endianness assumption. -    for (unsigned i = 0; i != Size; ++i) -      DF->getContents().push_back(uint8_t(AbsValue >> (i * 8))); -  } else { -    DF->addFixup(MCFixup::Create(DF->getContents().size(), -                                 AddValueSymbols(Value), -                                 MCFixup::getKindForSize(Size, false))); -    DF->getContents().resize(DF->getContents().size() + Size, 0); -  } -} -  void MCMachOStreamer::EmitValueToAlignment(unsigned ByteAlignment,                                             int64_t Value, unsigned ValueSize,                                             unsigned MaxBytesToEmit) { diff --git a/llvm/lib/MC/MCObjectStreamer.cpp b/llvm/lib/MC/MCObjectStreamer.cpp index e2cd96433ec..111bc1be065 100644 --- a/llvm/lib/MC/MCObjectStreamer.cpp +++ b/llvm/lib/MC/MCObjectStreamer.cpp @@ -76,6 +76,25 @@ const MCExpr *MCObjectStreamer::AddValueSymbols(const MCExpr *Value) {    return Value;  } +void MCObjectStreamer::EmitValue(const MCExpr *Value, unsigned Size, +                                 unsigned AddrSpace) { +  assert(AddrSpace == 0 && "Address space must be 0!"); +  MCDataFragment *DF = getOrCreateDataFragment(); + +  // Avoid fixups when possible. +  int64_t AbsValue; +  if (AddValueSymbols(Value)->EvaluateAsAbsolute(AbsValue)) { +    // FIXME: Endianness assumption. +    for (unsigned i = 0; i != Size; ++i) +      DF->getContents().push_back(uint8_t(AbsValue >> (i * 8))); +  } else { +    DF->addFixup(MCFixup::Create(DF->getContents().size(), +                                 AddValueSymbols(Value), +                                 MCFixup::getKindForSize(Size, false))); +    DF->getContents().resize(DF->getContents().size() + Size, 0); +  } +} +  void MCObjectStreamer::EmitLabel(MCSymbol *Symbol) {    assert(!Symbol->isVariable() && "Cannot emit a variable symbol!");    assert(CurSection && "Cannot emit before setting section!"); diff --git a/llvm/lib/MC/WinCOFFStreamer.cpp b/llvm/lib/MC/WinCOFFStreamer.cpp index b85fe91db7b..a13b632db68 100644 --- a/llvm/lib/MC/WinCOFFStreamer.cpp +++ b/llvm/lib/MC/WinCOFFStreamer.cpp @@ -68,8 +68,6 @@ public:    virtual void EmitTBSSSymbol(const MCSection *Section, MCSymbol *Symbol,                                uint64_t Size, unsigned ByteAlignment);    virtual void EmitBytes(StringRef Data, unsigned AddrSpace); -  virtual void EmitValue(const MCExpr *Value, unsigned Size, -                         unsigned AddrSpace);    virtual void EmitValueToAlignment(unsigned ByteAlignment, int64_t Value,                                     unsigned ValueSize, unsigned MaxBytesToEmit);    virtual void EmitCodeAlignment(unsigned ByteAlignment, @@ -328,28 +326,6 @@ void WinCOFFStreamer::EmitBytes(StringRef Data, unsigned AddrSpace) {    getOrCreateDataFragment()->getContents().append(Data.begin(), Data.end());  } -void WinCOFFStreamer::EmitValue(const MCExpr *Value, unsigned Size, -                                unsigned AddrSpace) { -  assert(AddrSpace == 0 && "Address space must be 0!"); - -  // TODO: This is copied exactly from the MachOStreamer. Consider merging into -  // MCObjectStreamer? -  MCDataFragment *DF = getOrCreateDataFragment(); - -  // Avoid fixups when possible. -  int64_t AbsValue; -  if (AddValueSymbols(Value)->EvaluateAsAbsolute(AbsValue)) { -    // FIXME: Endianness assumption. -    for (unsigned i = 0; i != Size; ++i) -      DF->getContents().push_back(uint8_t(AbsValue >> (i * 8))); -  } else { -    DF->addFixup(MCFixup::Create(DF->getContents().size(), -                                 AddValueSymbols(Value), -                                 MCFixup::getKindForSize(Size, false))); -    DF->getContents().resize(DF->getContents().size() + Size, 0); -  } -} -  void WinCOFFStreamer::EmitValueToAlignment(unsigned ByteAlignment,                                             int64_t Value,                                             unsigned ValueSize, | 

