aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/CGVtable.cpp
AgeCommit message (Collapse)Author
2009-12-11Improve linkage of RTTI data structures. Introduce ↵Anders Carlsson
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). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91098 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-08Slight tweak to vtable linkage.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90832 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-07A bunch more thunk fixes from misc testing.Eli Friedman
(Yes, I do intend to commit some tests for this.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90818 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-07It's OK to try to emit a vtable definition more than once. Fixes PR5697.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90751 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-07Erm, revert for the moment; I didn't test this as thoroughly as I should haveEli Friedman
(although it does pass regression tests). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90747 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-07Tweak the formula for non-virtual offsets to something which appears a bitEli Friedman
more accurate. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90746 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-07Move key functions to a separate map.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90745 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-06Be a bit more complete about accumulating SavedThisAdjustments.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90723 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-06Work-in-progess rewrite of thunks: move thunk generation outside of vtableEli Friedman
generation, and make sure we generate thunks when the function is defined rather than when the vtable is defined. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90722 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-06Set the correct linkage for VTTs as well.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90689 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-06More linkage improvements.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90687 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-06Pass the desired vtable linkage to GenerateVtable directly. Only call ↵Anders Carlsson
MaybeMarkVirtualImplicitMembersReferenced for non-inline functions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90686 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-06Make GenerateVtable a private member function of CGVtableInfo.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90684 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-05Only emit the vtable definition if the class has a key function and we're ↵Anders Carlsson
emitting it, or if the class doesn't have a key function and we are emitting the complete constructor. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90681 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-05If a class does not have a key function, its linkage should be weak_odr.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90680 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-05Use createGlobalVariable for creating vtable variables too.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90679 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-05CodeGenModule::GenerateVtable now returns a pointer directly to the vtable ↵Anders Carlsson
and not to the address point. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90676 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-05Make sure that hte vtable always has an i8* array type.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90675 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-05Add a function for getting the vtable address point of a class.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90674 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-05Simplify BuildVTT.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90673 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-05Let the VTT builder pretend that getVtable returns a pointer to the vtable ↵Anders Carlsson
and not to the vtable address point. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90672 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-05Change getCtorVtable to not return the address point offset, but the global ↵Anders Carlsson
variable. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90671 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-05Factor vtable related GlobalVariable creation out into a separate function. ↵Anders Carlsson
Add vtable linkage test. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90667 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-05Skip actually generating the vtable unless we are defining it. This avoidsEli Friedman
the side-effects of generating the methods in the vtable (including PR5676). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90635 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Return bool as a bool instead of a uint64_t.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90610 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Rename 'Class' to 'MostDerivedClass'Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90573 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Store the vtable components in a SmallVector.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90571 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Use a different ConstantArray::get.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90570 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Move the vtable vector directly into the Vtable builder.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90569 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Change getIndex to return false if the index wasn't found. Avoids an extra ↵Anders Carlsson
hash lookup. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90568 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Minor cleanup; no functionality change.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90565 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Remove unused argument.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90563 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Eliminate submethods vector.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90562 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Eliminate the inner loop in VtableBuilder::OverrideMethod.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90561 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Make sure that overridden method decls are always canonical.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90542 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Fix regression in vtable improvements.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90540 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Rename method to something easier to search for.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90536 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04More work in preparation of getting rid of the submethods loop.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90535 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Remove an unused member variable.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90534 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Add a way to get the index of a method. Assert that we have the same index ↵Anders Carlsson
for now. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90533 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Add a premature optimization.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90532 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Add the method directly to the vtable.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90531 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Get rid of the PureVirtualMethods map.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90530 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Move handling of pure virtual methods to AppendMethods (and rename it to ↵Anders Carlsson
AppendMethodsToVtable). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90529 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Move covariant thunk handling to AppendMethods too.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90528 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Move 'this' pointer adjustment thunks to AppendMethods.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90527 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Factor appending methods to a vtable out into a separate function.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90525 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Get rid of the Thunks struct too.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90524 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Remove the CovariantThunk struct.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90523 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Remove the GlobalDecl from the Thunk as well.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90522 91177308-0d34-0410-b5e6-96231b3b80d8