summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2016-04-13 22:46:06 +0000
committerReid Kleckner <rnk@google.com>2016-04-13 22:46:06 +0000
commit01db54113c5dfb4f6c0d85e83c8ff3e0e2e5a0a8 (patch)
treefb5eef7a54f30fe765aea6615bdc2fe3b3c86c0a
parent1eea9bd86ce0c1f58dac675ee8c3db7b0c00006b (diff)
downloadbcm5719-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.h3
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;
OpenPOWER on IntegriCloud