diff options
author | Reid Kleckner <rnk@google.com> | 2016-04-13 22:46:06 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2016-04-13 22:46:06 +0000 |
commit | 01db54113c5dfb4f6c0d85e83c8ff3e0e2e5a0a8 (patch) | |
tree | fb5eef7a54f30fe765aea6615bdc2fe3b3c86c0a | |
parent | 1eea9bd86ce0c1f58dac675ee8c3db7b0c00006b (diff) | |
download | bcm5719-llvm-01db54113c5dfb4f6c0d85e83c8ff3e0e2e5a0a8.tar.gz bcm5719-llvm-01db54113c5dfb4f6c0d85e83c8ff3e0e2e5a0a8.zip |
[IR] Optimize memory usage of Metadata on MSVC
An unsigned 2 bit bitfield takes 4 bytes in MSVC. Instead of a bitfield,
just use an unsigned char. We can go back to a bitfield when someone
implements the TODO of exposing and reusing the remaining 6 bits.
llvm-svn: 266256
-rw-r--r-- | llvm/include/llvm/IR/Metadata.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/include/llvm/IR/Metadata.h b/llvm/include/llvm/IR/Metadata.h index 5d2bb1ae19b..90651d00ef8 100644 --- a/llvm/include/llvm/IR/Metadata.h +++ b/llvm/include/llvm/IR/Metadata.h @@ -52,7 +52,7 @@ protected: enum StorageType { Uniqued, Distinct, Temporary }; /// \brief Storage flag for non-uniqued, otherwise unowned, metadata. - unsigned Storage : 2; + unsigned char Storage; // TODO: expose remaining bits to subclasses. unsigned short SubclassData16; @@ -93,6 +93,7 @@ public: protected: Metadata(unsigned ID, StorageType Storage) : SubclassID(ID), Storage(Storage), SubclassData16(0), SubclassData32(0) { + static_assert(sizeof(*this) == 8, "Metdata fields poorly packed"); } ~Metadata() = default; |