Commit Graph

279 Commits

Author SHA1 Message Date
Anders Carlsson 56446146fd More work on thunks.
llvm-svn: 98765
2010-03-17 20:06:32 +00:00
Anders Carlsson 5d3b901e48 More this adjustment simplification.
llvm-svn: 98333
2010-03-12 05:28:07 +00:00
Anders Carlsson 3c289673d6 Remove OldOffset.
llvm-svn: 98331
2010-03-12 05:02:01 +00:00
Anders Carlsson 2b2b8f1949 Remove debug output.
llvm-svn: 98330
2010-03-12 04:55:20 +00:00
Anders Carlsson 8a2402989d Begin simplifying handling of thunks.
llvm-svn: 98329
2010-03-12 04:54:20 +00:00
Anders Carlsson dd819c981f Use the new vtable layout code for computing virtual base offset offsets.
llvm-svn: 98257
2010-03-11 16:06:20 +00:00
Anders Carlsson 4cbe83cccb Rename getVirtualBaseOffsetIndex to getVirtualBaseOffsetOffset to reflect what it actually does.
llvm-svn: 98248
2010-03-11 07:15:17 +00:00
Anders Carlsson e4424888e4 When possible, use the vbase offset offsets from the most derived class directly.
llvm-svn: 98247
2010-03-11 07:00:45 +00:00
Anders Carlsson 7f6b71e222 Keep track of, and dump, vbase offset offsets.
llvm-svn: 98245
2010-03-11 06:43:12 +00:00
Anders Carlsson 9f28dbc53a Fix tests.
llvm-svn: 98242
2010-03-11 06:10:52 +00:00
Anders Carlsson d5531e2d18 Run the new vtable builder for construction vtables as well now. Note that we still don't use the data it generates.
llvm-svn: 98239
2010-03-11 05:48:21 +00:00
Anders Carlsson 423406f335 Fix calculation of whether a member function needs a thunk in construction vtables.
llvm-svn: 98191
2010-03-10 21:25:37 +00:00
Anders Carlsson 115b4756b5 We were mistakenly marking morally virtual bases as being uninteresting. Fix this.
llvm-svn: 98180
2010-03-10 19:39:11 +00:00
Anders Carlsson 703a08605f Ignore non-interesting bases when emitting construction vtables.
llvm-svn: 98177
2010-03-10 19:15:26 +00:00
Anders Carlsson 804cf51dcf Don't accidentally mark some functions in construction vtables as unused. Also land the test for a previous checkin, now that it's correct.
llvm-svn: 98139
2010-03-10 06:51:42 +00:00
Anders Carlsson 02b99d6b7c When building construction vtables, we need to check if a primary virtual base is actually a primary virtual base in the layout class.
llvm-svn: 98131
2010-03-10 03:02:01 +00:00
Anders Carlsson ca82a4fdba Improve vcall offset handling in construction vtables. With this we layout the construction vtables from the ABI examples correctly.
llvm-svn: 98127
2010-03-10 02:33:41 +00:00
Rafael Espindola e7113ca907 Delay codegen of vtables when handling implicit instantiations.
This fixes PR6474.

