diff --git a/include/llvm/MC/MCSymbol.h b/include/llvm/MC/MCSymbol.h index cf99c919281..d9b3b8486d2 100644 --- a/include/llvm/MC/MCSymbol.h +++ b/include/llvm/MC/MCSymbol.h @@ -43,10 +43,6 @@ class MCSymbolData { uint64_t CommonSize; }; - /// SymbolSize - An expression describing how to calculate the size of - /// a symbol. If a symbol has no size this field will be NULL. - const MCExpr *SymbolSize = nullptr; - /// CommonAlign - The alignment of the symbol, if it is 'common', or -1. // // FIXME: Pack this in with other fields? @@ -104,10 +100,6 @@ public: return CommonSize; } - void setSize(const MCExpr *SS) { SymbolSize = SS; } - - const MCExpr *getSize() const { return SymbolSize; } - /// getCommonAlignment - Return the alignment of a 'common' symbol. unsigned getCommonAlignment() const { assert(isCommon() && "Not a 'common' symbol!"); @@ -171,6 +163,10 @@ class MCSymbol { /// Index field, for use by the object file implementation. mutable uint64_t Index : 60; + /// An expression describing how to calculate the size of a symbol. If a + /// symbol has no size this field will be NULL. + const MCExpr *SymbolSize = nullptr; + mutable MCSymbolData Data; private: // MCContext creates and uniques these. @@ -295,6 +291,10 @@ public: Index = Value; } + void setSize(const MCExpr *SS) { SymbolSize = SS; } + + const MCExpr *getSize() const { return SymbolSize; } + /// print - Print the value to the stream \p OS. void print(raw_ostream &OS) const; diff --git a/lib/MC/ELFObjectWriter.cpp b/lib/MC/ELFObjectWriter.cpp index 27b8b9be9fd..97c0bcb4af7 100644 --- a/lib/MC/ELFObjectWriter.cpp +++ b/lib/MC/ELFObjectWriter.cpp @@ -480,9 +480,9 @@ void ELFObjectWriter::writeSymbol(SymbolTableWriter &Writer, uint64_t Value = SymbolValue(*MSD.Symbol, Layout); uint64_t Size = 0; - const MCExpr *ESize = OrigData.getSize(); + const MCExpr *ESize = MSD.Symbol->getSize(); if (!ESize && Base) - ESize = BaseSD->getSize(); + ESize = Base->getSize(); if (ESize) { int64_t Res; diff --git a/lib/MC/MCELFStreamer.cpp b/lib/MC/MCELFStreamer.cpp index ed97d01a909..e470ab49b01 100644 --- a/lib/MC/MCELFStreamer.cpp +++ b/lib/MC/MCELFStreamer.cpp @@ -331,12 +331,11 @@ void MCELFStreamer::EmitCommonSymbol(MCSymbol *Symbol, uint64_t Size, SD.setCommon(Size, ByteAlignment); } - SD.setSize(MCConstantExpr::Create(Size, getContext())); + Symbol->setSize(MCConstantExpr::Create(Size, getContext())); } void MCELFStreamer::EmitELFSize(MCSymbol *Symbol, const MCExpr *Value) { - MCSymbolData &SD = getAssembler().getOrCreateSymbolData(*Symbol); - SD.setSize(Value); + Symbol->setSize(Value); } void MCELFStreamer::EmitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size,