aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Object/MachOObjectFile.cpp
diff options
context:
space:
mode:
authorWarren Hunt <whunt@google.com>2013-12-06 00:01:17 +0000
committerWarren Hunt <whunt@google.com>2013-12-06 00:01:17 +0000
commit7b252d24adf8a76376fef344b3f9e37a1363a669 (patch)
treea252ad289158272f6d3ab416ad94be34e6f9565e /llvm/lib/Object/MachOObjectFile.cpp
parente6ac50ad71b7dd63e5b746fce9eb3a1e76debb01 (diff)
downloadllvm-7b252d24adf8a76376fef344b3f9e37a1363a669.zip
llvm-7b252d24adf8a76376fef344b3f9e37a1363a669.tar.gz
llvm-7b252d24adf8a76376fef344b3f9e37a1363a669.tar.bz2
Support MS-ABI's concept of "Required Alignment" imposed by
__declspec(align()) This patch implements required alignment in a way that makes __declspec(align()) and #pragma pack play correctly together. In the MS-ABI, __declspec(align()) is a hard rule and cannot be overridden by #pragma pack. This cases each record to have two interesting alignments "preferred alignment" (which matches Itanium's concept of alignment) and "required alignment" which is an alignment that must never be violated, even in the case of #pragma pack. This patch introduces the concept of Required Alignment to the record builder and tracks/uses it appropriately. Test cases are included. Differential Revision: http://llvm-reviews.chandlerc.com/D2283 llvm-svn: 196549
Diffstat (limited to 'llvm/lib/Object/MachOObjectFile.cpp')
0 files changed, 0 insertions, 0 deletions