summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX/vtable-pointer-initialization.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Revert "[CodeGenCXX] Treat 'this' as noalias in constructors"Sean Fertile2018-10-151-6/+6
| | | | | | | This reverts commit https://reviews.llvm.org/rL344150 which causes MachineOutliner related failures on the ppc64le multistage buildbot. llvm-svn: 344526
* [CodeGenCXX] Treat 'this' as noalias in constructorsAnton Bikineev2018-10-101-6/+6
| | | | | | | | | This is currently a clang extension and a resolution of the defect report in the C++ Standard. Differential Revision: https://reviews.llvm.org/D46441 llvm-svn: 344150
* 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 llvm-svn: 289585
* CodeGen: New vtable group representation: struct of vtable arrays.Peter Collingbourne2016-12-131-4/+4
| | | | | | | | | 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 llvm-svn: 289584
* 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 llvm-svn: 263469
* Test case updates for explicit type parameter to the gep operatorDavid Blaikie2015-03-131-4/+4
| | | | llvm-svn: 232187
* Emit DeferredDeclsToEmit in a DFS order.Rafael Espindola2015-01-221-6/+6
| | | | | | | | | | | | | | 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. llvm-svn: 226751
* Don't assume variable name.Rafael Espindola2015-01-211-1/+1
| | | | | | Should fix the test in -Asserts builds. llvm-svn: 226668
* Make the test a bit stricter. NFC.Rafael Espindola2015-01-211-0/+3
| | | | llvm-svn: 226666
* Cast vtable address points to i32 (...)** to enable more globaloptReid Kleckner2014-12-031-4/+4
| | | | | | | | | | | | We currently use i32 (...)** as the type of the vptr field in the LLVM struct type. LLVM's GlobalOpt prefers any bitcasts to be on the side of the data being stored rather than on the pointer being stored to. Reviewers: majnemer Differential Revision: http://reviews.llvm.org/D5916 llvm-svn: 223267
* CHECK-LABEL-ify some code gen tests to improve diagnostic experience when ↵Stephen Lin2013-08-151-5/+5
| | | | | | tests fail. llvm-svn: 188447
* clang side to match the LLVM IR type system rewrite patch.Chris Lattner2011-07-091-3/+3
| | | | llvm-svn: 134831
* Move unnamed_addr after the function arguments on Sabre's request.Rafael Espindola2011-01-251-5/+5
| | | | llvm-svn: 124210
* Add unnamed_addr to constructors and destructors.Rafael Espindola2011-01-111-5/+5
| | | | llvm-svn: 123197
* Back out r101911 and see if it makes the bots happy.Anders Carlsson2010-04-201-20/+0
| | | | llvm-svn: 101921
* Fix a bug which triggered the assertion I added yesterday. Basically, when ↵Anders Carlsson2010-04-201-0/+20
| | | | | | we initialize the vtable pointer for a virtual base, and there was another path from the most derived class to another base with the same class type, we would use the wrong base. llvm-svn: 101911
* More vtable improvements. We now compute and keep track of all vtable ↵Anders Carlsson2010-03-241-4/+4
| | | | | | related information which avoids computing the same vtable layout over and over. llvm-svn: 99403
* More vtable work; preparations for moving over to the new vtable layout code ↵Anders Carlsson2010-03-241-4/+4
| | | | | | (finally). llvm-svn: 99381
* Perform two more constructor/destructor code-size optimizations:John McCall2010-02-231-4/+7
| | | | | | | | | | | | | | | | 1) emit base destructors as aliases to their unique base class destructors under some careful conditions. This is enabled for the same targets that can support complete-to-base aliases, i.e. not darwin. 2) Emit non-variadic complete constructors for classes with no virtual bases as calls to the base constructor. This is enabled on all targets and in theory can trigger in situations that the alias optimization can't (mostly involving virtual bases, mostly not yet supported). These are bundled together because I didn't think it worthwhile to split them, not because they really need to be. llvm-svn: 96842
* Re-introduce the ctor/dtor alias optimization, this time hidden behind aJohn McCall2010-02-191-2/+2
| | | | | | command-line option which defaults off. llvm-svn: 96649
* Revert the ctor/dtor alias optimization for now; the buildbots can detectJohn McCall2010-02-181-2/+2
| | | | | | some failure here that I can't. llvm-svn: 96612
* Emit complete constructors and destructors as aliases to base constructorsJohn McCall2010-02-171-2/+2
| | | | | | | | and destructors when the two entities are semantically identical, i.e. when the class has no virtual base classes. We only do this for linkage types for which aliases are supported, i.e. internal and external, i.e. not linkonce. llvm-svn: 96451
* Make sure to set vtable pointers in the destructors as well.Anders Carlsson2010-02-071-0/+54
llvm-svn: 95525
OpenPOWER on IntegriCloud