Commit Graph

279 Commits

Author SHA1 Message Date
John McCall ef3057c419 Switch the standard DeclarationName comparator to be a tri-valued comparator.
Use that while fixing a nasty misuse of qsort in vtable codegen which, somehow,
has not actually caused a crash.

llvm-svn: 96062
2010-02-13 01:04:05 +00:00
Eli Friedman 18c28f6cdc if-0 out printf.
llvm-svn: 96052
2010-02-13 00:03:21 +00:00
Anders Carlsson 0760481f26 Fix a refacto that broke the clang-on-clang build.
llvm-svn: 95994
2010-02-12 18:14:46 +00:00
Anders Carlsson 5272c2574a Start stubbing out more of the covariant thunk support.
llvm-svn: 95990
2010-02-12 17:37:14 +00:00
Anders Carlsson 8e661e15f2 Keep track of whether a final overrider needs a return type adjustment.
llvm-svn: 95985
2010-02-12 17:13:23 +00:00
Anders Carlsson 136bd19224 Move overrider out into a separate struct.
llvm-svn: 95984
2010-02-12 16:55:34 +00:00
Anders Carlsson e8a9756e63 Keep track of the address points for all primary bases, and add the ability to dump multiple address points for a single offset.
llvm-svn: 95970
2010-02-12 07:43:48 +00:00
John McCall 84c416b9f6 Fix a bug causing an assertion when a covariant return type differed from
an overriden type only by reduced qualification.

