summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFangrui Song <maskray@google.com>2019-07-09 07:12:58 +0000
committerFangrui Song <maskray@google.com>2019-07-09 07:12:58 +0000
commit50e7f45b280f1e7922a6525ace10a6bd33f70fa7 (patch)
treeb784f4dd91c098bcadac1831f2ca1cd9a6682497
parentc117be6fc620c7b97e6fc1de71291e5082d60614 (diff)
downloadbcm5719-llvm-50e7f45b280f1e7922a6525ace10a6bd33f70fa7.tar.gz
bcm5719-llvm-50e7f45b280f1e7922a6525ace10a6bd33f70fa7.zip
[ELF] Assert sizeof(SymbolUnion) <= 80
Reviewed By: ruiu Differential Revision: https://reviews.llvm.org/D64077 llvm-svn: 365443
-rw-r--r--lld/ELF/Symbols.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/lld/ELF/Symbols.h b/lld/ELF/Symbols.h
index 6ca24d4413a..f9b1fc6c4dc 100644
--- a/lld/ELF/Symbols.h
+++ b/lld/ELF/Symbols.h
@@ -460,6 +460,11 @@ union SymbolUnion {
alignas(LazyObject) char F[sizeof(LazyObject)];
};
+// It is important to keep the size of SymbolUnion small for performance and
+// memory usage reasons. 80 bytes is a soft limit based on the size of Defined
+// on a 64-bit system.
+static_assert(sizeof(SymbolUnion) <= 80, "SymbolUnion too large");
+
template <typename T> struct AssertSymbol {
static_assert(std::is_trivially_destructible<T>(),
"Symbol types must be trivially destructible");
OpenPOWER on IntegriCloud