summaryrefslogtreecommitdiffstats
path: root/test/CodeGenCXX/vtt-layout.cpp
Commit message (Collapse)AuthorAgeFilesLines
* CodeGen: Start using inrange annotations on vtable getelementptr.Peter Collingbourne2016-12-131-4/+4
| | | | | | | | | | | | This annotation allows the optimizer to split vtable groups, as permitted by a change to the Itanium ABI [1] that prevents compilers from adjusting virtual table pointers between virtual tables. [1] https://github.com/MentorEmbedded/cxx-abi/pull/7 Differential Revision: https://reviews.llvm.org/D24431 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@289585 91177308-0d34-0410-b5e6-96231b3b80d8
* CodeGen: New vtable group representation: struct of vtable arrays.Peter Collingbourne2016-12-131-6/+7
| | | | | | | | | In a future change, this representation will allow us to use the new inrange annotation on getelementptr to allow the optimizer to split vtable groups. Differential Revision: https://reviews.llvm.org/D22296 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@289584 91177308-0d34-0410-b5e6-96231b3b80d8
* CodeGen: Use 32-bit gep offsets to address vtable address points.Peter Collingbourne2016-03-141-4/+4
| | | | | | | | | | | | | | | | | The relative vtable ABI will use a struct rather than an array as the type of a vtable. LLVM only allows 32-bit integers as struct indices, so we need to use 32-bit integers to get addresses of address points. In order to keep the code simple, we might as well do that unconditionally. It's probably a reasonable implementation limit to support no more than 2 billion virtual functions per class. This change causes quite a bit of churn in the test suite, so I'm making it separately. Differential Revision: http://reviews.llvm.org/D18113 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@263469 91177308-0d34-0410-b5e6-96231b3b80d8
* CodeGen: Mark functions used in vtables as unnamed_addr.Peter Collingbourne2016-03-141-0/+2
| | | | | | | | | | | This marks virtual function declarations, as well as runtime library functions __cxa_pure_virtual, __cxa_deleted_virtual and _purecall, as unnamed_addr. This will allow us to correctly form relative references to them from vtables in the relative vtable ABI. Differential Revision: http://reviews.llvm.org/D18071 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@263464 91177308-0d34-0410-b5e6-96231b3b80d8
* Test case updates for explicit type parameter to the gep operatorDavid Blaikie2015-03-131-4/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@232187 91177308-0d34-0410-b5e6-96231b3b80d8
* Emit DeferredDeclsToEmit in a DFS order.Rafael Espindola2015-01-221-2/+2
| | | | | | | | | | | | | | Currently we emit DeferredDeclsToEmit in reverse order. This patch changes that. The advantages of the change are that * The output order is a bit closer to the source order. The change to test/CodeGenCXX/pod-member-memcpys.cpp is a good example. * If we decide to deffer more, it will not cause as large changes in the estcases as it would without this patch. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@226751 91177308-0d34-0410-b5e6-96231b3b80d8
* PR13684: Emit vtable entries for deleted functions as __cxa_deleted_function.David Blaikie2012-10-161-1/+12
| | | | | | | | This is consistent/interoperable with GCC 4.7 (& __cxa_deleted_function isn't present in 4.4 - not sure when it got added, but you'll need something with that function available for this to work). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166069 91177308-0d34-0410-b5e6-96231b3b80d8
* Test pure virtual vtable entries in the Itanium ABI.David Blaikie2012-10-161-0/+11
| | | | | | (original functionality committed in r99807, refactored in r160373) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166059 91177308-0d34-0410-b5e6-96231b3b80d8
* Mark VTables and RTTI data linkonce_odr instead of weak_odr, with the ↵Anders Carlsson2011-01-241-3/+3
| | | | | | | | | | exception of explicit template instantiations, which have to be weak_odr. This fixes PR6996. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124089 91177308-0d34-0410-b5e6-96231b3b80d8
* Set unnamed_addr in VTTs.Rafael Espindola2011-01-111-4/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123280 91177308-0d34-0410-b5e6-96231b3b80d8
* stop looking for #uses comments.Chris Lattner2010-09-021-3/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112898 91177308-0d34-0410-b5e6-96231b3b80d8
* More VTT builder fixes. With these fixes we now correctly handle the very ↵Anders Carlsson2010-01-181-4/+42
| | | | | | complex VTT example from the Itanium ABI spec. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93725 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix a bunch of VTT layout bugs, add simple tests for VTT layout.Anders Carlsson2010-01-181-0/+26
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93709 91177308-0d34-0410-b5e6-96231b3b80d8