History log of /external/clang/lib/AST/RecordLayoutBuilder.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
ef8225444452a1486bd721f3285301fe84643b00 21-Jul-2014 Stephen Hines <srhines@google.com> Update Clang for rebase to r212749.

This also fixes a small issue with arm_neon.h not being generated always.

Includes a cherry-pick of:
r213450 - fixes mac-specific header issue
r213126 - removes a default -Bsymbolic on Android

Change-Id: I2a790a0f5d3b2aab11de596fc3a74e7cbc99081d
/external/clang/lib/AST/RecordLayoutBuilder.cpp
6bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89 29-May-2014 Stephen Hines <srhines@google.com> Update Clang for 3.5 rebase (r209713).

Change-Id: I8c9133b0f8f776dc915f270b60f94962e771bc83
/external/clang/lib/AST/RecordLayoutBuilder.cpp
651f13cea278ec967336033dd032faef0e9fc2ec 24-Apr-2014 Stephen Hines <srhines@google.com> Updated to Clang 3.5a.

Change-Id: I8127eb568f674c2e72635b639a3295381fe8af82
/external/clang/lib/AST/RecordLayoutBuilder.cpp
8d1f5a5c54514cb66390acaa133730f43e69d97e 20-Nov-2013 Bill Wendling <isanbard@gmail.com> Merging r195158:
------------------------------------------------------------------------
r195158 | whunt | 2013-11-19 14:11:09 -0800 (Tue, 19 Nov 2013) | 9 lines

Microsoft Record Layout: zero sized base after base with vbtbl fix

Microsoft adds an extra byte of padding before laying out zero sized
non-virtual bases if the non-virtual base before it contains a vbptr.
This patch adds the same behavior to clang.

Differential Revision: http://llvm-reviews.chandlerc.com/D2106


------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_34@195167 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
1d40d62f137d3831729131e56562fc490b7f9591 13-Nov-2013 Warren Hunt <whunt@google.com> No functional change. Renaming a variable in RecordLayoutBuilder and
improving comments to make documentation more accurate.

Differential Revision:http://llvm-reviews.chandlerc.com/D2172



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194609 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
6acb04f755cfc73d05772457d70aeb5adfaf6d8f 08-Nov-2013 Timur Iskhodzhanov <timurrrr@google.com> Thread the info about vbptr sharing through ASTRecordLayout

Reviewed at http://llvm-reviews.chandlerc.com/D2120

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194256 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
92563d0c04d9f06e528439bb93073e41ecbdc07b 06-Nov-2013 Warren Hunt <whunt@google.com> Microsoft adds weird padding before virtual bases if the last field was a bitfield

This patch adds the same behavior to clang.

Differential Revision: http://llvm-reviews.chandlerc.com/D2103



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194115 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
caf759752b086ef30b6c564654b382d17fb0c16f 02-Nov-2013 Warren Hunt <whunt@google.com> Improves compatibility with cl.exe when laying out array fields

Differential Revision: http://llvm-reviews.chandlerc.com/D2090

Clang was "improperly" over-aligning arrays with sizes are not a multiple of
their alignment.
This behavior was removed in microsoft 32 bit mode.

In addition, after examination of ASTContext::getTypeInfoImpl, a redundant code block in
MicrosoftRecordLayoutBuilder::getAdjustedFieldInfo was deleted.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193898 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
68eccccbbfc9d87b754df539f5b1343f4c499b63 25-Oct-2013 Benjamin Kramer <benny.kra@googlemail.com> Remove dead variables.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193395 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
1bf080e8f1283aa3c85418a3da3a49457896f0cc 24-Oct-2013 Benjamin Kramer <benny.kra@googlemail.com> Remove dead recursive function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193313 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
7967c95891c5f65f6312fbbcb999ac257d776914 24-Oct-2013 Warren Hunt <whunt@google.com> Implements 64 bit microsoft record layout and adds lit tests to cover
it. Also removes all of the microsoft C++ ABI related code from the
itanium layout builder.

Differential Revision: http://llvm-reviews.chandlerc.com/D2003



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193290 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
bc6509175e1ce5cc1b48d1b97ac8d23d8b74167c 17-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Rename some functions for consistency.

Every other function in Redeclarable.h was using Decl instead of Declaration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192900 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
a7dec298303edbf3eb2c7993801c602a1d88e9db 14-Oct-2013 Reid Kleckner <reid@kleckner.net> PR17576: Fix assertion on polymorphic classes with small alignment

We have to reserve at least the width of a pointer for the vfptr. For
classes with small alignment, we weren't reserving enough space, and
were overlapping the first field with the vfptr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192626 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
d42217f7570e68d08bde1ff89960e1773b41749a 14-Oct-2013 Warren Hunt <whunt@google.com> Correctly check for distructors when realizing vtordisps

This patch fixes the distructor test when checking for vtordisp requirements in
microsoft record layout. A test case is also included.

Addresses:
http://llvm.org/bugs/show_bug.cgi?id=16406#c7



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192616 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
812a32f41efc1cea52ee93220ba1519758807ad6 11-Oct-2013 Reid Kleckner <reid@kleckner.net> Only use the MS record layout when using the MS C++ ABI

We're not ready to use it everywhere we use a win32 triple yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192502 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
70e37c458e9189cf2d8078b02deb8f8a189f826b 11-Oct-2013 Reid Kleckner <reid@kleckner.net> Fix unused variable warning in MS record layout.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192495 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
b2969b1e50580344891a98f5b241f8351fe371cf 11-Oct-2013 Warren Hunt <whunt@google.com> Adds Microsoft compatiable C++ record layout code to clang.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192494 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
cd03f862d82cac28c9517e2036716f8d49112c8b 30-Aug-2013 Richard Smith <richard-llvm@metafoo.co.uk> Be lazier when loading KeyFunctions from PCH/modules. We don't need to load
these in eagerly if we're not actually processing a translation unit. The added
laziness here also avoids us loading in parts of a CXXRecordDecl earlier than an
upcoming class template specialization merging patch would like.

Ideally, we should mark the vtable as used when we see a definition for the key
function, rather than having a separate pass over dynamic classes at the end of
the TU. The existing approach is pretty bad for PCH/modules, since it forcibly
loads the declarations of all key functions in all imported modules, whether or
not those key functions are defined.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@189627 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
5029bd518b4d5363ceb049c9162c30e5b38ba199 16-Jul-2013 Eli Friedman <eli.friedman@gmail.com> Fix alignment of class derived from empty class.

The record layout code didn't properly take into account that
an empty class at offset 0 can have an alignment greater than 1.

Patch by Andrea Di Biagio.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186370 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
c250192494e0fa63be50269d2c1eb7786f8ab7a0 13-Jul-2013 Argyrios Kyrtzidis <akyrtzi@gmail.com> Changes so that a few tests do not fail when running under guarded malloc.

Guarded malloc emits some messages at the beginning in stderr when enabled.
These messages caused a few tests to fail.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186219 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
2a42bc82c513756d200e49c9ea5a68e5d7bca43e 27-Jun-2013 Eli Friedman <eli.friedman@gmail.com> Simplify code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185042 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
cd06f26835033e879a9278941f4f6e6a4086976d 26-Jun-2013 Eli Friedman <eli.friedman@gmail.com> Rewrite record layout for ms_struct structs.

The old implementation of ms_struct in RecordLayoutBuilder was a
complete mess: it depended on complicated conditionals which didn't
really reflect the underlying logic, and placed a burden on users of
the resulting RecordLayout. This commit rips out almost all of the
old code, and replaces it with simple checks in
RecordLayoutBuilder::LayoutBitField.

This commit also fixes <rdar://problem/14252115>, a bug where class
inheritance would cause us to lay out bitfields incorrectly.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185018 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
147fab970c9877273e6185f0e276f376887c967f 26-Jun-2013 Matt Beaumont-Gay <matthewbg@google.com> Don't try to get the layout of an invalid decl in getDeclAlign.

When the decl that we're getting alignment for is a FieldDecl, and the field's
parent record is invalid, skip the actual field alignment calculation (and
return 1-byte alignment in the general case).

Also, assert in in getASTRecordLayout that the decl is valid. This was
inspired by PR16292; see also r184581 and r184751.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184883 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
5a8b0491df5491566ddbf63a99e714a2bd4bb046 29-May-2013 Reid Kleckner <reid@kleckner.net> [ms-cxxabi] There are no key functions in the Microsoft C++ ABI

MSVC's class data is always comdat, so clang's should always be
linkonce_odr in LLVM IR.

Reviewers: pcc

Differential Revision: http://llvm-reviews.chandlerc.com/D838

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182865 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
d6a08d16a0c8d98e2491f3ee012dbb46b64038f2 14-May-2013 Reid Kleckner <reid@kleckner.net> [ms-cxxabi] Mangle in an implicit 'E' for certain types on win64

Most of the complexity of this patch is figuring out which types get the
qualifier and which don't. If we implement __ptr32/64, then we should
check the qualifier instead of assuming all pointers are 64-bit.

This fixes PR13792.

Patch by Warren Hunt!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181825 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
181e3ecc0907ae0103586a9f4db52241995a8267 13-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Cleanup handling of UniqueExternalLinkage.

This patch renames getLinkage to getLinkageInternal. Only code that
needs to handle UniqueExternalLinkage specially should call this.

Linkage, as defined in the c++ standard, is provided by
getFormalLinkage. It maps UniqueExternalLinkage to ExternalLinkage.

Most places in the compiler actually want isExternallyVisible, which
handles UniqueExternalLinkage as internal.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181677 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
a438b2d277fae00a4fa467ffcf382246e0a201e9 29-Jan-2013 John McCall <rjmccall@apple.com> Abstract the behavior of when to use base-class tail padding.

