diff options
| author | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2015-05-22 05:59:05 +0000 |
|---|---|---|
| committer | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2015-05-22 05:59:05 +0000 |
| commit | 9b139800a70d86682bda6c23cbd0da3aba71a217 (patch) | |
| tree | a51882ce171382d64f9fd2214f2a4d12ac56a115 | |
| parent | 8d44ac4785208667c809c10d03afcb6aade69d89 (diff) | |
| download | bcm5719-llvm-9b139800a70d86682bda6c23cbd0da3aba71a217.tar.gz bcm5719-llvm-9b139800a70d86682bda6c23cbd0da3aba71a217.zip | |
MC: Pack MCSymbol::Index in with the bitfield in MCSymbol
Save a pointer for each `MCSymbol`, bringing `llc` memory usage down
from 920 MB to 914 MB, around ~0.6%.
(I'm looking at `llc` memory usage on `verify-uselistorder.lto.opt.bc`;
see r236629 for details.)
llvm-svn: 238003
| -rw-r--r-- | llvm/include/llvm/MC/MCSymbol.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/llvm/include/llvm/MC/MCSymbol.h b/llvm/include/llvm/MC/MCSymbol.h index b39c2713351..ca22248876f 100644 --- a/llvm/include/llvm/MC/MCSymbol.h +++ b/llvm/include/llvm/MC/MCSymbol.h @@ -167,17 +167,18 @@ class MCSymbol { mutable unsigned IsUsed : 1; mutable bool HasData : 1; - mutable MCSymbolData Data; /// Index field, for use by the object file implementation. - mutable uint64_t Index = 0; + mutable uint64_t Index : 60; + + mutable MCSymbolData Data; private: // MCContext creates and uniques these. friend class MCExpr; friend class MCContext; MCSymbol(StringRef name, bool isTemporary) : Name(name), Section(nullptr), Value(nullptr), IsTemporary(isTemporary), - IsRedefinable(false), IsUsed(false), HasData(false) {} + IsRedefinable(false), IsUsed(false), HasData(false), Index(0) {} MCSymbol(const MCSymbol &) = delete; void operator=(const MCSymbol &) = delete; @@ -290,6 +291,7 @@ public: /// Set the (implementation defined) index. void setIndex(uint64_t Value) const { assert(HasData && "Uninitialized symbol data"); + assert(!(Value >> 60) && "Not enough bits for value"); Index = Value; } |

