From 09d3ecc60df6f9d6cc79171eb9f5e87bdcb33d57 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Mon, 1 Jun 2015 00:58:31 +0000 Subject: [PATCH] Use a 32 bit field for the symbol index. Even 64 ELF uses a 32 bit field to refer to symbols. llvm-svn: 238704 --- llvm/include/llvm/MC/MCSymbol.h | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/llvm/include/llvm/MC/MCSymbol.h b/llvm/include/llvm/MC/MCSymbol.h index f6bb1a7..355ed85 100644 --- a/llvm/include/llvm/MC/MCSymbol.h +++ b/llvm/include/llvm/MC/MCSymbol.h @@ -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 *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; } -- 2.7.4