Use a 32 bit field for the symbol index.
authorRafael Espindola <rafael.espindola@gmail.com>
Mon, 1 Jun 2015 00:58:31 +0000 (00:58 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Mon, 1 Jun 2015 00:58:31 +0000 (00:58 +0000)
Even 64 ELF uses a 32 bit field to refer to symbols.

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

include/llvm/MC/MCSymbol.h

index f6bb1a7d35fba5d6cdf500381c0e54cc49673419..355ed85deb5b683271396c07e6b76d67fed3d9bc 100644 (file)
@@ -66,7 +66,7 @@ class MCSymbol {
   mutable bool HasData : 1;
 
   /// Index field, for use by the object file implementation.
-  mutable uint64_t Index : 60;
+  mutable uint32_t Index = 0;
 
   /// An expression describing how to calculate the size of a symbol. If a
   /// symbol has no size this field will be NULL.
@@ -99,7 +99,7 @@ private: // MCContext creates and uniques these.
   friend class MCContext;
   MCSymbol(const StringMapEntry<bool> *Name, bool isTemporary)
       : Name(Name), Section(nullptr), Value(nullptr), IsTemporary(isTemporary),
-        IsRedefinable(false), IsUsed(false), HasData(false), Index(0) {
+        IsRedefinable(false), IsUsed(false), HasData(false) {
     Offset = 0;
   }
 
@@ -200,15 +200,14 @@ public:
   /// @}
 
   /// Get the (implementation defined) index.
-  uint64_t getIndex() const {
+  uint32_t getIndex() const {
     assert(HasData && "Uninitialized symbol data");
     return Index;
   }
 
   /// Set the (implementation defined) index.
-  void setIndex(uint64_t Value) const {
+  void setIndex(uint32_t Value) const {
     assert(HasData && "Uninitialized symbol data");
-    assert(!(Value >> 60) && "Not enough bits for value");
     Index = Value;
   }