[APInt] Reorder fields to avoid a hole in the middle of the class
authorCraig Topper <craig.topper@gmail.com>
Thu, 13 Apr 2017 04:59:11 +0000 (04:59 +0000)
committerCraig Topper <craig.topper@gmail.com>
Thu, 13 Apr 2017 04:59:11 +0000 (04:59 +0000)
commit90377de9729f258598e7c494d787546223b050d4
treeb056825f7ea7ca9dbd3390199c859e2a0ca3b31e
parentb9054d6b8601d3d390a1b6ee16825f122ae12b6c
[APInt] Reorder fields to avoid a hole in the middle of the class

Summary:
APInt is currently implemented with an unsigned BitWidth field first and then a uint_64/pointer union. Due to the 64-bit size of the union there is a hole after the bitwidth.

Putting the union first allows the class to be packed. Making it 12 bytes instead of 16 bytes. An APSInt goes from 20 bytes to 16 bytes.

This shows a 4k reduction on the size of the opt binary on my local x86-64 build. So this enables some other improvement to the code as well.

Reviewers: dblaikie, RKSimon, hans, davide

Reviewed By: davide

Subscribers: davide, llvm-commits

Differential Revision: https://reviews.llvm.org/D32001

llvm-svn: 300171
llvm/include/llvm/ADT/APInt.h
llvm/lib/Support/APInt.cpp