Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Complete Rewrite of CGRecordLayoutBuilder | Warren Hunt | 2014-02-21 | 1 | -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 ctor | Peter Collingbourne | 2011-09-26 | 1 | -212/+223 |
| | | | | llvm-svn: 140508 | ||||
* | Don't add address points for virtual primary bases that aren't primary bases ↵ | Anders Carlsson | 2010-03-25 | 1 | -1/+0 |
| | | | | | | in the complete class. llvm-svn: 99555 | ||||
* | Improve vcall offset handling in construction vtables. With this we layout ↵ | Anders Carlsson | 2010-03-10 | 1 | -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 Carlsson | 2010-02-27 | 1 | -1/+0 |
| | | | | llvm-svn: 97336 | ||||
* | XFAIL this for now. I have no idea why this test is failing on some ↵ | Anders Carlsson | 2010-02-27 | 1 | -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 Carlsson | 2010-02-24 | 1 | -0/+32 |
| | | | | | | not a primary base in the complete class hierarchy. llvm-svn: 97039 | ||||
* | Add another test from the ABI spec. | Anders Carlsson | 2010-02-19 | 1 | -0/+49 |
| | | | | llvm-svn: 96659 | ||||
* | Fix another bug and add another class. | Anders Carlsson | 2010-02-18 | 1 | -0/+34 |
| | | | | llvm-svn: 96590 | ||||
* | Add another class from cxx-vtable-ex.html | Anders Carlsson | 2010-02-18 | 1 | -1/+25 |
| | | | | llvm-svn: 96588 | ||||
* | More work on vcall offsets. | Anders Carlsson | 2010-02-18 | 1 | -0/+25 |
| | | | | llvm-svn: 96587 | ||||
* | Add tests from the Itanium C++ ABI spec. | Anders Carlsson | 2010-02-18 | 1 | -0/+25 |
llvm-svn: 96586 |