For fun, I added a comedy "actually obey the C++11 POD rules" option
which nobody is allowed to use.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173744 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
d5617eeafc93209a26b9f88276c88cf997c3a0a7 25-Jan-2013 John McCall <rjmccall@apple.com> The standard ARM C++ ABI dictates that inline functions are
never key functions. We did not implement that rule for the
iOS ABI, which was driven by what was implemented in gcc-4.2.
However, implement it now for other ARM-based platforms.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173515 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
b8b2c9da87e7d70a1679db026f40548b3192b705 25-Jan-2013 John McCall <rjmccall@apple.com> First pass at abstracting out a class for the target C++ ABI.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173514 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
0ee69cc6d4fc547671303afbd715cb990e5c3af6 08-Dec-2012 Eli Bendersky <eliben@google.com> Currently when AST record layouts are dumped with -fdump-record-layouts, the
following:

sizeof=132, dsize=132, align=4
nvsize=132, nvalign=4

Is not indented, so when classes are nested there is no way to know to
which class it belongs.

Fix this problem by indenting the size summary properly for each class.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169654 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
55fc873017f10f6f566b182b70f6fc22aefa3464 04-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Sort all of Clang's files under 'lib', and fix up the broken headers
uncovered.

This required manually correcting all of the incorrect main-module
headers I could find, and running the new llvm/utils/sort_includes.py
script over the files.

I also manually added quite a few missing headers that were uncovered by
shuffling the order or moving headers up to be main-module-headers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169237 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
f596760aab256d81a6823e731c988b35ef8197ad 27-Oct-2012 Douglas Gregor <dgregor@apple.com> When an externally-supplied record layout has a size that clearly
doesn't include padding up to the alignment of the record, take this
as a cue that the alignment of the record should (conservatively) be
set to 1. This is similar to other the other cues we use to determine
that the record has a lower alignment, e.g., that the
externally-supplied layout places fields at lower offsets than we
would. Fixes <rdar://problem/12582052>; test case in LLDB.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166824 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
5f608aedb6c5d32d2f7c51f9354a75b21f1eeaee 13-Oct-2012 Eli Friedman <eli.friedman@gmail.com> Make -mms-bitfields behave consistently.

Patch by Jeremiah Zanin.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165849 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
f56faa01936b9cf909623d7f06e3c2569ca4a78e 15-Sep-2012 Dmitri Gribenko <gribozavr@gmail.com> Use LLVM_DELETED_FUNCTION in place of 'DO NOT IMPLEMENT' comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163983 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
31ba6135375433b617a8587ea6cc836a014ebd86 06-Sep-2012 Roman Divacky <rdivacky@freebsd.org> Dont cast away const needlessly. Found by gcc48 -Wcast-qual.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163325 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
7aaa167abba495ecb0e99eb4f2fa155cf28c798d 01-Sep-2012 Benjamin Kramer <benny.kra@googlemail.com> Remove windows line endings.

While there fix a dead assert.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163031 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
6666ed4ed2e2bc13da5ac5d0a4947019137d45be 31-Aug-2012 Joao Matos <ripzonetriton@gmail.com> Improved MSVC __interface support by adding first class support for it, instead of aliasing to "struct" which had some incorrect behaviour. Patch by David Robins.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163013 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
c23aca44753ff65303fb19d4d6d2114018629f07 03-Aug-2012 Benjamin Kramer <benny.kra@googlemail.com> Flesh out test for defaulted key functions a bit more.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161243 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
f3fce80bb2eafaa556779c84f38104003bddb0ea 03-Aug-2012 Benjamin Kramer <benny.kra@googlemail.com> Fix failed to generate vtables in certain cases.

By C++ standard, the vtable should be generated if the first non-inline
virtual function is defined in the TU. Current version of clang doesn't
generate vtable if the first virtual function is defaulted, because the
key function is regarded as the defaulted function.

Patch by Li Kan!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161236 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
d4f5198ae07d9a4958d8191bac694ded12173ad9 04-Jul-2012 Benjamin Kramer <benny.kra@googlemail.com> Remove get(V)BaseClassOffsetInBits, the CharUnit functions should be used instead.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159719 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
581deb3da481053c4993c7600f97acf7768caac5 06-Jun-2012 David Blaikie <dblaikie@gmail.com> Revert Decl's iterators back to pointer value_type rather than reference value_type

In addition, I've made the pointer and reference typedef 'void' rather than T*
just so they can't get misused. I would've omitted them entirely but
std::distance likes them to be there even if it doesn't use them.

This rolls back r155808 and r155869.

Review by Doug Gregor incorporating feedback from Chandler Carruth.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158104 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
441c6239c6df8c759bacf6510efbfd434b647066 01-May-2012 John McCall <rjmccall@apple.com> Add support for laying out vtordisps according to our current
working knowledge of the Microsoft ABI. Based on a patch by
Dmitry Sokolov.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155905 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
262bc18e32500558af7cb0afa205b34bd37bafed 30-Apr-2012 David Blaikie <dblaikie@gmail.com> Remove the ref/value inconsistency in filter_decl_iterator.

filter_decl_iterator had a weird mismatch where both op* and op-> returned T*
making it difficult to generalize this filtering behavior into a reusable
library of any kind.

This change errs on the side of value, making op-> return T* and op* return
T&.

(reviewed by Richard Smith)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155808 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
cad313bd7b28674e0e409e610c450a2411107443 15-Mar-2012 Sean Callanan <scallanan@apple.com> When laying out an Objective-C object, consult
the external source to complete the Decl if it
hasn't been completed already.

This fixes a crash in LLDB.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152807 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
4e4d08403ca5cfd4d558fa2936215d3a4e5a528d 11-Mar-2012 David Blaikie <dblaikie@gmail.com> Unify naming of LangOptions variable/get function across the Clang stack (Lex to AST).

The member variable is always "LangOpts" and the member function is always "getLangOpts".

