summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC/MCParser/AsmLexer.cpp
diff options
context:
space:
mode:
authorJustin Bogner <mail@justinbogner.com>2014-08-14 02:42:10 +0000
committerJustin Bogner <mail@justinbogner.com>2014-08-14 02:42:10 +0000
commitcaf1c6e3dd226f62e622fedc106d38389c25d3c8 (patch)
treedd2b614518aed852d75e5e9e2832ca83d543f7cc /llvm/lib/MC/MCParser/AsmLexer.cpp
parentea800ca586633c03c113142055ef21f38bbf569c (diff)
downloadbcm5719-llvm-caf1c6e3dd226f62e622fedc106d38389c25d3c8.tar.gz
bcm5719-llvm-caf1c6e3dd226f62e622fedc106d38389c25d3c8.zip
CodeGen: When bitfields fall on natural boundaries, split them up
Currently when laying out bitfields that don't need any padding, we represent them as a wide enough int to contain all of the bits. This can be hard on the backend since we'll do things like represent stores to a few bits as loading an i144, masking it with a large constant, and storing it back. This turns up in less pathological cases where we load and mask 64 bit word on a 32 bit platform when we actually only need to access 32 bits. This leads to bad code being generated in most of our 32 bit backends. In practice, there are often natural breaks in bitfields, and it's a fairly simple and effective heuristic to split these fields into legal integer sized chunks when it will be equivalent (ie, it won't force us to add any extra padding). llvm-svn: 215614
Diffstat (limited to 'llvm/lib/MC/MCParser/AsmLexer.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud