[llvm] r238001 - MC: Lift MCSymbolData::Index up to MCSymbol::Index, NFC

Duncan P. N. Exon Smith dexonsmith at apple.com
Thu May 21 22:54:02 PDT 2015


Author: dexonsmith
Date: Fri May 22 00:54:01 2015
New Revision: 238001

URL: http://llvm.org/viewvc/llvm-project?rev=238001&view=rev
Log:
MC: Lift MCSymbolData::Index up to MCSymbol::Index, NFC

Lift `MCSymbolData::Index` up a level to `MCSymbol`, as preparation for
packing it into the bitfield in `MCSymbol`.

Modified:
    llvm/trunk/include/llvm/MC/MCSymbol.h
    llvm/trunk/lib/MC/ELFObjectWriter.cpp
    llvm/trunk/lib/MC/MCAssembler.cpp
    llvm/trunk/lib/MC/MachObjectWriter.cpp

Modified: llvm/trunk/include/llvm/MC/MCSymbol.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCSymbol.h?rev=238001&r1=238000&r2=238001&view=diff
==============================================================================
--- llvm/trunk/include/llvm/MC/MCSymbol.h (original)
+++ llvm/trunk/include/llvm/MC/MCSymbol.h Fri May 22 00:54:01 2015
@@ -56,9 +56,6 @@ class MCSymbolData {
   /// additional per symbol information which is not easily classified.
   uint32_t Flags = 0;
 
-  /// Index - Index field, for use by the object file implementation.
-  uint64_t Index = 0;
-
 public:
   MCSymbolData() { Offset = 0; }
 
@@ -128,12 +125,6 @@ public:
     Flags = (Flags & ~Mask) | Value;
   }
 
-  /// getIndex - Get the (implementation defined) index.
-  uint64_t getIndex() const { return Index; }
-
-  /// setIndex - Set the (implementation defined) index.
-  void setIndex(uint64_t Value) { Index = Value; }
-
   /// @}
 
   void dump() const;