llvm-svn: 95968
2010-02-12 06:15:07 +00:00
Anders Carlsson 65b4978f7f More work on vtable layout. We can now layout vtables with primary bases.
llvm-svn: 95965
2010-02-12 05:25:12 +00:00
Anders Carlsson 09da3372b6 When dumping vtables, dump whether a virtual member function is pure or not.
llvm-svn: 95963
2010-02-12 02:38:13 +00:00
Anders Carlsson 9fbf6d95f6 More work on the final overriders.
llvm-svn: 95954
2010-02-12 01:40:03 +00:00
Anders Carlsson e8ac42ad5c Stub out the final overriders class.
llvm-svn: 95922
2010-02-11 21:24:32 +00:00
Anders Carlsson dd27b5d7bb Use getAs instead of cast/dyn_cast on types. (I'm sure Doug will appreciate this).
llvm-svn: 95911
2010-02-11 19:45:15 +00:00
Anders Carlsson 727ffb14a1 Move two functions to the top. No functionality change.
llvm-svn: 95908
2010-02-11 19:39:49 +00:00
Anders Carlsson 5bd8d19291 More vtable layout dumper improvements. Handle destructors, dump the complete function type of the member functions (using PredefinedExpr::ComputeName.
llvm-svn: 95887
2010-02-11 18:20:28 +00:00
Anders Carlsson 932c2f2a9a Keep track of, and dump, vtable address points.
llvm-svn: 95874
2010-02-11 17:18:51 +00:00
Anders Carlsson 5d40c6f658 Check in the beginnings of my new vtable layout builder idea.
Right now, it's off by default but can be tested by passing -fdump-vtable-layouts to clang -cc1. This option will cause all vtables that will normally be emitted as part of codegen to also be dumped using the new layout code.

I've also added a very simple new vtable layout test case.

llvm-svn: 95865
2010-02-11 08:02:13 +00:00
Chris Lattner eb1e610d00 remove a big chunk of #if 0 code.
llvm-svn: 95201
2010-02-03 05:28:17 +00:00
Anders Carlsson 259688ce29 Move pointer to data member emission to CodeGenModule and use it in CGExprConstant. Fixes PR5674.
llvm-svn: 95063
2010-02-02 03:37:46 +00:00
Mike Stump ded0a406b4 Refine the non-virtual this adjustments for thunks by using the offset
to the declaring class from the nearest virtual base class.  WIP.

llvm-svn: 94606
2010-01-26 22:44:01 +00:00
Mike Stump a04ecfb701 Refine the non-virtual this adjustments for thunks by using the offset
to the declaring class from the nearest virtual base class.  WIP.

This fixes 40% of all the problems remaining in one of my testcases.

llvm-svn: 94592
2010-01-26 21:35:27 +00:00
Anders Carlsson 7228117108 Change getUnique to return a GlobalDecl. Fixes PR6147.
llvm-svn: 94554
2010-01-26 17:36:47 +00:00
Mike Stump 77537b136e Be sure to track the non-virtual part of the vcall offset in complex
multiple inheritance cases.  WIP.

This fixes 20% of the outstanding problems found by the randomized
tester.

llvm-svn: 94499
2010-01-26 03:42:22 +00:00
Mike Stump 90181eb294 Fixup a missing vcall entry. WIP.
llvm-svn: 94478
2010-01-26 00:05:04 +00:00
Mike Stump 1f49d65235 Finish off fixing up debug information.
llvm-svn: 94193
2010-01-22 18:48:47 +00:00
Mike Stump 9eb76d47f2 Ensure we output all non-virtual base vtables. Fixes PR5890.
llvm-svn: 94163
2010-01-22 06:45:05 +00:00
Mike Stump d2808449e4 Update debugging code.
llvm-svn: 94145
2010-01-22 02:51:26 +00:00
Anders Carlsson f768db7775 Move the VTT related code into its own file, CGVTT.cpp
llvm-svn: 94079
2010-01-21 16:50:45 +00:00
Anders Carlsson 07894e8a0e More VTT builder fixes. With these fixes we now correctly handle the very complex VTT example from the Itanium ABI spec.
llvm-svn: 93725
2010-01-18 17:13:59 +00:00
Anders Carlsson 3d1a09552c Move some common code into BuildVTT.
llvm-svn: 93710
2010-01-18 04:45:46 +00:00
Anders Carlsson 1af3df854f Fix a bunch of VTT layout bugs, add simple tests for VTT layout.
llvm-svn: 93709
2010-01-18 04:25:18 +00:00
Anders Carlsson 827b245fd6 Minor VTT builder cleanup, no functionality change.
llvm-svn: 93696
2010-01-17 23:53:20 +00:00
Anders Carlsson 42f1376f35 Get the ctor vtable address points directly from the VTT builder.
llvm-svn: 93681
2010-01-17 17:10:44 +00:00
Anders Carlsson 5f9a881e1e Store the address points for constructor vtables directly in the VTT builder, because that's the only time they're needed.
llvm-svn: 93412
2010-01-14 02:29:07 +00:00
Douglas Gregor ccecc1bb43 Fix marking of virtual members for nested classes whose first non-pure virtual function has a body inlined in the class
llvm-svn: 92855
2010-01-06 20:27:16 +00:00
Daniel Dunbar a671c2a9fe Fix (invalid) may-be-uninitialized warning.
llvm-svn: 92828
2010-01-06 07:13:04 +00:00
Douglas Gregor d01472beee Revert my available_externally vtables experiment. It's breaking the LLVM-with-Clang build with linker errors that I have yet to investigate.
llvm-svn: 92822
2010-01-06 04:50:56 +00:00
Mike Stump 81478719a7 Reorder to avoid invalidating idx which is an accessor into VCall.
llvm-svn: 92819
2010-01-06 03:09:19 +00:00
Douglas Gregor 26751ffc53 Silence bogus GCC warning
llvm-svn: 92787
2010-01-05 21:55:26 +00:00
Douglas Gregor 1a68ab6c83 Make use of available_externally linkage for vtables when the
non-inline key function of a class template instantiation, when no key
function is present, the class template instantiation itself was
instantiated with an explicit instantiation declaration (aka extern
template). I'm fairly certain that the C++0x specification gives us
this lattitude, although GCC doesn't take advantage of it.

llvm-svn: 92779
2010-01-05 21:40:05 +00:00
Douglas Gregor a318efd1f2 Improve key-function computation for templates. In particular:
- All classes can have a key function; templates don't change that.
  non-template classes when computing the key function.
  - We always mark all of the virtual member functions of class
  template instantiations. 
  - The vtable for an instantiation of a class template has weak
  linkage. 

We could probably use available_externally linkage for vtables of
classes instantiated by explicit instantiation declarations (extern
templates), but GCC doesn't do this and I'm not 100% that the ABI
permits it.

llvm-svn: 92753
2010-01-05 19:06:31 +00:00
Anders Carlsson 93a1884fde Move address points to CGVtableInfo, no functionality change.
llvm-svn: 92420
2010-01-02 18:02:32 +00:00
Anders Carlsson e36a6b3e44 Correctly pass VTT parameters to constructors and destructors. The VTTs aren't yet used in the ctors/dtors, but that will follow.
llvm-svn: 92409
2010-01-02 01:01:18 +00:00
Anders Carlsson 27da15ba8e Move a few more functions away from CGCXX and to CGClass and CGExprCXX.
llvm-svn: 92399
2010-01-01 20:29:01 +00:00
Anders Carlsson a442499072 Fix a bunch of bugs with VMI RTTI building, and add a whole bunch of tests.
llvm-svn: 92319
2009-12-30 23:47:56 +00:00
Mike Stump d538a6d364 Remove some dead code.
llvm-svn: 92123
2009-12-24 07:29:41 +00:00
Anders Carlsson 3f4336cb1f Rename GetAddrOfRTTI to GetAddrOfRTTIDescriptor. Remove the overload that takes a CXXRecordDecl since we were just creating a QualType from it anyway.
llvm-svn: 91590
2009-12-17 07:09:17 +00:00
Eli Friedman 2151725325 Fix a small bug in ComputeMethodVtableIndices.
llvm-svn: 91411
2009-12-15 03:31:17 +00:00
Eli Friedman 3ace52b3a7 Fix linkage of type info and vtable for classes without linkage.
llvm-svn: 91152
2009-12-11 20:48:18 +00:00
Anders Carlsson fd7dfeb779 Improve linkage of RTTI data structures. Introduce CodeGenModule::GetAddrOfRTTI which figures out the right linkage of the RTTI information for the given type and whether it should be defined or not. I will migrate clients over to GetAddrOfRTTI in subsequent commits (with tests).
llvm-svn: 91098
2009-12-11 02:46:30 +00:00
Eli Friedman 48c6b0d14f Slight tweak to vtable linkage.
llvm-svn: 90832
2009-12-08 04:09:14 +00:00
Eli Friedman 31bc3ad275 A bunch more thunk fixes from misc testing.
(Yes, I do intend to commit some tests for this.)

llvm-svn: 90818
2009-12-07 23:56:34 +00:00
Anders Carlsson e1b3e6292a It's OK to try to emit a vtable definition more than once. Fixes PR5697.
llvm-svn: 90751
2009-12-07 07:59:52 +00:00
Eli Friedman c0dacee1e0 Erm, revert for the moment; I didn't test this as thoroughly as I should have
(although it does pass regression tests).

llvm-svn: 90747
2009-12-07 04:45:50 +00:00
Eli Friedman c5d3a6ae3d Tweak the formula for non-virtual offsets to something which appears a bit
more accurate.

llvm-svn: 90746
2009-12-07 04:38:34 +00:00
Anders Carlsson 5ebf8b44e9 Move key functions to a separate map.
llvm-svn: 90745
2009-12-07 04:35:11 +00:00
Eli Friedman f2eda5efd2 Be a bit more complete about accumulating SavedThisAdjustments.
llvm-svn: 90723
2009-12-06 22:33:51 +00:00
Eli Friedman 8174f2c23c Work-in-progess rewrite of thunks: move thunk generation outside of vtable
generation, and make sure we generate thunks when the function is defined
rather than when the vtable is defined.

llvm-svn: 90722
2009-12-06 22:01:30 +00:00
Anders Carlsson fe5f7d916f Set the correct linkage for VTTs as well.
llvm-svn: 90689
2009-12-06 01:09:21 +00:00
Anders Carlsson 232324c5c0 More linkage improvements.
llvm-svn: 90687
2009-12-06 00:53:22 +00:00
Anders Carlsson 0911ae8ef2 Pass the desired vtable linkage to GenerateVtable directly. Only call MaybeMarkVirtualImplicitMembersReferenced for non-inline functions.
llvm-svn: 90686
2009-12-06 00:23:49 +00:00
Anders Carlsson 7e28c5f2e2 Make GenerateVtable a private member function of CGVtableInfo.
llvm-svn: 90684
2009-12-06 00:01:05 +00:00
Anders Carlsson 4ed44eb7d9 Only emit the vtable definition if the class has a key function and we're emitting it, or if the class doesn't have a key function and we are emitting the complete constructor.
llvm-svn: 90681
2009-12-05 22:42:54 +00:00
Anders Carlsson 0ab79e22ab If a class does not have a key function, its linkage should be weak_odr.
llvm-svn: 90680
2009-12-05 22:24:38 +00:00
Anders Carlsson 58b271d450 Use createGlobalVariable for creating vtable variables too.
llvm-svn: 90679
2009-12-05 22:19:10 +00:00
Anders Carlsson b3f54b748d CodeGenModule::GenerateVtable now returns a pointer directly to the vtable and not to the address point.
llvm-svn: 90676
2009-12-05 21:28:12 +00:00
Anders Carlsson a95d4c51dc Make sure that hte vtable always has an i8* array type.
llvm-svn: 90675
2009-12-05 21:09:05 +00:00
Anders Carlsson c8e39ec79f Add a function for getting the vtable address point of a class.
llvm-svn: 90674
2009-12-05 21:03:56 +00:00
Anders Carlsson b694f05ffb Simplify BuildVTT.
llvm-svn: 90673
2009-12-05 21:02:25 +00:00
Anders Carlsson b78d093fcc Let the VTT builder pretend that getVtable returns a pointer to the vtable and not to the vtable address point.
llvm-svn: 90672
2009-12-05 20:58:49 +00:00
Anders Carlsson 78c2898e02 Change getCtorVtable to not return the address point offset, but the global variable.
llvm-svn: 90671
2009-12-05 20:42:53 +00:00
Anders Carlsson 21bbc1e705 Factor vtable related GlobalVariable creation out into a separate function. Add vtable linkage test.
llvm-svn: 90667
2009-12-05 17:04:47 +00:00
Eli Friedman 6c08ce7706 Skip actually generating the vtable unless we are defining it. This avoids
the side-effects of generating the methods in the vtable (including PR5676).

llvm-svn: 90635
2009-12-05 01:05:03 +00:00
Benjamin Kramer 62ab616666 Return bool as a bool instead of a uint64_t.
llvm-svn: 90610
2009-12-04 22:45:27 +00:00
Anders Carlsson bad80eb792 Rename 'Class' to 'MostDerivedClass'
llvm-svn: 90573
2009-12-04 18:36:22 +00:00
Anders Carlsson 19462d681a Store the vtable components in a SmallVector.
llvm-svn: 90571
2009-12-04 16:24:46 +00:00
Anders Carlsson 4e1d75f3ed Use a different ConstantArray::get.
llvm-svn: 90570
2009-12-04 16:22:27 +00:00
Anders Carlsson 472404f8a6 Move the vtable vector directly into the Vtable builder.
llvm-svn: 90569
2009-12-04 16:19:30 +00:00
Anders Carlsson 7bb7076b51 Change getIndex to return false if the index wasn't found. Avoids an extra hash lookup.
llvm-svn: 90568
2009-12-04 15:49:02 +00:00
Eli Friedman 65d87222b2 Minor cleanup; no functionality change.
llvm-svn: 90565
2009-12-04 08:52:11 +00:00
Eli Friedman 81fb0d2656 Remove unused argument.
llvm-svn: 90563
2009-12-04 08:40:51 +00:00
Eli Friedman c07aebee90 Eliminate submethods vector.
llvm-svn: 90562
2009-12-04 08:36:58 +00:00
Eli Friedman 3d2e9de337 Eliminate the inner loop in VtableBuilder::OverrideMethod.
llvm-svn: 90561
2009-12-04 08:34:14 +00:00
Anders Carlsson f3935b4d4b Make sure that overridden method decls are always canonical.
llvm-svn: 90542
2009-12-04 05:51:56 +00:00
Eli Friedman 94bc2dade6 Fix regression in vtable improvements.
llvm-svn: 90540
2009-12-04 04:30:03 +00:00
Eli Friedman b05eb963e0 Rename method to something easier to search for.
llvm-svn: 90536
2009-12-04 03:54:56 +00:00
Anders Carlsson a93e980fbc More work in preparation of getting rid of the submethods loop.
llvm-svn: 90535
2009-12-04 03:52:52 +00:00
Anders Carlsson f2f31f4371 Remove an unused member variable.
llvm-svn: 90534
2009-12-04 03:46:21 +00:00
Anders Carlsson e609636e0d Add a way to get the index of a method. Assert that we have the same index for now.
llvm-svn: 90533
2009-12-04 03:41:37 +00:00
Anders Carlsson b07567c315 Add a premature optimization.
llvm-svn: 90532
2009-12-04 03:07:26 +00:00
Anders Carlsson 50f147460a Add the method directly to the vtable.
llvm-svn: 90531
2009-12-04 03:06:03 +00:00
Anders Carlsson 79bce40365 Get rid of the PureVirtualMethods map.
llvm-svn: 90530
2009-12-04 02:58:12 +00:00
Anders Carlsson ddf42c8d80 Move handling of pure virtual methods to AppendMethods (and rename it to AppendMethodsToVtable).
llvm-svn: 90529
2009-12-04 02:56:03 +00:00
Anders Carlsson 5b3ea9bf1c Move covariant thunk handling to AppendMethods too.
llvm-svn: 90528
2009-12-04 02:52:22 +00:00
Anders Carlsson 86809cd8ab Move 'this' pointer adjustment thunks to AppendMethods.
llvm-svn: 90527
2009-12-04 02:43:50 +00:00
Anders Carlsson 495634e5ac Factor appending methods to a vtable out into a separate function.
llvm-svn: 90525
2009-12-04 02:39:04 +00:00
Anders Carlsson 4c837d258f Get rid of the Thunks struct too.
llvm-svn: 90524
2009-12-04 02:26:15 +00:00
Anders Carlsson c521f952d6 Remove the CovariantThunk struct.
llvm-svn: 90523
2009-12-04 02:22:02 +00:00
Anders Carlsson 597c776c41 Remove the GlobalDecl from the Thunk as well.
llvm-svn: 90522
2009-12-04 02:14:12 +00:00
Anders Carlsson 8c889abc1a Remove the GlobalDecl from the CovariantThunk struct, we can just look it up in the Methods table now.
llvm-svn: 90519
2009-12-04 02:11:21 +00:00
Anders Carlsson cdf1898086 Start populating the VtableMembers structure.
llvm-svn: 90517
2009-12-04 02:08:24 +00:00
Anders Carlsson a84b6e85f0 Add a data structure for efficient storing of vtable methods. Not used yet.
llvm-svn: 90515
2009-12-04 02:01:07 +00:00
Mike Stump cdeb800152 Eli, I copied my code from this code... Let's fix the souce of the bad idea!
Thanks.

llvm-svn: 90458
2009-12-03 16:55:20 +00:00
Anders Carlsson c6089fda20 Attempt to fix the MSVC build.
llvm-svn: 90427
2009-12-03 07:30:40 +00:00
Mike Stump e2d4a2c3a8 Add support for thunking dtors. Oh why does this make my head hurt?
llvm-svn: 90409
2009-12-03 03:47:56 +00:00
Anders Carlsson dabfa3cd8b Revert r90402 for now, virt.cpp is failing.
llvm-svn: 90406
2009-12-03 03:28:24 +00:00
Anders Carlsson e692f7c309 Use Eli's ComputeThunkAdjustment for calculating the return adjustment.
llvm-svn: 90402
2009-12-03 03:15:31 +00:00
Anders Carlsson 80bc5d5d04 Remove the index from the Thunk struct.
llvm-svn: 90400
2009-12-03 02:41:55 +00:00
Anders Carlsson 29a1f751b3 Change the Thunks map to use the vtable index as the key.
llvm-svn: 90399
2009-12-03 02:39:59 +00:00
Anders Carlsson 0e1e7632bc Add the global decl to the Thunk struct.
llvm-svn: 90398
2009-12-03 02:36:40 +00:00
Anders Carlsson 9f98f7a9e5 Remove unused struct fields.
llvm-svn: 90397
2009-12-03 02:34:59 +00:00
Anders Carlsson 657f139abe Delay computing the return adjustments for covariant thunks until when they are added to the vtable.
llvm-svn: 90396
2009-12-03 02:32:59 +00:00
Anders Carlsson 2ca285fc5c No need to create the covariant thunk in both places now.
llvm-svn: 90394
2009-12-03 02:22:59 +00:00
Anders Carlsson 1157e8fc68 Whoops, forgot to save :)
llvm-svn: 90393
2009-12-03 02:20:26 +00:00
Anders Carlsson 06c14b6f65 Remove the index field from the CovariantThunk structure.
llvm-svn: 90392
2009-12-03 02:16:14 +00:00
Anders Carlsson 73295f96c5 Change the CovariantThunk map to use the vtable index as its key.
llvm-svn: 90391
2009-12-03 02:12:03 +00:00
Anders Carlsson c38b40a709 Store a GlobalDecl in the return adjustment.
llvm-svn: 90387
2009-12-03 02:03:29 +00:00
Anders Carlsson 2bd3c0fa34 Do not include the 'this' pointer adjustment in the covariant return type. Instead, store it in the (now oddly named) Thunks map.
llvm-svn: 90386
2009-12-03 01:58:20 +00:00
Anders Carlsson ca1bf68cfb Move VtableBuilder::OverrideMethod out of line in preparation of other changes to it. No functionality change.
llvm-svn: 90382
2009-12-03 01:54:02 +00:00
Mike Stump 8a96d3a355 Turn off for now.
llvm-svn: 90339
2009-12-02 19:50:41 +00:00
Mike Stump ae1b85d984 Put the Builder classes into the anonymous namespace.
llvm-svn: 90335
2009-12-02 19:07:44 +00:00
Mike Stump c01c2b87e8 Change rtti/Rtti to RTTI, as it is an acronym.
llvm-svn: 90334
2009-12-02 18:57:08 +00:00
Anders Carlsson b1d3f7c909 Have ASTRecordLayout keep track of the key function, in preparation of fixing a synthetic ctor/dtor bug.
llvm-svn: 90168
2009-11-30 23:41:22 +00:00
Anders Carlsson c920fa2a74 Fix an assert.
llvm-svn: 90149
2009-11-30 19:43:26 +00:00
Eli Friedman 03aa2f1262 Minor cleanup (no functionality change).
llvm-svn: 90105
2009-11-30 01:19:33 +00:00
Benjamin Kramer 337e3a5fea Remove remaining VISIBILITY_HIDDEN from anonymous namespaces.
llvm-svn: 90044
2009-11-28 19:45:26 +00:00
Anders Carlsson 548cc9d143 We always want to create a virtual function pointer entry if the path from the derived return value to the base overridden return value contains a virtual base class.
llvm-svn: 90024
2009-11-28 03:03:52 +00:00
Anders Carlsson d598850203 Move the vtable builder to an anonymous namespace.
llvm-svn: 90021
2009-11-27 22:21:51 +00:00
Anders Carlsson f942ee0297 Don't build the entire vtable when all we want is the index of a virtual method.
llvm-svn: 90017
2009-11-27 20:47:55 +00:00
Anders Carlsson 323bb04ef4 Lazily create the __cxa_pure_virtual reference.
llvm-svn: 89965
2009-11-26 19:54:33 +00:00
Anders Carlsson d420a31fe9 Use the new CovariantThunkAdjustment in the vtable builder.
Make the pure virtual methods map a set instead.

llvm-svn: 89961
2009-11-26 19:32:45 +00:00
Anders Carlsson 6d771bcd09 Add a Thunk struct to the vtable builder.
llvm-svn: 89935
2009-11-26 03:25:13 +00:00
Anders Carlsson 2f87c4f1a5 Add a CovariantThunkAdjustment struct that represents the adjustments needed for a covariant thunk.
llvm-svn: 89933
2009-11-26 03:09:37 +00:00
Anders Carlsson c778540f9a Add a ThunkAdjustment struct which holds a non-virtual and a virtual adjustment offset. Start using it. General cleanup in Mangle.cpp.
llvm-svn: 89925
2009-11-26 02:32:05 +00:00
Anders Carlsson 6445773279 It is common for vtables to contain pointers to functions that have either incomplete return types or incomplete argument types.
Handle this by returning the llvm::OpaqueType for those cases, which CodeGenModule::GetOrCreateLLVMFunction knows about, and treats as being an "incomplete function".

llvm-svn: 89736
2009-11-24 05:08:52 +00:00
Daniel Dunbar e128dd18ab IRgen: Switch the C++ mangler interfaces to take the SmallVector to write into,
instead of requiring clients to make a raw_svector_ostream, which is just an
implementation detail.

llvm-svn: 89548
2009-11-21 09:06:22 +00:00
Daniel Dunbar ef5d75afeb Sink free mangle* methods into MangleContext.
llvm-svn: 89547
2009-11-21 09:06:10 +00:00
Mike Stump cd2b821241 Fixup address point computations. WIP.
llvm-svn: 89386
2009-11-19 20:52:19 +00:00
Mike Stump aa51ad6815 Refine vtable, rtti and rtti name instantiation so that they follow
the key function.  All the code is wired up, but won't work yet, as I
had to turn off key function calculation as it doesn't work yet.

Also, we refine visibility of the vtable, rtti and rtti name to match
the class, as well as as arrange for all the symbols to be internal
for anonymous namespace entities.

llvm-svn: 89309
2009-11-19 04:04:36 +00:00
Mike Stump 1a139f8fb5 Improve instantiation control for rtti data and allow key functions to
instantiate a class.  WIP.

llvm-svn: 89289
2009-11-19 01:08:19 +00:00
Mike Stump 1960b20403 Refine linkage on thunks. WIP.
llvm-svn: 89287
2009-11-19 00:49:05 +00:00
Mike Stump c0f632d6b2 Set up vtable visibility appropriately.
llvm-svn: 89193
2009-11-18 04:00:48 +00:00
Mike Stump f5b2869b75 Finisgh off rest of class_type_info rtti generation.
llvm-svn: 88823
2009-11-14 23:32:21 +00:00
Mike Stump c5a332cefb Handle descructor printing better.
llvm-svn: 88723
2009-11-13 23:45:53 +00:00
Mike Stump 559387fe8b Also track address points for primaries bases.
llvm-svn: 88717
2009-11-13 23:13:20 +00:00
Anders Carlsson fb4dda4fed Instead of storing CXXMethodDecls in the vtable builder, store GlobalDecls so we can represent both the complete and deleting destructors. Also, when encountering a destructor decl, emit entries for both the complete and deleting destructors. Mike, please review.
With this change, FileCheck builds and runs the clang test suite without failures!

llvm-svn: 88663
2009-11-13 17:08:56 +00:00
Zhongxing Xu 1721ef7a53 Include header for printf.
llvm-svn: 87086
2009-11-13 05:46:16 +00:00
Mike Stump fa81808a11 Refine construction vtables; they don't include bits that don't have
virtual bases unless they are morally virtual.

llvm-svn: 87071
2009-11-13 02:35:38 +00:00
Mike Stump 653d0b99df Refine the construction vtables with respect to offsets. WIP.
llvm-svn: 87067
2009-11-13 02:13:54 +00:00
Mike Stump 83066c8dee Allow the tracking of address points for construction vtables as well.
llvm-svn: 87063
2009-11-13 01:54:23 +00:00