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