aboutsummaryrefslogtreecommitdiff
path: root/clang/test/CodeGenCXX/skip-vtable-pointer-initialization.cpp
AgeCommit message (Collapse)AuthorFilesLines
2016-12-13CodeGen: Start using inrange annotations on vtable getelementptr.Peter Collingbourne1-7/+7
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
2016-12-13CodeGen: New vtable group representation: struct of vtable arrays.Peter Collingbourne1-8/+8
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
2016-03-14CodeGen: Use 32-bit gep offsets to address vtable address points.Peter Collingbourne1-7/+7
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
2015-03-13Test case updates for explicit type parameter to the gep operatorDavid Blaikie1-8/+8
llvm-svn: 232187
2014-12-03Cast vtable address points to i32 (...)** to enable more globaloptReid Kleckner1-8/+8
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
2013-08-15CHECK-LABEL-ify some code gen tests to improve diagnostic experience when ↵Stephen Lin1-8/+8
tests fail. llvm-svn: 188447
2011-05-16Fix another regression from the "skip vtable pointer initialization"Anders Carlsson1-0/+14
optimization. Make sure to require a vtable when trying to get the address of a VTT, otherwise we would never end up emitting the VTT. llvm-svn: 131400
2011-05-15Re-enable the fix for PR9181 now that all the edge cases are handled.Anders Carlsson1-2/+81
llvm-svn: 131385
2011-05-15Disable the optimization until the bug noticed by Sean Hunt has been fixed.Anders Carlsson1-0/+1
llvm-svn: 131372
2011-05-14When emitting the destructor for a class with a vtable, if we can determineAnders Carlsson1-0/+106
that the destructor body is trivial and that all member variables also have either trivial destructors or trivial destructor bodies, we don't need to initialize the vtable pointers since no virtual member functions will be called on the destructor. Fixes PR9181. llvm-svn: 131368