llvm-svn: 98123
2010-03-10 02:19:29 +00:00
Anders Carlsson 5b0057c05b Fix a bug with base offset merging that Devang noticed.
llvm-svn: 97641
2010-03-03 04:58:02 +00:00
Anders Carlsson 93b1b49082 Simplify code.
llvm-svn: 97551
2010-03-02 05:40:45 +00:00
Anders Carlsson 6f1f002651 Rename BaseOffset to Offset and make it signed in preparation of more construction vtable work.
llvm-svn: 97546
2010-03-02 03:44:06 +00:00
Anders Carlsson 5b79c31471 Remove debug output.
llvm-svn: 97407
2010-02-28 18:39:30 +00:00
Anders Carlsson 7162ab947b Handle unused functions in construction vtables correctly.
llvm-svn: 97406
2010-02-28 18:37:33 +00:00
Anders Carlsson 8b37bb7c48 When laying out vtables for virtual bases in construction vtables, we need to check if the vtable is a primary base in the layout class.
llvm-svn: 97402
2010-02-28 18:08:38 +00:00
Anders Carlsson e3385f566b More improvements to construction vtables; we know handle vbase offsets correctly (I hope).
llvm-svn: 97361
2010-02-28 01:43:58 +00:00
Anders Carlsson 62c6c72bab Pass information about whether a base is virtual or not down to getCtorVtable, we need this information in the vtable builder.
llvm-svn: 97356
2010-02-28 00:36:23 +00:00
Anders Carlsson 31f595f5ef Add new function.
llvm-svn: 97353
2010-02-28 00:10:58 +00:00
Anders Carlsson f98b47d3b9 Fix to dumpLayout; we want to be able to dump address points even if the vtable doesn't have any methods.
llvm-svn: 97350
2010-02-27 23:58:01 +00:00
Anders Carlsson c3f92a16f2 Add a simple construction vtable test.
llvm-svn: 97344
2010-02-27 21:09:00 +00:00
Anders Carlsson 9391375d95 Start fleshing out construction vtable support.
llvm-svn: 97342
2010-02-27 20:39:05 +00:00
Anders Carlsson 603d7d1910 Enable the new vtable layout code for vtables that aren't construction vtables. (This doesn't mean that we emit LLVM IR using it yet, it just means that it's running and hopefully not crashing or asserting).
llvm-svn: 97341
2010-02-27 20:02:53 +00:00
Anders Carlsson 9f19aaaa3a Move ComputeThisAdjustmentBaseOffset to VtableBuilder.
llvm-svn: 97340
2010-02-27 19:57:44 +00:00
Anders Carlsson b26c2abac7 Make sure to insert the primary base in the set :)
llvm-svn: 97339
2010-02-27 19:51:04 +00:00
Anders Carlsson e02a926a1c Use the real base offset when calculating vbase offsets.
llvm-svn: 97338
2010-02-27 19:21:58 +00:00
Anders Carlsson 4d0729a7cc Figured out why the test was failing, this will hopefully fix it.
llvm-svn: 97336
2010-02-27 19:00:53 +00:00
Anders Carlsson 2b381bbb5c Don't add this adjustments for pure virtual member functions.
llvm-svn: 97334
2010-02-27 18:16:50 +00:00
Anders Carlsson 01d3c7da60 We want to store method info for unused functions.
llvm-svn: 97333
2010-02-27 18:09:40 +00:00
Anders Carlsson 4068798cbc Finish up the changes to this adjustments.
llvm-svn: 97328
2010-02-27 16:52:49 +00:00
Anders Carlsson d46ed89d79 Stub out more of the 'this' pointer adjustment fixes I've been planning. Start using a set vector for primary bases so they will be ordered.
llvm-svn: 97326
2010-02-27 16:18:19 +00:00
Anders Carlsson d2025417ef Fix another vtable layout bug; we weren't looking hard enough for overriden functions when determining if an overrider will ever be used.
llvm-svn: 97306
2010-02-27 06:38:03 +00:00
Anders Carlsson d69b2f93ea Handle vcall offset sharing between destructors.
llvm-svn: 97304
2010-02-27 04:12:52 +00:00
Anders Carlsson b08aaa3e10 Fix a bug where we were generating an unnecessary vtable for a virtual base that's already a primary virtual base.
llvm-svn: 97303
2010-02-27 04:05:52 +00:00
John McCall 43c6ffbeec Sundry fixes to the new vtable builder.
llvm-svn: 97258
2010-02-26 20:22:44 +00:00
Anders Carlsson 9e3b3a3bbe Improve vcall offset handling.
llvm-svn: 97174
2010-02-25 22:23:13 +00:00
Anders Carlsson ed7d0e8be8 Fux a bug where we were trying to add overriders for non-virtual bases of virtual bases more than once.
llvm-svn: 97173
2010-02-25 22:18:35 +00:00
Anders Carlsson 01bbef516e Remove dead code.
llvm-svn: 97109
2010-02-25 03:57:50 +00:00
Anders Carlsson 422f778ba1 Move the vcall and vbase offset layout code out into its own class.
llvm-svn: 97107
2010-02-25 03:45:56 +00:00
Anders Carlsson 3c1ec97a28 Get rid of 'this' adjustments from the FinalOverriders class since they can be different for the same overrider in different parts of the vtable.
llvm-svn: 97068
2010-02-24 22:32:18 +00:00
Anders Carlsson d8d698da60 Improve this adjustment pointer calculation.
llvm-svn: 97067
2010-02-24 22:27:12 +00:00
Anders Carlsson 8025e7b1b9 Make ComputeThisAdjustmentBaseOffset public for now.
llvm-svn: 97066
2010-02-24 22:18:01 +00:00