@@ -178,6 +169,9 @@ class MCSymbol {
   mutable bool HasData : 1;
   mutable MCSymbolData Data;
 
+  /// Index field, for use by the object file implementation.
+  mutable uint64_t Index = 0;
+
 private: // MCContext creates and uniques these.
   friend class MCExpr;
   friend class MCContext;
@@ -287,6 +281,18 @@ public:
 
   /// @}
 
+  /// Get the (implementation defined) index.
+  uint64_t getIndex() const {
+    assert(HasData && "Uninitialized symbol data");
+    return Index;
+  }
+
+  /// Set the (implementation defined) index.
+  void setIndex(uint64_t Value) const {
+    assert(HasData && "Uninitialized symbol data");
+    Index = Value;
+  }
+
   /// print - Print the value to the stream \p OS.
   void print(raw_ostream &OS) const;
 

Modified: llvm/trunk/lib/MC/ELFObjectWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/ELFObjectWriter.cpp?rev=238001&r1=238000&r2=238001&view=diff
==============================================================================
--- llvm/trunk/lib/MC/ELFObjectWriter.cpp (original)
+++ llvm/trunk/lib/MC/ELFObjectWriter.cpp Fri May 22 00:54:01 2015
@@ -858,8 +858,8 @@ void ELFObjectWriter::RecordRelocation(M
 uint64_t
 ELFObjectWriter::getSymbolIndexInSymbolTable(const MCAssembler &Asm,
                                              const MCSymbol *S) {
-  const MCSymbolData &SD = Asm.getSymbolData(*S);
-  return SD.getIndex();
+  assert(S->hasData());
+  return S->getIndex();
 }
 
 bool ELFObjectWriter::isInSymtab(const MCAsmLayout &Layout,
@@ -1049,12 +1049,12 @@ void ELFObjectWriter::computeSymbolTable
   // symbols with non-local bindings.
   unsigned Index = FileSymbolData.size() + 1;
   for (unsigned i = 0, e = LocalSymbolData.size(); i != e; ++i)
-    LocalSymbolData[i].Symbol->getData().setIndex(Index++);
+    LocalSymbolData[i].Symbol->setIndex(Index++);
 
   for (unsigned i = 0, e = ExternalSymbolData.size(); i != e; ++i)
-    ExternalSymbolData[i].Symbol->getData().setIndex(Index++);
+    ExternalSymbolData[i].Symbol->setIndex(Index++);
   for (unsigned i = 0, e = UndefinedSymbolData.size(); i != e; ++i)
-    UndefinedSymbolData[i].Symbol->getData().setIndex(Index++);
+    UndefinedSymbolData[i].Symbol->setIndex(Index++);
 }
 
 MCSectionELF *

Modified: llvm/trunk/lib/MC/MCAssembler.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCAssembler.cpp?rev=238001&r1=238000&r2=238001&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCAssembler.cpp (original)
+++ llvm/trunk/lib/MC/MCAssembler.cpp Fri May 22 00:54:01 2015
@@ -1268,7 +1268,7 @@ void MCSymbolData::dump() const {
      << " Fragment:" << getFragment();
   if (!isCommon())
     OS << " Offset:" << getOffset();
-  OS << " Flags:" << getFlags() << " Index:" << getIndex();
+  OS << " Flags:" << getFlags();
   if (isCommon())
     OS << " (common, size:" << getCommonSize()
        << " align: " << getCommonAlignment() << ")";
@@ -1295,7 +1295,7 @@ void MCAssembler::dump() {
     if (it != symbol_begin()) OS << ",\n           ";
     OS << "(";
     it->dump();
-    OS << ",";
+    OS << ", Index:" << it->getIndex() << ", ";
     it->getData().dump();
     OS << ")";
   }

Modified: llvm/trunk/lib/MC/MachObjectWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MachObjectWriter.cpp?rev=238001&r1=238000&r2=238001&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MachObjectWriter.cpp (original)
+++ llvm/trunk/lib/MC/MachObjectWriter.cpp Fri May 22 00:54:01 2015
@@ -616,11 +616,11 @@ void MachObjectWriter::ComputeSymbolTabl
   // Set the symbol indices.
   Index = 0;
   for (unsigned i = 0, e = LocalSymbolData.size(); i != e; ++i)
-    LocalSymbolData[i].Symbol->getData().setIndex(Index++);
+    LocalSymbolData[i].Symbol->setIndex(Index++);
   for (unsigned i = 0, e = ExternalSymbolData.size(); i != e; ++i)
-    ExternalSymbolData[i].Symbol->getData().setIndex(Index++);
+    ExternalSymbolData[i].Symbol->setIndex(Index++);
   for (unsigned i = 0, e = UndefinedSymbolData.size(); i != e; ++i)
-    UndefinedSymbolData[i].Symbol->getData().setIndex(Index++);
+    UndefinedSymbolData[i].Symbol->setIndex(Index++);
 
   for (const MCSectionData &SD : Asm) {
     std::vector<RelAndSymbol> &Relocs = Relocations[&SD];
@@ -629,7 +629,7 @@ void MachObjectWriter::ComputeSymbolTabl
         continue;
 
       // Set the Index and the IsExtern bit.
-      unsigned Index = Rel.Sym->getData().getIndex();
+      unsigned Index = Rel.Sym->getIndex();
       assert(isInt<24>(Index));
       if (IsLittleEndian)
         Rel.MRE.r_word1 = (Rel.MRE.r_word1 & (~0U << 24)) | Index | (1 << 27);
@@ -982,7 +982,7 @@ void MachObjectWriter::WriteObject(MCAss
         }
       }
 
-      Write32(Asm.getSymbolData(*it->Symbol).getIndex());
+      Write32(it->Symbol->getIndex());
     }
 
     // FIXME: Check that offsets match computed ones.





More information about the llvm-commits mailing list