diff options
author | Bruno Ricci <riccibrun@gmail.com> | 2019-01-09 16:41:33 +0000 |
---|---|---|
committer | Bruno Ricci <riccibrun@gmail.com> | 2019-01-09 16:41:33 +0000 |
commit | 4939165d7ccdddb84344d450f4c225a5599686a6 (patch) | |
tree | 4393bd6b431f67c61ffb98578ea944babc45bd78 /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | cb4e59ed924357fbf21b2270abc77285ed848aba (diff) | |
download | llvm-4939165d7ccdddb84344d450f4c225a5599686a6.zip llvm-4939165d7ccdddb84344d450f4c225a5599686a6.tar.gz llvm-4939165d7ccdddb84344d450f4c225a5599686a6.tar.bz2 |
[AST] Move back BasePathSize to the bit-fields of CastExpr
The number of trailing CXXBaseSpecifiers in CastExpr was moved from
CastExprBitfields to a trailing object in r338489 (D50050). At this time these
bit-fields classes were only 32 bits wide. However later r345459 widened these
bit-field classes to 64 bits.
The reason for this change was that on 64 bit archs alignment requirements
caused 4 bytes of padding after the Stmt sub-object in nearly all expression
classes. Reusing this padding yielded an >10% reduction in the size used by all
statement/expressions when parsing all of Boost (on a 64 bit arch). This
increased the size of statement/expressions for 32 bits archs, but this can be
mitigated by moving more data to the bit-fields of Stmt (and moreover most
people now care about 64 bits archs as a host).
Therefore move back the number of CXXBaseSpecifiers in CastExpr to the
bit-fields of Stmt. This in effect mostly revert r338489 while keeping the
added test.
Differential Revision: https://reviews.llvm.org/D56358
Reviewed By: lebedev.ri
Reviewers: lebedev.ri, rjmccall
llvm-svn: 350741
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
0 files changed, 0 insertions, 0 deletions