summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/RecordLayout.cpp
Commit message (Collapse)AuthorAgeFilesLines
* CXXInfo memory should be released after calling the destructorYaron Keren2014-05-241-1/+1
| | | | | | | instead of before. The wrong order had no effect since Deallocate() does nothing right now, but we may replace allocator in the future. llvm-svn: 209567
* [C++11] Use 'nullptr'. AST edition.Craig Topper2014-05-121-3/+3
| | | | llvm-svn: 208517
* [ms-abi] Refactor Microsoft Record LayoutWarren Hunt2014-01-091-2/+2
| | | | | | | | | This patch refactors microsoft record layout to be more "natural". The most dominant change is that vbptrs and vfptrs are injected after the fact. This simplifies the implementation and the math for the offest for the first base/field after the vbptr. llvm-svn: 198818
* [MS-ABI] Fix alias-avoidance padding between basesWarren Hunt2013-12-061-0/+4
| | | | | | | | | | | Adds padding between bases or virtual bases in an attempt to avoid aliasing of zero-sized sub-objects. The approach used by the ABI adds two more bits of state. Detailed comments are in the code. Test cases included. Differential Revision: http://llvm-reviews.chandlerc.com/D2258 llvm-svn: 196602
* Support MS-ABI's concept of "Required Alignment" imposed by Warren Hunt2013-12-061-5/+8
| | | | | | | | | | | | | | | | | | __declspec(align()) This patch implements required alignment in a way that makes __declspec(align()) and #pragma pack play correctly together. In the MS-ABI, __declspec(align()) is a hard rule and cannot be overridden by #pragma pack. This cases each record to have two interesting alignments "preferred alignment" (which matches Itanium's concept of alignment) and "required alignment" which is an alignment that must never be violated, even in the case of #pragma pack. This patch introduces the concept of Required Alignment to the record builder and tracks/uses it appropriately. Test cases are included. Differential Revision: http://llvm-reviews.chandlerc.com/D2283 llvm-svn: 196549
* No functional change. Renaming a variable in RecordLayoutBuilder and Warren Hunt2013-11-131-2/+2
| | | | | | | | improving comments to make documentation more accurate. Differential Revision:http://llvm-reviews.chandlerc.com/D2172 llvm-svn: 194609
* Thread the info about vbptr sharing through ASTRecordLayoutTimur Iskhodzhanov2013-11-081-2/+2
| | | | | | Reviewed at http://llvm-reviews.chandlerc.com/D2120 llvm-svn: 194256
* Adds Microsoft compatiable C++ record layout code to clang.Warren Hunt2013-10-111-1/+8
| | | | llvm-svn: 192494
* First pass at abstracting out a class for the target C++ ABI.John McCall2013-01-251-4/+3
| | | | llvm-svn: 173514
* Remove get(V)BaseClassOffsetInBits, the CharUnit functions should be used ↵Benjamin Kramer2012-07-041-1/+1
| | | | | | | | instead. No functionality change. llvm-svn: 159719
* Add support for laying out vtordisps according to our currentJohn McCall2012-05-011-5/+5
| | | | | | | working knowledge of the Microsoft ABI. Based on a patch by Dmitry Sokolov. llvm-svn: 155905
* More ASTRecordLayout changes for MS ABI; based on patch by r4start.Eli Friedman2011-10-211-1/+3
| | | | llvm-svn: 142694
* Some changes to improve compatibility for MSVC-style C++ struct layout. ↵Eli Friedman2011-09-271-3/+9
| | | | | | Patch from r4start at gmail.com (with some minor modifications by me). llvm-svn: 140623
* Convert RecordLayout::Alignment to CharUnits from bit units. No change inKen Dyck2011-02-151-2/+2
| | | | | | functionality intended. llvm-svn: 125549
* Convert RecordLayout::DataSize to CharUnits from bits, eliminating twoKen Dyck2011-02-111-2/+2
| | | | | | | unnecessary calls to RoundUpToAlignment. No changes to functionality intended. llvm-svn: 125356
* Convert RecordLayout::Size to CharUnits from bits. No changes toKen Dyck2011-02-091-2/+2
| | | | | | functionality intended. llvm-svn: 125156
* Convert RecordLayout::NonVirtualAlign to CharUnits. No change inKen Dyck2011-02-081-1/+1
| | | | | | functionality intended. llvm-svn: 125069
* Convert RecordLayout::NonVirtualSize from bit units to CharUnits.Ken Dyck2011-02-011-1/+1
| | | | llvm-svn: 124646
* PR3558: mark "logically const" accessor methods in ASTContext as const,Jay Foad2011-01-121-4/+5
| | | | | | | and mark the fields they use as mutable. This allows us to remove a few const_casts. llvm-svn: 123314
* Remove the PrimaryBaseInfo class.Anders Carlsson2010-11-241-2/+3
| | | | llvm-svn: 120134
* Rename RecordLayout::getPrimaryBaseWasVirtual to isPrimaryBaseVirtual.Anders Carlsson2010-11-241-1/+1
| | | | llvm-svn: 120133
* Port over a couple of getVBaseClassOffsetInBits call sites to use ↵Anders Carlsson2010-10-311-1/+1
| | | | | | getVBaseClassOffset instead. llvm-svn: 117882
* Rename getBaseClassOffset to getBaseClassOffsetInBits and introduce a ↵Anders Carlsson2010-10-311-2/+2
| | | | | | getBaseClassOffset which returns the offset in CharUnits. Do the same thing for getVBaseClassOffset. llvm-svn: 117881
* EmptyObjectMap now uses CharUnits wherever possible.Anders Carlsson2010-10-311-1/+1
| | | | llvm-svn: 117877
* Plug leak. The DenseMaps of CXXRecordLayoutInfo weren't freed.Argyrios Kyrtzidis2010-08-251-1/+3
| | | | llvm-svn: 112006
* No need to use the PrimaryBaseInfo struct in the builder.Anders Carlsson2010-05-261-2/+3
| | | | llvm-svn: 104681
* Add a SizeOfLargestEmptySubobject member to ASTRecordLayout. For C++ classes ↵Anders Carlsson2010-05-081-0/+2
| | | | | | this will hold the largest empty subobject or 0 if the class doesn't have any empty subobjects. llvm-svn: 103359
* Replace the class offset vectors in RecordLayoutBuilder with maps instead so ↵Anders Carlsson2010-03-111-15/+11
| | | | | | we'll have faster lookup and so we can detect duplicates. llvm-svn: 98231
* Assert that primary bases always have offset 0.Anders Carlsson2010-03-111-0/+11
| | | | llvm-svn: 98223
* Replace copy loops with memcpy.Benjamin Kramer2010-03-091-4/+2
| | | | llvm-svn: 98055
* Allocate ASTRecordLayout objects using the allocator associated with ASTContext.Ted Kremenek2010-03-081-0/+69
This allows them to be allocated using a BumpPtrAllocated in the common case. llvm-svn: 97978
OpenPOWER on IntegriCloud