summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX/vtable-layout-abi-examples.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Complete Rewrite of CGRecordLayoutBuilderWarren Hunt2014-02-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | CGRecordLayoutBuilder was aging, complex, multi-pass, and shows signs of existing before ASTRecordLayoutBuilder. It redundantly performed many layout operations that are now performed by ASTRecordLayoutBuilder and asserted that the results were the same. With the addition of support for the MS-ABI, such as placement of vbptrs, vtordisps, different bitfield layout and a variety of other features, CGRecordLayoutBuilder was growing unwieldy in its redundancy. This patch re-architects CGRecordLayoutBuilder to not perform any redundant layout but rather, as directly as possible, lower an ASTRecordLayout to an llvm::type. The new architecture is significantly smaller and simpler than the CGRecordLayoutBuilder and contains fewer ABI-specific code paths. It's also one pass. The architecture of the new system is described in the comments. For the most part, the new system simply takes all of the fields and bases from an ASTRecordLayout, sorts them, inserts padding and dumps a record. Bitfields, unions and primary virtual bases make this process a bit more complicated. See the inline comments. In addition, this patch updates a few lit tests due to the fact that the new system computes more accurate llvm types than CGRecordLayoutBuilder. Each change is commented individually in the review. Differential Revision: http://llvm-reviews.chandlerc.com/D2795 llvm-svn: 201907
* Move vtable dumper call to VTableBuilder ctorPeter Collingbourne2011-09-261-212/+223
| | | | llvm-svn: 140508
* Don't add address points for virtual primary bases that aren't primary bases ↵Anders Carlsson2010-03-251-1/+0
| | | | | | in the complete class. llvm-svn: 99555
* Improve vcall offset handling in construction vtables. With this we layout ↵Anders Carlsson2010-03-101-0/+123
| | | | | | the construction vtables from the ABI examples correctly. llvm-svn: 98127
* Figured out why the test was failing, this will hopefully fix it.Anders Carlsson2010-02-271-1/+0
| | | | llvm-svn: 97336
* XFAIL this for now. I have no idea why this test is failing on some ↵Anders Carlsson2010-02-271-0/+1
| | | | | | machines. Looks like some sort of whitespace issue in FileCheck. llvm-svn: 97332
* Generate correct vcall offsets when we have a primary virtual base that is ↵Anders Carlsson2010-02-241-0/+32
| | | | | | not a primary base in the complete class hierarchy. llvm-svn: 97039
* Add another test from the ABI spec.Anders Carlsson2010-02-191-0/+49
| | | | llvm-svn: 96659
* Fix another bug and add another class.Anders Carlsson2010-02-181-0/+34
| | | | llvm-svn: 96590
* Add another class from cxx-vtable-ex.htmlAnders Carlsson2010-02-181-1/+25
| | | | llvm-svn: 96588
* More work on vcall offsets.Anders Carlsson2010-02-181-0/+25
| | | | llvm-svn: 96587
* Add tests from the Itanium C++ ABI spec.Anders Carlsson2010-02-181-0/+25
llvm-svn: 96586
OpenPOWER on IntegriCloud