IR: Move NumOperands from User to Value, NFC
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>
Wed, 15 Oct 2014 20:39:05 +0000 (20:39 +0000)
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>
Wed, 15 Oct 2014 20:39:05 +0000 (20:39 +0000)
commit8d5aeb269869b66919864f93e706d054d142b29d
treea47c61cda8648d154571bf867fbe9f3056fa8e3e
parentfcece4d2162e47c0f7325d1c262f460ff078aab7
IR: Move NumOperands from User to Value, NFC

Store `User::NumOperands` (and `MDNode::NumOperands`) in `Value`.

On 64-bit host architectures, this reduces `sizeof(User)` and all
subclasses by 8, and has no effect on `sizeof(Value)` (or, incidentally,
on `sizeof(MDNode)`).

On 32-bit host architectures, this increases `sizeof(Value)` by 4.
However, it has no effect on `sizeof(User)` and `sizeof(MDNode)`, so the
only concrete subclasses of `Value` that actually see the increase are
`BasicBlock`, `Argument`, `InlineAsm`, and `MDString`.  Moreover, I'll
be shocked and confused if this causes a tangible memory regression.

This has no functionality change (other than memory footprint).

llvm-svn: 219845
llvm/include/llvm/IR/Metadata.h
llvm/include/llvm/IR/User.h
llvm/include/llvm/IR/Value.h
llvm/lib/IR/Value.cpp