Reviewed by Chris Lattner

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152536 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
fd5a5f547c5012197475ba628947d9755c96cfdc 08-Feb-2012 Sean Callanan <scallanan@apple.com> If a struct needs to be laid out, and it has not
been completed yet, then complete it if possible.
This fixes some assertion failures encountered by
LLDB.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150020 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
394f7b650a03d5d4d8f740d6765f257b1c4e2ec0 28-Jan-2012 Douglas Gregor <dgregor@apple.com> Allow the external AST source to provide a layout without specifying
the alignment (because it's not encoded in DWARF). In this case, make
an educated guess at the alignment.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149161 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
453dbcbe30093fbf947a0bec2fbd46e9694eafe9 26-Jan-2012 Douglas Gregor <dgregor@apple.com> Extend the ExternalASTSource interface to allow the AST source to
provide the layout of records, rather than letting Clang compute
the layout itself. LLDB provides the motivation for this feature:
because various layout-altering attributes (packed, aligned, etc.)
don't get reliably get placed into DWARF, the record layouts computed
by LLDB from the reconstructed records differ from the actual layouts,
and badness occurs. This interface lets the DWARF data drive layout,
so we don't need the attributes preserved to get the answer write.

The testing methodology for this change is fun. I've introduced a
variant of -fdump-record-layouts called -fdump-record-layouts-simple
that always has the simple C format and provides size/alignment/field
offsets. There is also a -cc1 option -foverride-record-layout=<file>
to take the output of -fdump-record-layouts-simple and parse it to
produce a set of overridden layouts, which is introduced into the AST
via a testing-only ExternalASTSource (called
LayoutOverrideSource). Each test contains a number of records to lay
out, which use various layout-changing attributes, and then dumps the
layouts. We then run the test again, using the preprocessor to
eliminate the layout-changing attributes entirely (which would give us
different layouts for the records), but supplying the
previously-computed record layouts. Finally, we diff the layouts
produced from the two runs to be sure that they are identical.

Note that this code makes the assumption that we don't *have* to
provide the offsets of bases or virtual bases to get the layout right,
because the alignment attributes don't affect it. I believe this
assumption holds, but if it does not, we can extend
LayoutOverrideSource to also provide base offset information.

Fixes the Clang side of <rdar://problem/10169539>.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149055 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
2d6a5670465cb3f1d811695a9f23e372508240d2 14-Jan-2012 Richard Smith <richard-llvm@metafoo.co.uk> constexpr irgen: Add irgen support for APValue::Struct, APValue::Union,
APValue::Array and APValue::MemberPointer. All APValue values can now be emitted
as constants.

Add new CGCXXABI entry point for emitting an APValue MemberPointer. The other
entrypoints dealing with constant member pointers are no longer necessary and
will be removed in a later change.

Switch codegen from using EvaluateAsRValue/EvaluateAsLValue to
VarDecl::evaluateValue. This performs caching and deals with the nasty cases in
C++11 where a non-const object's initializer can refer indirectly to
previously-initialized fields within the same object.

Building the intermediate APValue object incurs a measurable performance hit on
pathological testcases with huge initializer lists, so we continue to build IR
directly from the Expr nodes for array and record types outside of C++11.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148178 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
83be12c8638a5136b937e602b3a9e25f4bc8e50d 13-Jan-2012 Eli Friedman <eli.friedman@gmail.com> Recommit r148056 with fixes to deal with weirdness with bitfields in unions.

Original message: Make sure adding a field to a struct never reduces its size. PR11745.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148070 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
cd7a21b85ec94f9bddded4ed990dd2e2019011ab 13-Jan-2012 Eli Friedman <eli.friedman@gmail.com> Revert r148056 while I investigate failures.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148068 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
a1796826729ba8c73c32dd49fa4945ff3cb12039 12-Jan-2012 Eli Friedman <eli.friedman@gmail.com> Make sure adding a field to a struct never reduces its size. PR11745.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148056 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
e7aa27a826f0b353713df6bfa0715818db8cde74 20-Dec-2011 Douglas Gregor <dgregor@apple.com> When performing layout for an Objective-C class, make sure to dig out
the definition of that class. Fixes PR11613 / <rdar://problem/10604077>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146976 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
7723fec9b45b7258c0eddf4cbfd0d335348f5edc 15-Dec-2011 Douglas Gregor <dgregor@apple.com> Keep track of all declarations of an Objective-C class (both forward
declarations and definitions) as ObjCInterfaceDecls within the same
redeclaration chain. This new representation matches what we do for
C/C++ variables/functions/classes/templates/etc., and makes it
possible to answer the query "where are all of the declarations of
this class?"



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146679 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
364a59ed8f0b3adb6a9eb9f2d687650ec1d0d8e5 12-Dec-2011 Fariborz Jahanian <fjahanian@apple.com> Fixes a bug in calculation of field offsets of ms_struct
fields by just following what comment says.
// rdar://10513599


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146414 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
bff22ac1f8b78e4c19d5c3e00226ecea3b24e60f 02-Dec-2011 Eli Friedman <eli.friedman@gmail.com> Fix bitfield handling for record layout with #pragma pack. <rdar://problem/10494810> and PR9560.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145673 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
901dd668931a70932ad09092959c42693409a3cd 01-Dec-2011 Eli Friedman <eli.friedman@gmail.com> Fix MSVC class layout for empty classes. Patch by Dmitry Sokolov.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145544 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
9da235244c2de2bcca654b518c66133c30ebde53 08-Nov-2011 John McCall <rjmccall@apple.com> Fix the layout of vb-tables and vf-tables in the MS C++ ABI.
Based on work by Dmitry Sokolov!



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144072 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
e4ebbf79c7045343b9dbe49c721c6023be06f9ee 05-Nov-2011 Benjamin Kramer <benny.kra@googlemail.com> Now that we have a portable 64 bit format string use it to make this simple again.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143800 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
8a5d0aedc16ab1a5beff6bbc1b470f47d2c28b67 05-Nov-2011 Eli Friedman <eli.friedman@gmail.com> Fix incorrect format string in debug output.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143768 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
227e483cb1f77ea6dcd38c2ca9fb490894a5f887 22-Oct-2011 Eli Friedman <eli.friedman@gmail.com> More ASTRecordLayout changes for MS ABI; based on patch by r4start.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142694 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
66f284632dc2e286e3abbd72bc1a44472f9117cc 18-Oct-2011 Eli Friedman <eli.friedman@gmail.com> Revert accidental commit.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142326 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
97c0aefe8c0523417ffe8a500a220286e11e7a46 18-Oct-2011 Eli Friedman <eli.friedman@gmail.com> Rewrite parts of MS ABI C++ layout. Based on work by r4start; I ended up doing this while I was trying to review his patch.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142325 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
b8989f27f116ff2400e92a52c067a69846119eb5 14-Oct-2011 Benjamin Kramer <benny.kra@googlemail.com> Change operator<< for raw_ostream and NamedDecl to take a reference instead of a pointer.

Passing a pointer was a bad idea as it collides with the overload for void*.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141971 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
a6b8b2c09610b8bc4330e948ece8b940c2386406 10-Oct-2011 Richard Smith <richard-llvm@metafoo.co.uk> Constant expression evaluation refactoring:
- Remodel Expr::EvaluateAsInt to behave like the other EvaluateAs* functions,
and add Expr::EvaluateKnownConstInt to capture the current fold-or-assert
behaviour.
- Factor out evaluation of bitfield bit widths.
- Fix a few places which would evaluate an expression twice: once to determine
whether it is a constant expression, then again to get the value.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141561 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
5e1cdac63c3d9c9b32fa41fa0b2d242a58a20d49 07-Oct-2011 John McCall <rjmccall@apple.com> Rename TagDecl::isDefinition -> isCompleteDefinition
for better self-documenting code, since the semantics
are subtly different from getDefinition().



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141355 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
6595935602f57b4f2115785bb39dabc83e4232dc 07-Oct-2011 John McCall <rjmccall@apple.com> Record layout requires not just a definition, but a complete
definition. Assert this. Change IR generation to not try to
aggressively emit the IR translation of a record during its
own definition. Fixes PR10912.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141350 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
88934e85f81abdc4fb5202325252be3bcab5ebf0 05-Oct-2011 Daniel Dunbar <daniel@zuster.org> Driver & AST: Implement support for -fpack-struct and -fpack-struct= command
line options.
- <rdar://problem/10120602>, PR9631

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141211 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
68395a7a9c5ec4400c4d76f16ee20d9b4c9326d8 05-Oct-2011 Eric Christopher <echristo@apple.com> Fix doxygen comment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141165 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
2fe363622c32c471e8a68c68ba5cc372644f24fb 27-Sep-2011 Eli Friedman <eli.friedman@gmail.com> Some changes to improve compatibility for MSVC-style C++ struct layout. Patch from r4start at gmail.com (with some minor modifications by me).



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140623 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
ae5860e1787230dd8b8948a08632c9be777d8522 06-Sep-2011 Ted Kremenek <kremenek@apple.com> Don't emit -Wpadded warnings without a valid SourceLocation. This can happen when RecordLayoutBuilder is used by Codegen, not Sema.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139162 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
bcfd1f55bfbb3e5944cd5e03d07b343e280838c4 02-Sep-2011 Douglas Gregor <dgregor@apple.com> Extend the ASTContext constructor to delay the initialization of
builtin types (When requested). This is another step toward making
ASTUnit build the ASTContext as needed when loading an AST file,
rather than doing so after the fact. No actual functionality change (yet).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138985 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
b8fca90263760e579d2e463f02c846faa54d03a0 06-Aug-2011 Chad Rosier <mcrosier@apple.com> Add support for using anonymous bitfields (e.g., int : 0) to enforce alignment.
This fixes cases where the anonymous bitfield is followed by a bitfield member.
E.g.,
struct t4
{
char foo;
long : 0;
char bar : 1;
};

rdar://9859156



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136991 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
dd7fddb5b6883326e52b278a9b7e9cefea29aae0 05-Aug-2011 Chad Rosier <mcrosier@apple.com> More whitespace and naming fixup. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136944 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
0e7bf40027f75c0c62fb002af7eab0882de6d332 04-Aug-2011 Chad Rosier <mcrosier@apple.com> Fix style and remove obviously redundant code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136907 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
6e43f3f0e2fa7a4b50d2497de94a40437cd26003 04-Aug-2011 Chad Rosier <mcrosier@apple.com> Additional comments and whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136892 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
61a62216a0bb33fb668ab653d9f9a704e43d2fc6 04-Aug-2011 Chad Rosier <mcrosier@apple.com> Add partial support for using anonymous bitfields (e.g., int : 0) to enforce
alignment. This fixes cases where the anonymous bitfield is followed by a
non-bitfield member. E.g.,

struct t4
{
int foo : 1;
long : 0;
char bar;
};

Part of rdar://9859156

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136858 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
5f9e272e632e951b1efe824cd16acb4d96077930 23-Jul-2011 Chris Lattner <sabre@nondot.org> remove unneeded llvm:: namespace qualifiers on some core types now that LLVM.h imports
them into the clang namespace.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135852 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
db8264e4c5ffd7af6fbad4ca4306bd382bb02691 22-Jul-2011 Jordy Rose <jediknil@belkadan.com> Add a const overload for ObjCInterfaceDecl::all_declared_ivar_begin.
This was previously not-const only because it has to lazily construct a chain
of ivars the first time it is called (and after the chain is invalidated).
In practice, all the clients were just const_casting their const Decls;
all those now-unnecessary const_casts have been removed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135741 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
bf9eb88792e022e54a658657bf22e1925948e384 28-Jun-2011 Fariborz Jahanian <fjahanian@apple.com> Eliminate most uses of ShallowCollectObjCIvars which requires
a vector for collection. Use iterators where needed instead.
// rdar://6817577


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134015 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
cb5d2d0647fdab2e36c85b417e03bf18916ce10c 10-Jun-2011 Eli Friedman <eli.friedman@gmail.com> PR10120: Make CodeGenModule::getVTableLinkage use NamedDecl::getLinkage to determine whether the vtable should be externally visible, instead of a rough approximation of it which messes up with templates.

While I'm here, zap the other user of isInAnonymousNamespace outside of Decl.cpp.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132861 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
6ec50ad4b12cbb6ca12036080808f912d5ee2515 11-May-2011 Fariborz Jahanian <fjahanian@apple.com> Implenment #pack pragma and ms_struct attribute layout.
Concludes // radar://8823265.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131188 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
ed63e03e35f2c8ad1a06d7bbc2249d132a730175 10-May-2011 Fariborz Jahanian <fjahanian@apple.com> Support pack pragma and ms_struct attributes. // rdar://8823265



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131142 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
30364d0a6450315989f6613910b09f865044a2a0 10-May-2011 Fariborz Jahanian <fjahanian@apple.com> 'long long' requires special treatment in ms_struct
structs (impacts 32-bit only though).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131103 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
31e7f225fa3c603b84d66bc8ebdf7ed084e36e62 07-May-2011 Fariborz Jahanian <fjahanian@apple.com> In ms_struct structs, Establish a new alignment for a
non-bitfield following a bitfield if size of their types differ.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131032 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
52bbe7a1133c3cb57e9246f1b96c12940ea3821a 06-May-2011 Fariborz Jahanian <fjahanian@apple.com> Establish a new alignment for an ms_struct bitfield following
a non-bitfield if size of their types differ.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131023 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
9b3acaa32548d0ce78b9c39a3911397f6738a47c 04-May-2011 Fariborz Jahanian <fjahanian@apple.com> More ms_struct bitfield stuff:
Adjacent bit fields are packed into the same 1-, 2-, or
4-byte allocation unit if the integral types are the same
size. // rdar://8823265.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130851 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
cc0f9f1a3b5df7fd308ff3d800fbbbbff805157d 04-May-2011 Fariborz Jahanian <fjahanian@apple.com> Only the first zero-length bitfield decides alignment of
the followup data member in an ms_struct struct.
// rdar:// 8823265



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130795 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
855a8e79f42e670b405b31efd3963f4d89732aff 03-May-2011 Fariborz Jahanian <fjahanian@apple.com> Finish off rules for z-length bitfields in ms_struct
structs. // rdar://8823265


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130783 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
340fa242130c2d8d74c83edca0952e771aebe0e6 02-May-2011 Fariborz Jahanian <fjahanian@apple.com> More rule enforcement of zero bitfields for ms_struct.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130696 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
14d56ef43ff4921c6749f7340212fbb743fdbb9b 27-Apr-2011 Fariborz Jahanian <fjahanian@apple.com> Some refactoring of my ms_struct patch.
// rdar://8823265 related.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130311 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
62055b0618fafb4747e783ba3fedd7bc7d57d27d 27-Apr-2011 Fariborz Jahanian <fjahanian@apple.com> With ms_struct attribut, Zero-length bitfields following
non-bitfield members are ignore. // rdar://8823265 wip


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130257 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
43d8bcfc3601aec7dd3e7ccc7b6ddd3ff6189c62 22-Mar-2011 Ted Kremenek <kremenek@apple.com> Simplify crash recovery cleanup registration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128057 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
4d96d9f0e758fb9244749f99d4b0a3ab1e3e0592 19-Mar-2011 Ted Kremenek <kremenek@apple.com> Recover memory from RecordLayoutBuilders during crashes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127931 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
d5e3ed085032def4ac875d64cb029fc3926652ed 10-Mar-2011 Ken Dyck <kd@kendyck.com> Instead of round up sizes to '8', round them up to the alignment of the char
type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127391 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
90ce2dba294b8443169fe1a583914908fae0e767 10-Mar-2011 Ken Dyck <kd@kendyck.com> Round up the non-virtual size to the next char instead of rounding down.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127390 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
3b3e1a1e8b44842ac3f07999c0f1eb82f13ffae4 01-Mar-2011 Ken Dyck <kd@kendyck.com> Use CharUnits for TypeAlign variable in LayoutWideBitField(). No change in
functionality intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126730 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
5dc989c4f630acc3c0028b2d1229511063671a29 01-Mar-2011 Ken Dyck <kd@kendyck.com> Change the return type of GetVirtualPointersSize() to CharUnits. No change
in functionality intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126727 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
f079b735d876f75e67b8dcc6980d0b742903ce0d 28-Feb-2011 Ken Dyck <kd@kendyck.com> Retry r126357. Use CharUnits for the Size and DataSize calculations when
they are known to be exact multiples of the width of the char type. Add a
test case to CodeGen/union.c that would have caught the problem with the
previous attempt. No change in functionality intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126628 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
6b46cd9c8508e1a67c66cbb83a9077bb787a3ce2 24-Feb-2011 Daniel Dunbar <daniel@zuster.org> Revert "Use CharUnits values for Size and DataSize outside of the bitfield
layout", it broke some GCC tests.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126386 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
8102fae66df9834662d1c51ee5b91f908c419bdf 24-Feb-2011 Ken Dyck <kd@kendyck.com> Use CharUnits values for Size and DataSize outside of the bitfield layout
methods, when they are known to be exact multiples of the width of the char
type.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126357 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
9911344114cc493e089964f7602b619e5a47c7bc 24-Feb-2011 Ken Dyck <kd@kendyck.com> Use Context.getCharWidth() in place of literal '8's in assertions.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126356 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
a0c21c4ec00ea083bf036edb08bb016085b53409 24-Feb-2011 Ken Dyck <kd@kendyck.com> Make the Size and DataSize members more CharUnits-friendly by wrapping them
with getter and setter methods in both bit units and CharUnits. This will help
simplify some of the unit mismatch in the parts of the code where sizes are
known to be exact multiples of the width of the char type.

Assertions in the getters help guard against accidentally converting to
CharUnits when sizes are not exact multiples of the char width.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126354 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
9ed9a250180f19b2c44df83a196fc3a2ac82f817 20-Feb-2011 Ken Dyck <kd@kendyck.com> Expand use of CharUnits in LayoutField(). No change in functionality
intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126066 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
3263e09c8e0925edaa541d0d4bb995b4bfb454e7 19-Feb-2011 Ken Dyck <kd@kendyck.com> Expand use of CharUnits for alignments further. No change in functionality
intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126034 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
834945c19cfb87fc21dfb6980a0980618655d79d 17-Feb-2011 Ken Dyck <kd@kendyck.com> Convert MaxFieldAlignment to CharUnits from bits. No change in functionality
intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125704 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
6feb4bb3defce7e5efc05a69c6bd7dfc9c59fa45 16-Feb-2011 Ken Dyck <kd@kendyck.com> Convert the UnpackedAlignment field to CharUnits from bits. No change in
functionality intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125643 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
ea7f6c2c53127b875ed432fd1793d48270d8ba6b 16-Feb-2011 Ken Dyck <kd@kendyck.com> Convert Alignment member to CharUnits from bits. No change in functionality
intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125641 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
a1fdb0bc09aa0d17841cdbdd8c52cd1368251cbf 16-Feb-2011 Ken Dyck <kd@kendyck.com> Convert NonVirtualSize to CharUnits from bits. No change in functionality
intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125639 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
df205382dae666b011d857402114e4f4acd56c81 16-Feb-2011 Ken Dyck <kd@kendyck.com> Convert NonVirtualAlignment to CharUnits. No change in functionality
intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125638 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
dac54c124e302d6f028ea5723c425b7f66fc7c71 15-Feb-2011 Ken Dyck <kd@kendyck.com> Convert RecordLayout::Alignment to CharUnits from bit units. No change in
functionality intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125549 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
ec2990351335f163601b98e39b52425e2e9f931e 11-Feb-2011 Ken Dyck <kd@kendyck.com> Convert RecordLayout::DataSize to CharUnits from bits, eliminating two
unnecessary calls to RoundUpToAlignment. No changes to functionality
intended.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125356 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
dd76a9ab9ea675671200f94b18ce95766841952b 11-Feb-2011 Ken Dyck <kd@kendyck.com> Add a helper function, ASTContext::toBits(), that converts sizes in
CharUnits to sizes in bits, and use it to tidy up the places where the
conversion was done explicitly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125332 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
5f022d82696c84e4d127c558871d68ac6273274e 09-Feb-2011 Ken Dyck <kd@kendyck.com> Convert RecordLayout::Size to CharUnits from bits. No changes to
functionality intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125156 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
68cf1a5a01ba43ed56a8624632fd65e0804430ac 08-Feb-2011 Ken Dyck <kd@kendyck.com> Convert RecordLayout::NonVirtualAlign to CharUnits. No change in
functionality intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125069 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
adf082e829eb71871b6043009888df3b79055dba 02-Feb-2011 Fariborz Jahanian <fjahanian@apple.com> For gcc compatibility, size of a class which is zero
but has non-empty data fields, such as array of zero length,
remains zero.
// rdar://8945175


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124741 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
6f75550e40a9177db9979fc130ce3ece026b137d 01-Feb-2011 Douglas Gregor <dgregor@apple.com> Basic support for -mms-bitfields, from Carl Norum!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124661 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
5c3633fa57f27b0909ab5767715c4e66b8920165 01-Feb-2011 Ken Dyck <kd@kendyck.com> Convert RecordLayout::NonVirtualSize from bit units to CharUnits.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124646 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
ff3a5174d1f6e7dc98de348aecfdfe1d2fb7cd53 24-Jan-2011 Ken Dyck <kd@kendyck.com> Remove private toCharUnits() helper method, replacing with calls to
ASTContext::toCharUnitsFromBits().


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124092 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
fb1e3bc29b667f4275e1d5a43d64ec173f4f9a7d 18-Jan-2011 Ken Dyck <ken.dyck@onsemi.com> Replace calls to CharUnits::fromQuantity() with ones
ASTContext::toCharUnitsFromBits() when converting from bit sizes to char units.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123715 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
4ba2a17694148e16eaa8d3917f657ffcd3667be4 12-Jan-2011 Jay Foad <jay.foad@gmail.com> PR3558: mark "logically const" accessor methods in ASTContext as const,
and mark the fields they use as mutable. This allows us to remove a few
const_casts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123314 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
272324bc881450a71873d2f4e72f17837d8998df 30-Dec-2010 Rafael Espindola <rafael.espindola@gmail.com> Fix PR8796.

The problem was that we were asserting the we never added an empty class
to the same offset twice. This is not true for unions, where two members, empty
or not, can have the some offset.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122633 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
5a821198203bdd469175408c4c4c805cc3240159 09-Dec-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix another unnecessary-struct-padding issue.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121352 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
43ddd9f2027bdd9c36336a342e9c0dd2aa13f836 09-Dec-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Before determining the effect the alignment of base struct will have in the aligment of the sub-struct,
take into account if the sub-struct is packed and its maximum field alignment.

Fixes rdar://8745206

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121335 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
dae0cb52e4e3d46bbfc9a4510909522197a92e54 25-Nov-2010 Anders Carlsson <andersca@mac.com> Move isNearlyEmpty out into the ASTContext so it can be called from CodeGen as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120137 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
c9e814ba193f38a7b08268612248f63beb279bb3 25-Nov-2010 Anders Carlsson <andersca@mac.com> Rename RecordLayout::getPrimaryBaseWasVirtual to isPrimaryBaseVirtual.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120133 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
245656ec65ec600ef1ab05f4c8d9f780542d689d 24-Nov-2010 Anders Carlsson <andersca@mac.com> Use the newly added function in ASTRecordLayoutBuilder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120131 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
33e4e70c8c0a17e0ccb7465d96556b077a68ecb1 18-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Refactoring of Diagnostic class.

-Move the stuff of Diagnostic related to creating/querying diagnostic IDs into a new DiagnosticIDs class.
-DiagnosticIDs can be shared among multiple Diagnostics for multiple translation units.
-The rest of the state in Diagnostic object is considered related and tied to one translation unit.
-Have Diagnostic point to the SourceManager that is related with. Diagnostic can now accept just a
SourceLocation instead of a FullSourceLoc.
-Reflect the changes to various interfaces.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119730 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
fa84fbad4863e030b149febc88288514efca34b2 01-Nov-2010 Anders Carlsson <andersca@mac.com> Don't update empty field subobjects for bitfields. Fixes PR8519.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117921 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
6a3567442307864eac52bb84ce41465753513635 01-Nov-2010 Anders Carlsson <andersca@mac.com> Get rid of more calls to getBaseClassOffsetInBits.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117883 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
3069a0d28637ad0ad583d9fdd7bc6bc6aa677fb5 01-Nov-2010 Anders Carlsson <andersca@mac.com> Port over a couple of getVBaseClassOffsetInBits call sites to use getVBaseClassOffset instead.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117882 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
a14f5979572aa25c03d24750ee4724d2031d4ede 01-Nov-2010 Anders Carlsson <andersca@mac.com> Rename getBaseClassOffset to getBaseClassOffsetInBits and introduce a getBaseClassOffset which returns the offset in CharUnits. Do the same thing for getVBaseClassOffset.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117881 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
a2311513524ecef954d2b438bfbe09aa9511b660 31-Oct-2010 Anders Carlsson <andersca@mac.com> Start converting over the RecordLayoutBuilder next.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117878 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
a3d4380d6662a373bc78f915947e5bc06e985e91 31-Oct-2010 Anders Carlsson <andersca@mac.com> EmptyObjectMap now uses CharUnits wherever possible.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117877 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
8c6acc6be0fbd4127d16c1c0e12a9362462e6e0c 31-Oct-2010 Anders Carlsson <andersca@mac.com> More CharUnits conversion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117875 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
fe5ef73149514e513a231a1df1a5938f3ad1545a 31-Oct-2010 Anders Carlsson <andersca@mac.com> More CharUnits conversion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117874 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
d8da76365f40a0c12c7d802a0da2aaacf4b2cf99 31-Oct-2010 Anders Carlsson <andersca@mac.com> Use CharUnits in the EmptyClassOffsets map.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117873 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
376bda924ac92462a22d6a22ea65d8c1bb8f26f3 31-Oct-2010 Anders Carlsson <andersca@mac.com> Baby steps towards using only CharUnits for base class offsets in ASTRecordLayout. Start by storing the offsets in CharUnits in the ASTRecordLayout object.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117869 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
cb9c07418b699bd2b8384d31ff4392df7d76eb7c 22-Oct-2010 Benjamin Kramer <benny.kra@googlemail.com> Move classes into anonymous namespaces.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117104 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
36d2fd44bfeec417bbd7465218353abb8bf7e95d 14-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Store in PCH the key function of C++ class to avoid deserializing the complete declaration context in order to compute it.
Progress for rdar://7260160.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116508 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
3bd5b6c3c2ad1d5a6f88cf21f627e8d4f03c4df4 13-Oct-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Embrace C++ ABI 5.2.6 and consider that template instantiations don't have key functions (same as GCC).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116391 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
78a916ec5ff5b66adec3c499e1b9af7b87668309 22-Sep-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Implement -Wpadded and -Wpacked.

-Wpadded warns when undesired padding is introduced in a struct. (rdar://7469556)
-Wpacked warns if a struct is given the packed attribute, but the packed attribute has no effect
on the layout or the size of the struct. Such structs may be mis-aligned for little benefit.

The warnings are emitted at the point where layout is calculated, that is at RecordLayoutBuilder.
To avoid calculating the layouts of all structs regardless of whether they are needed or not,
I let the layouts be lazily constructed when needed. This has the disadvantage that the above warnings
will be emitted only when they are used for IR gen, and not e.g with -fsyntax-only:

$ cat t.c
struct S {
char c;
int i;
};
void f(struct S* s) {}

$ clang -fsyntax-only -Wpadded t.c
$ clang -c -Wpadded t.c -o t.o
t.c:3:7: warning: padding struct 'struct S' with 3 bytes to align 'i' [-Wpadded]
int i;
^
1 warning generated.

This is a good tradeoff between providing the warnings and not calculating layouts for all
structs in case the user has enabled a couple of rarely used warnings.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114544 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
cfe17e5c82762cc854012e472b66f4278f0a4a2a 25-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Use a smart pointer instead of delete.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112005 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
6d09a194bb296948ef05f6bff4435752450389fe 23-Aug-2010 Chandler Carruth <chandlerc@gmail.com> Add a virtual destructor to the base of another class hierarchy with virtual
methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111804 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
20cf717034ba1f20fc47c025ecb72ed9b631ad13 19-Aug-2010 Charles Davis <cdavis@mines.edu> Add some enum goodness as requested by Chris. Now instead of storing the
active C++ ABI as a raw string, we store it as an enum. This should improve
performance somewhat.

And yes, this time, I started from a clean build directory, and
all the tests passed. :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111507 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
b61b7d24f3f8fee5ef7c92187d2a9bb3df5a5192 19-Aug-2010 John McCall <rjmccall@apple.com> Restore the build



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111498 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
c9f8aece7e111f90265dfad9a81f3f517be948de 19-Aug-2010 Charles Davis <cdavis@mines.edu> Add a special RecordLayoutBuilder for the Microsoft C++ ABI.

All it does right now is add space for two vtable pointers instead of one
when a class has both virtual methods and virtual bases. This is a requirement
of the Microsoft ABI, since it has separate vtables for methods and bases. Other
stuff will come up over time, but we'll cross those bridges when we get to
them.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111493 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
cf807c4dfdb23e8fa3f400e0b24ef5b79db7a530 19-Aug-2010 Sean Hunt <scshunt@csclub.uwaterloo.ca> Generate Attr subclasses with TableGen.

Now all classes derived from Attr are generated from TableGen.
Additionally, Attr* is no longer its own linked list; SmallVectors or
Attr* are used. The accompanying LLVM commit contains the updates to
TableGen necessary for this.

Some other notes about newly-generated attribute classes:

- The constructor arguments are a SourceLocation and a Context&,
followed by the attributes arguments in the order that they were
defined in Attr.td

- Every argument in Attr.td has an appropriate accessor named getFoo,
and there are sometimes a few extra ones (such as to get the length
of a variadic argument).

Additionally, specific_attr_iterator has been introduced, which will
iterate over an AttrVec, but only over attributes of a certain type. It
can be accessed through either Decl::specific_attr_begin/end or
the global functions of the same name.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111455 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
4087f27e5416c799bcb6be072f905be752acb61c 18-Aug-2010 Daniel Dunbar <daniel@zuster.org> StringRef'ication of lots stuff, patch by Peter Davies!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111314 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
c83d2d7d8914a0fe00d679a262f2bdae7689f16d 15-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Remove ATTRIBUTE_UNUSED from the common pattern of disallowing copying.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111101 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
ed635e4bff56ffc50d9ad2929eee9d7ffc516c2d 15-Aug-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Add ATTRIBUTE_UNUSED to methods not supposed to be used.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111087 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
84b0316f720bd089d87acb21ec0002b2da33e6c9 29-Jun-2010 Daniel Dunbar <daniel@zuster.org> Sema: Fix a subtle i64 -> i32 truncation which broke layout of large structures
with bit-fields.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107185 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
fe8ec01bba74f6841576a2ee93d2c62cdfa4eff2 29-Jun-2010 Jeffrey Yasskin <jyasskin@google.com> Delete assert in ComputeKeyFunction. The function runs fine without it, since
there's an explicit guard on isPolymorphic, and virtual bases don't affect the
key function calculation. This allows people to call
ASTContext::getKeyFunction on arbitrary classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107143 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
e3362bc104f401564a68ef2e0e5fd89f440cf4fc 13-Jun-2010 Anders Carlsson <andersca@mac.com> Do the same short-circuit optimization when laying out bases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105920 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
5ccfdd8d215c7bf324a14523c71ed328325c2bc8 13-Jun-2010 Anders Carlsson <andersca@mac.com> Implement part of the EmptySubobjectMap optimization described in PR6998. We still need to do this for bases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105919 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
45f5b54d67215639ae6585d12df5133e99180c2b 08-Jun-2010 Anders Carlsson <andersca@mac.com> Correctly handle fields with virtual bases containing empty subobjects.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105628 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
2177ab7be5256e691a115356fcb8f3eef9c9733f 08-Jun-2010 Anders Carlsson <andersca@mac.com> When checking whether we can place a base subobject at an offset, we don't need to go past the highest offset that's known to contain an empty base subobject.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105611 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
c8cb462e57ac13518a170fe52b77bb8656234b35 08-Jun-2010 Anders Carlsson <andersca@mac.com> Minor cleanups to the empty subobject map.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105608 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
c15503d77bb109ab33f1a865cc318de18a3a1adf 30-May-2010 Anders Carlsson <andersca@mac.com> And now for the best part: Removing the old code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105162 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
83a45e7dab892e9efd3515eca4eb5b81bc3f2126 30-May-2010 Anders Carlsson <andersca@mac.com> Turn on the new empty base subobject tracking code. It's a bit faster than the previous code. However, it still has quadratic performance, something which I intend to fix shortly in a subsequent patch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105161 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
4137d517700a1b0f834535545c3f1676f40abcfb 29-May-2010 Anders Carlsson <andersca@mac.com> Cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105114 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
5b1319c78061e76d70cca50fb3343b25928e001b 29-May-2010 Anders Carlsson <andersca@mac.com> Make EmptySubobjectMap::CanPlaceBaseAtOffset take a BaseSubobjectInfo as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105113 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
b1d880b15f6b254349bd7a700e6b4f2ec1c24f5b 29-May-2010 Anders Carlsson <andersca@mac.com> Change RecordLayoutBuilder::LayoutBase to take a BaseSubobjectInfo. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105112 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
3cd09ccbb1a750a7b40593a7b0a2d95ee2a0ba0e 29-May-2010 Anders Carlsson <andersca@mac.com> Rework the way virtual primary bases are added when laying out classes. Instead of doing it as a separate step, we now use the BaseSubobjectInfo and use it when laying out the bases. This fixes a bug where we would either not add a primary virtual base at all, or add it at the wrong offset.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105110 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
276b491b44b473d91610432aa335927b2c7ad152 29-May-2010 Anders Carlsson <andersca@mac.com> Change LayoutVirtualBase to also take a BaseSubobjectInfo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105104 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
07cebc57123db6a50c7c293e44a9647ce069952b 29-May-2010 Anders Carlsson <andersca@mac.com> Change RecordLayoutBuilder::LayoutNonVirtualBase to take a BaseSubobjectInfo. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105103 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
6e26454ecceb20938b866717dc8a72c6d37d224d 29-May-2010 Anders Carlsson <andersca@mac.com> Move computing the base subobject info for a class into the RecordLayoutBuilder because we're going to need it to be able to correctly add offsets for primary virtual bases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105102 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
ea2f41c584b9741a591e11c83819b31856f5bc18 28-May-2010 Anders Carlsson <andersca@mac.com> Rename BaseInfo to BaseSubobjectInfo.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105007 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
4a25799760982b3363f3c4eb6df953d70e35e37d 28-May-2010 Anders Carlsson <andersca@mac.com> Move BaseInfo outside of the EmptySubobject class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105002 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
812a3456b63708a5972f712e9e4b54d3cc436378 27-May-2010 Anders Carlsson <andersca@mac.com> More work on the empty subobject map. This code is not yet used.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104861 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
c6082fe347a414a2e19f2ad8fe41720f10733296 27-May-2010 Daniel Dunbar <daniel@zuster.org> Sema: Add initial support for '#pragma options align=mac68k'.
- Docs are fairly sketchy, if someone wants to pore through gcc to look for
holes I'd appreciate any failing test cases!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104809 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
58b16b6e46716e24f1cdaa0a5e1253415c4e30b3 27-May-2010 Anders Carlsson <andersca@mac.com> More work on the new empty subobject map.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104808 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
0aa7edbc1f579787c4f69144fd1b04e777d89391 27-May-2010 Daniel Dunbar <daniel@zuster.org> Strip trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104801 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
8a2c92cab213bd7e28ff669577e815cd70bafbe3 27-May-2010 Daniel Dunbar <daniel@zuster.org> AST: Rename PragmaPackAttr to MaxFieldAlignmentAttr, which is more accurate.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104795 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
261febd091cd05325ae202b7d388a2d266bbf126 27-May-2010 Anders Carlsson <andersca@mac.com> More work on the empty subobjects map.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104787 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
0c54fc91322faaa78422c3aaec261a26e45d7f8c 26-May-2010 Anders Carlsson <andersca@mac.com> Move ComputeEmptySubobjectSizes to EmptySubobjectMap.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104702 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
6a91c0328c81fe1be4e5380fb0e586cafee53b26 26-May-2010 Anders Carlsson <andersca@mac.com> Stub out the EmptySubobjectsMap class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104701 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
0efac254e385f06e34158aaa351942c80149042f 26-May-2010 Anders Carlsson <andersca@mac.com> Inline the RecordLayoutBuilder constructor.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104700 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
c6cab68ae1f8ebdcabaf51391dba09bfbad02e4f 26-May-2010 Anders Carlsson <andersca@mac.com> Add a Layout overload that takes a CXXRecordDecl.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104695 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
7e220286410422ed1dc0409a9cb9708fe50e3df0 26-May-2010 Benjamin Kramer <benny.kra@googlemail.com> Move RecordLayoutBuilder into an anonymous namespace.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104693 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
7d0918acd134ab93b7d3eb6add93dfde37b1f7b3 26-May-2010 Anders Carlsson <andersca@mac.com> Rename ASTRecordLayoutBuilder to RecordLayoutBuilder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104688 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
9392fa63e45716e32061d05673fa28909f325b02 26-May-2010 Anders Carlsson <andersca@mac.com> Move the ASTRecordLayoutBuilder class declaration into the .cpp file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104686 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
aa230b7bd2054e70e9500aff584845cb1cc34ca7 26-May-2010 Anders Carlsson <andersca@mac.com> Fix thinko and remove another unused function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104683 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
4831710518be9f506f0bc2d11bec6205061fc119 26-May-2010 Anders Carlsson <andersca@mac.com> Fix build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104682 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
28fdd0a8b450c1329b3303e5cf8e8a788a0ef85a 26-May-2010 Anders Carlsson <andersca@mac.com> No need to use the PrimaryBaseInfo struct in the builder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104681 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
400b06dde52df439b25264fbbc0271d96d27903c 26-May-2010 Anders Carlsson <andersca@mac.com> Remove FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104674 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
2f64e377d1aa733b81a4c5e78e32a62c41426626 26-May-2010 Anders Carlsson <andersca@mac.com> Fold the other Layout overload into its sole call site.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104673 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
36cdc61b98460c06ee07710f77b911675fdce6a7 26-May-2010 Anders Carlsson <andersca@mac.com> Fold the ASTRecordLayoutBuilder::ComputeLayout overload that takes an ObjCInterfaceDecl pointer into its only callsite.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104672 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
1e641ce1c169b4b0cac3d7ad6da44b323453049c 26-May-2010 Anders Carlsson <andersca@mac.com> Move the relevant ASTContext member functions that deal with ASTRecordLayoutBuilder into RecordLayoutBuilder.cpp. This matches the way we interact with other builder classes (CGRecordLayoutBuilder, VTableBuilder and VTTBuilder) and it also allows for making ASTRecordLayoutBuilder a private class without a header file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104671 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
bfcdc40cbc213d91d91513ba8e1fbde65734ddf4 23-May-2010 Anders Carlsson <andersca@mac.com> When recording empty subobjects we should always look at the primary virtual base.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104464 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
ecafebe28f379bf45eaca4bf8469e2586eba9902 10-May-2010 Anders Carlsson <andersca@mac.com> Add an UpdateVBases parameter to UpdateEmptyClassOffsets. Not used just yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103403 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
3159ffeb233021bb38d7c75f214998de741d5663 10-May-2010 Anders Carlsson <andersca@mac.com> More work on handling empty classes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103402 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
ddae877b5d1657398f6a8f528dbd3f20dc19607f 09-May-2010 Anders Carlsson <andersca@mac.com> Cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103370 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
836fc14e6cdad2362fc31f11bf7b14832cba34b9 09-May-2010 Anders Carlsson <andersca@mac.com> Actually compute the empty subobject sizes. No functionality change yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103363 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
c3fddeb4384de2238ec03c77be6bee606725609e 09-May-2010 Anders Carlsson <andersca@mac.com> Add a SizeOfLargestEmptySubobject member to ASTRecordLayout. For C++ classes this will hold the largest empty subobject or 0 if the class doesn't have any empty subobjects.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103359 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
8d8ab749f6f8bb63ea2cd2b589c0f050b67fc5cc 19-Apr-2010 Daniel Dunbar <daniel@zuster.org> AST: Dump ASTRecordLayout objects when they are created with -fdump-record-layouts.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101815 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
cb421fa690da545b58a720abe5f1c49b166dbde7 19-Apr-2010 Dan Gohman <gohman@apple.com> Fix -Wcast-qual warnings.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101786 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
de9f153b2348f590151504888c22cb937134cd27 17-Apr-2010 Anders Carlsson <andersca@mac.com> If a wide bit-field is inside a union its offset should always be 0.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101668 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
900fc6388e803868a34b9483510c345e9b49d7eb 17-Apr-2010 Benjamin Kramer <benny.kra@googlemail.com> Add raw_ostream operators to NamedDecl for convenience. Switch over all users of getNameAsString on a stream.

The next step is to print the name directly into the stream, avoiding a temporary std::string copy.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101632 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
4b16e97ff7761cfc61a42b15dfce5d868335196f 16-Apr-2010 Anders Carlsson <andersca@mac.com> Remove printfs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101470 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
4cf6f5fdc529f0b4412505e2e6af099370a479b3 16-Apr-2010 Anders Carlsson <andersca@mac.com> More work on wide bit-fields, WIP.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101467 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
0f0e9b0ace2a970d31ac31811f07e0b1d93501d6 16-Apr-2010 Anders Carlsson <andersca@mac.com> Rename the ASTContext member 'Context'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101462 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
97913576dbe624971bf18726899983d211d742c0 15-Apr-2010 Anders Carlsson <andersca@mac.com> Split adding the primary virtual base offsets out into a separate pass. This fixes a bug where we would lay out virtual bases in the wrong order.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101373 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
b6830d616a068971f13e1e213e06a945c8c93cea 15-Apr-2010 Daniel Dunbar <daniel@zuster.org> Tweak spelling (Bitfield -> BitField)

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101369 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
b6a169395c1b30c76daffebcbd2164b6247a5d21 15-Apr-2010 Daniel Dunbar <daniel@zuster.org> Add TargetInfo::useBitfieldTypeAlignment().
- Used to determine whether the alignment of the type in a bit-field is
respected when laying out structures. The default is true, targets can
override this as needed.

- This is designed to correspond to the PCC_BITFIELD_TYPE_MATTERS macro in
gcc. The AST/Sema implementation only affects one line, unless I have
forgotten something. I'd appreciate further review.

- IRgen still needs to be updated to fully support this (which is effectively
PR5591).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101356 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
4895a8ca41352b9ce572cd64ffa93208898e7546 13-Apr-2010 Daniel Dunbar <daniel@zuster.org> Remove unnecessary cast.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101176 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
573021fc10d0668a9d59888bdfc259e3a304b405 10-Apr-2010 Anders Carlsson <andersca@mac.com> Fix another vbase layout bug.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100952 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
a1e87162d36f94d3dc58ff3f0743d6026635a0c6 10-Apr-2010 Anders Carlsson <andersca@mac.com> Add a simple debug-only verification pass to the record layout builder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100951 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
bdda6c1788dfdb890e1eccd13b949b1cc875eeaa 10-Apr-2010 Anders Carlsson <andersca@mac.com> Simplify the virtual base layout code and fix a bug where we wouldn't store the offset for a virtual base.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100940 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
bf9e48cbaaa23d990dbedf9489513500bd0b9751 08-Apr-2010 Daniel Dunbar <daniel@zuster.org> AST: Move C++ record layout dumping to ASTContext::DumpRecordLayout.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100746 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
37147ea14f39a8522e32e3ba4d043a2a33fff90c 11-Mar-2010 Anders Carlsson <andersca@mac.com> More record layout builder cleanup and simplification.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98238 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
88f4296e85d49e4ea63cda729cd5f696824c67ce 11-Mar-2010 Anders Carlsson <andersca@mac.com> Get rid of the PrimaryBase parameter from LayoutVirtualBases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98233 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
622e2477d0698d734671523389277e10d8566e26 11-Mar-2010 Anders Carlsson <andersca@mac.com> More cleanup towards fixing the real bug.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98232 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
147b5ddc6c8618a9d70a83f90de409e444ae705b 11-Mar-2010 Anders Carlsson <andersca@mac.com> Replace the class offset vectors in RecordLayoutBuilder with maps instead so we'll have faster lookup and so we can detect duplicates.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98231 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
584e1dfaf6ab682cebe4fe51f55f0ae3215d303f 11-Mar-2010 Anders Carlsson <andersca@mac.com> More cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98230 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
23a5fcba194c3dec737f296860d75327d85cc349 11-Mar-2010 Anders Carlsson <andersca@mac.com> More record layout builder cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98229 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
9dc82d2193971ed57dc657dbd21249a2c57da376 11-Mar-2010 Anders Carlsson <andersca@mac.com> Remove the IndirectPrimary parameter in LayoutVirtualBases; it's already there as a member variable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98211 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
200c5c2d9488165626925235ff918e3d744d785a 11-Mar-2010 Anders Carlsson <andersca@mac.com> More cleanup and simplification of the record layout builder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98208 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
e3bdbee47059839d5e24acab5ee7b925285f573e 10-Mar-2010 Anders Carlsson <andersca@mac.com> Get rid of the LayoutBaseNonVirtually; it was used to lay out a base either as a non-virtual base or a virtual base.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98198 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
e239b9d5da3bdc722d29c276b261c136ca9f4eaa 10-Mar-2010 Anders Carlsson <andersca@mac.com> More shuffling.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98197 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
4c3a7b04a682ee2dbb73fd78441b07869cc3024d 10-Mar-2010 Anders Carlsson <andersca@mac.com> Cleanups, no functionality change yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98196 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
503524acc73f2f8280080ca0d200377406001b65 08-Mar-2010 Ted Kremenek <kremenek@apple.com> Allocate ASTRecordLayout objects using the allocator associated with ASTContext.
This allows them to be allocated using a BumpPtrAllocated
in the common case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97978 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
11062e11236b7bc689dad150e8b490fd6b063ec3 19-Feb-2010 Fariborz Jahanian <fjahanian@apple.com> Patch removes IVars list from ObjCInterfaceDecl and
instead relies on their DeclContext for iteration, etc.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96638 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
94ba380b820cde3fb9d97d5f07ac709ebbb6ac1e 15-Feb-2010 Zhongxing Xu <xuzhongxing@gmail.com> Simplify code. If we can reach here, the base must be virtual.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96211 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
6ebee078ec83dbeb61abd95967ec385a15f6af91 22-Jan-2010 Mike Stump <mrs@apple.com> Be sure to select primary bases among the nearly empties in preorder,
not just among the direct bases. Before we where missing nearly
empties that were bases of virtual base classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94208 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
bd6d6197fcfc98356ea60e816365eb0648b69556 05-Jan-2010 Douglas Gregor <dgregor@apple.com> Improve key-function computation for templates. In particular:
- All classes can have a key function; templates don't change that.
non-template classes when computing the key function.
- We always mark all of the virtual member functions of class
template instantiations.
- The vtable for an instantiation of a class template has weak
linkage.

We could probably use available_externally linkage for vtables of
classes instantiated by explicit instantiation declarations (extern
templates), but GCC doesn't do this and I'm not 100% that the ABI
permits it.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92753 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
61eab8872168af6eb1e0047a82901096cf145e27 08-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Misc key function fixes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90831 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
863dbcb45eb7b1e663f2d62be0fbdda6d9aa13ef 07-Dec-2009 Anders Carlsson <andersca@mac.com> Instantiated or specialized class templates never have a key function. This (and the previous check-in) fixes PR5557.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90753 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
f53df2398e07d13be9962b95aebc19b31706fa33 07-Dec-2009 Anders Carlsson <andersca@mac.com> Move key functions to a separate map.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90745 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
d7d7f67c1dd8626520bb243d3928f59d32424534 06-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Move helper onto CXXMethodDecl.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90716 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
378fe06b93752669d8a7dd8fa7000094b9679267 05-Dec-2009 Eli Friedman <eli.friedman@gmail.com> Tweak "key function" rules so that they work for templates with virtual
inline functions.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90645 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
5ec02ae147760c32ad5b6fb0fec30ab3b3696778 02-Dec-2009 Anders Carlsson <andersca@mac.com> In Sema, whenever we think that a function is going to cause a vtable to be generated, we mark any virtual implicit member functions as referenced.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90327 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
1a5e0d7f18485e4fb958f96dcddff3e4486a4069 01-Dec-2009 Anders Carlsson <andersca@mac.com> Have ASTRecordLayout keep track of the key function, in preparation of fixing a synthetic ctor/dtor bug.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90168 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
261fba6cf57a09a1f1d0c4a4c4856aaa62753242 27-Nov-2009 Anders Carlsson <andersca@mac.com> Use a PointerIntPair for the PrimaryBaseInfo. Yay for clever LLVM data structures!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90020 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
ce2009ab2f59894dbcc847e25e05abe78c296e95 27-Nov-2009 Anders Carlsson <andersca@mac.com> Add a new PrimaryBaseInfo struct that combines the record decl of a primary base with whether it's virtual or not.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90018 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
e4fc0d97420e13d13c9664a3c27c17aa7c1e47b9 22-Nov-2009 Anders Carlsson <andersca@mac.com> When laying out bitfields, make sure that the data size is always aligned to a byte. This fixes PR5580.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89611 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
42dbcc4d8f0c483693befc76f37ca6dc4e0844e1 22-Nov-2009 Anders Carlsson <andersca@mac.com> Move bit-field layout out into a separate function. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89604 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
bbd37c62e34db3f5a95c899723484a76c71d7757 21-Nov-2009 Sean Hunt <rideau3@gmail.com> Added rudimentary C++0x attribute support.
The following attributes are currently supported in C++0x attribute
lists (and in GNU ones as well):
- align() - semantics believed to be conformant to n3000, except for
redeclarations and what entities it may apply to
- final - semantics believed to be conformant to CWG issue 817's proposed
wording, except for redeclarations
- noreturn - semantics believed to be conformant to n3000, except for
redeclarations
- carries_dependency - currently ignored (this is an optimization hint)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89543 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
37acf5a57f87abdbb4ac6115c5f3f09295ec2dc3 11-Nov-2009 Mike Stump <mrs@apple.com> Fixup spacing.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86792 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
968db3364611a475909b5e76969d2f5472e65597 05-Nov-2009 Mike Stump <mrs@apple.com> Refine layout for indirect virtual base classes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86116 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
9994a34f6cf842721ba7723edc0b9036229fe387 25-Oct-2009 Sebastian Redl <sebastian.redl@getdesigned.at> Audit the code for places where it is assumed that every base specifier refers to a RecordType. Add assertions or conditions as appropriate. This fixes another crash in the Apache stdlib vector.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85055 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
ff2460883bd4b0760c4ca36c7f024e34c78b9e12 26-Sep-2009 Anders Carlsson <andersca@mac.com> Address comment from Daniel.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82865 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
a223935e5cf82e939e1ca1da4111d63025a04e39 26-Sep-2009 Anders Carlsson <andersca@mac.com> Rename NextOffset to DataSize.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82832 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
dfde681bddd525fd8dcebc98865ff74682d8b833 26-Sep-2009 Anders Carlsson <andersca@mac.com> Start at NextOffset when laying out bases as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82831 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
7e41038723bf77132674f55b12f60e24e5473b33 26-Sep-2009 Anders Carlsson <andersca@mac.com> Use NextOffset when laying out a field.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82828 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
1eca99b815e531eba63233c0558af0dc971387aa 25-Sep-2009 Anders Carlsson <andersca@mac.com> Even more work on empty classes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82770 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
a4c6081abd5582515b110bdcb576b4b85536467b 25-Sep-2009 Anders Carlsson <andersca@mac.com> Who would have thought that empty classes were so tricky? Handle cases where an empty virtual base class needs to be moved aside because it conflicts with the first field.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82746 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
fbbce49c116aa8c8c7c0707cb6048b55f70461a9 25-Sep-2009 Anders Carlsson <andersca@mac.com> Handle array fields that contain empty structs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82744 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
6026504302763f74102592602b392cecd5ced3ae 25-Sep-2009 Anders Carlsson <andersca@mac.com> More work on empty classes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82736 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
ffbdefc7a24c01a0f77425423278774796a3aa53 24-Sep-2009 Anders Carlsson <andersca@mac.com> More improvements with laying out empty bases.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82682 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
1345bd2b093e78620c32f5148b1279ed290188e8 24-Sep-2009 Anders Carlsson <andersca@mac.com> More work on empty classes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82679 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
9606149722bedfc48fc56cafc58de1139aef481d 24-Sep-2009 Anders Carlsson <andersca@mac.com> Scaffolding for supporting empty bases/fields.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82678 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
56cfdc183e6012201c7e0a45b04fe74fd1ab51e4 22-Sep-2009 Anders Carlsson <andersca@mac.com> If we already set a primary base, don't set it to the first nearly empty base class.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82563 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
0cd40e4f909b4172254c83ae7291576204a588b8 22-Sep-2009 Anders Carlsson <andersca@mac.com> Explicitly initialize the PrimaryBase and PrimaryBaseWasVirtual members.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82560 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
a48f552c74fadd9b0c1c5d11478ef144f480fc4f 22-Sep-2009 Mike Stump <mrs@apple.com> Yes.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82559 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
3f066522342538509cf0aa4f381503b43fbdb68b 22-Sep-2009 Anders Carlsson <andersca@mac.com> Store the set of indirect primary bases directly in the record layout builder.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82513 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
e4feb834fb1a6b03291ed78fd32d13729b5a3c4a 22-Sep-2009 Anders Carlsson <andersca@mac.com> Record layout builder cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82502 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
b237fd6f36145c023ed12fe83f21727cbe197158 17-Sep-2009 Anders Carlsson <andersca@mac.com> Temporary band-aid for handling empty classes somewhat better.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82124 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
1eb4433ac451dc16f4133a88af2d002ac26c58ef 09-Sep-2009 Mike Stump <mrs@apple.com> Remove tabs, and whitespace cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81346 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
fe3010d09cec5cd06e31a3d57fe188a04d9bfa17 16-Aug-2009 Mike Stump <mrs@apple.com> Refine vbase offset calculations. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79198 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
276b9f1d814f4f6551cc3000590759a34185d6da 16-Aug-2009 Mike Stump <mrs@apple.com> Cleanups and fixups for calculating the virtual base offsets. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79156 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
215389180617e4edb8aa95a5526509948ed1416f 14-Aug-2009 Mike Stump <mrs@apple.com> Deconflate virtual base offsets from non-virtual base offsets.
Deconflate a virtual base primary from a non-virtual base.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78971 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
0880e75541899bc1cdd73c50eb549110b5916c59 14-Aug-2009 Mike Stump <mrs@apple.com> We can't avoid doing the work to find all the indirect primary virtual
base classes as we'll need that to layout the virtual bases...


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78954 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
4ef980984fd0e131fca3f9e6ba15e8a79cabf88c 14-Aug-2009 Mike Stump <mrs@apple.com> Refine vtable layout for virtual bases and keep better track of
primaries. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78950 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
d53cef178ddf90386d343dccfe28c531b93cfe8f 13-Aug-2009 Mike Stump <mrs@apple.com> Prep for vbase layout refinements. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78882 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
94d0bceeb3afd82293326261c793b45023fd3cab 13-Aug-2009 Mike Stump <mrs@apple.com> Refine virtual base layout. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78873 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
0a5cfd86dec28c0a3bc28742da8a19d5f63581be 13-Aug-2009 Mike Stump <mrs@apple.com> Remove another done audit FIXME.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78847 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
02b16238a39d9b83674c3a531b6aaaf066ac95f2 13-Aug-2009 Mike Stump <mrs@apple.com> Refactor a bit and remove some FIXME audit markers, now that the code
has been audited for correctness.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78846 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
d76264e0b20470267249660ab947197cf6d6e31f 12-Aug-2009 Mike Stump <mrs@apple.com> Refine primary vbase selection ordering. WIP.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78844 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
49520944c688a9d5fc78d0c2af544b825873477b 11-Aug-2009 Mike Stump <mrs@apple.com> Implement more of the inductive case for vtable layout involving
virtual base primaries and improve the layout of classes with virtual
bases. WIP.

Hey, I've decided I want a change to FileCheck, I need to ensure that
the group is together, nothing in between. Can we change it to check
the match line is from the line immediately following the last matched
line, if the source for the matched line is immediately after the
source for the previously matched line?

// CHECK: 1
// CHECK: 2
// CHECK: 3

// CHECK: 4
// CHECK: 5
// CHECK: 6

would require 1 2 and 3 to be continuous in the output, and 4 5 and 6
to be continuous.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78638 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
a5dd722bdf2f74a1a249fe6661d96a7236aee0f0 08-Aug-2009 Anders Carlsson <andersca@mac.com> Take #pragma pack into account when laying out structs. Fixes rdar://problem/7095436.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78490 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
a860e755f1f9f071b6a6a2f96128a6a258f5c331 08-Aug-2009 Anders Carlsson <andersca@mac.com> Introduce a new PragmaPack attribute, and use it for #pragma pack. The PackedAttr now only represents __attribute__((packed)).

This is necessary because #pragma pack and __attribute__((packed)) have different semantics. No functionality change yet, but this lays the groundwork for fixing a record layout bug.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78483 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
928f1506eb38bb26a1284b876213a8f5244f6933 07-Aug-2009 Mike Stump <mrs@apple.com> Add ability to generate vcall offsets for primary virtual base.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78396 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
eb19fa948173502f47c26357c2ec41aa4be197b4 06-Aug-2009 Mike Stump <mrs@apple.com> Layout virtual bases. Work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78308 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
a71d5713ea5e14eaf07ef978cef1c3ad492311f6 06-Aug-2009 Mike Stump <mrs@apple.com> Fix spell-o.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78303 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
2effeca6b4461c56c9b2d38778cd718be006f90e 06-Aug-2009 Mike Stump <mrs@apple.com> Fixup object layout when we have a primary base (it goes first). Start preping for
virtual base layout.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78265 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
6f376336138ea719e3c4757ae046a5768043b276 06-Aug-2009 Mike Stump <mrs@apple.com> Calculate the primary base class better and use that when laying down
the vtable. Still a work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78252 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
f121677b6bbbf4e4a51ee7a1120b77adf187bad4 31-Jul-2009 Mike Stump <mrs@apple.com> Add code to setup the vtable pointer in the constructor. Work in progress.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77699 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
b49ef009e431c92d73287367122b0aaa1aa60175 30-Jul-2009 Mike Stump <mrs@apple.com> Update based upon comments. Explain why we have an assert.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77612 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
90f67083882915c2c6227839f3c2afcd64c5af3d 30-Jul-2009 Mike Stump <mrs@apple.com> We'll also need a vtable pointer if we have virtual bases.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77610 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
3dee6efcad9ad56d14f7edd1c29924f0b876a7f9 30-Jul-2009 Mike Stump <mrs@apple.com> Add ability to layout the vtable pointer in trivial cases. I noticed
that we would silently do bad things with virtual bases in the layout
code, so, we just turn them off. When people do better things with
them, we can turn them back on.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77556 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
6217b80b7a1379b74cced1c076338262c3c980b3 29-Jul-2009 Ted Kremenek <kremenek@apple.com> Change uses of:
Type::getAsReferenceType() -> Type::getAs<ReferenceType>()
Type::getAsRecordType() -> Type::getAs<RecordType>()
Type::getAsPointerType() -> Type::getAs<PointerType>()
Type::getAsBlockPointerType() -> Type::getAs<BlockPointerType>()
Type::getAsLValueReferenceType() -> Type::getAs<LValueReferenceType>()
Type::getAsRValueReferenceType() -> Type::getAs<RValueReferenceType>()
Type::getAsMemberPointerType() -> Type::getAs<MemberPointerType>()
Type::getAsReferenceType() -> Type::getAs<ReferenceType>()
Type::getAsTagType() -> Type::getAs<TagType>()

And remove Type::getAsReferenceType(), etc.

This change is similar to one I made a couple weeks ago, but that was partly
reverted pending some additional design discussion. With Doug's pending smart
pointer changes for Types, it seemed natural to take this approach.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77510 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
8a8a629844d26c24dc0147d55a32a937b14b9381 29-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> No longer need to keep base class offsets in the offset
table as it has its own place now.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77491 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
b2fafd4978166114c54748a73738d8b2c3a37e2b 28-Jul-2009 Anders Carlsson <andersca@mac.com> Add a field for C++ specific data to ASTRecordLayout. Use it to store the non-virtual size and alignment + base offsets.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77352 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
742cd1b7bb86b52b23b335d47abbd842dac0e1bf 25-Jul-2009 Fariborz Jahanian <fjahanian@apple.com> ir-gen for non-virtual base class initialization
in constructors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77087 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
74cbe226207fd101623638dadfa7fbada04ff2a6 19-Jul-2009 Anders Carlsson <andersca@mac.com> Handle layout of non-virtual base classes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76348 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
a2df41c107d3c5f5bff2d090fab77734e0da735d 18-Jul-2009 Anders Carlsson <andersca@mac.com> Refactor field layout into a separate function.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76343 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
243a68551ac9ec71bf341e062418e33eb4f286ff 18-Jul-2009 Anders Carlsson <andersca@mac.com> Rename NextOffset to DataSize, which better matches the Itanium C++ ABI

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76339 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
93fab9d67ca62e3e291803e5a1309473d6e00344 18-Jul-2009 Anders Carlsson <andersca@mac.com> More layout builder work.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76333 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp
bda4c1015e27ac82d31afb4519dd53586e61a51a 18-Jul-2009 Anders Carlsson <andersca@mac.com> Add a new ASTRecordLayoutBuilder class. Not used yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76330 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/lib/AST/RecordLayoutBuilder.cpp