aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen
AgeCommit message (Collapse)Author
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-04Make functions returning a struct indirectly evaluate the returned structEli Friedman
directly into the sret pointer. This is an optimization in C, but is required for correctness in C++ for classes with a non-trivial copy constructor. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90526 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
2009-12-04Remove the GlobalDecl from the CovariantThunk struct, we can just look it up ↵Anders Carlsson
in the Methods table now. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90519 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Start populating the VtableMembers structure.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90517 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Add a data structure for efficient storing of vtable methods. Not used yet.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90515 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Fixup reference binding for catch parameters.Mike Stump
Fixup throws and rethrows to use invoke as appropriate. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90513 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-04Update chunk of #if 0'ed code to remove fixed FIXME and make it compile. WeEli Friedman
probably want to do some sort of performance assessment before enabling it, though. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90510 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03These are done.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90494 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Improve catch parameter bindings for scalar non-pointers. WIP.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90492 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Handle static_assert inside functions.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90461 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Eli, I copied my code from this code... Let's fix the souce of the bad idea!Mike Stump
Thanks. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90458 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Fix for PR5659: correct a rather nasty oversight in the type conversion forEli Friedman
member pointer types. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90450 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Convert ABIArgInfo::dump to raw_ostream.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90440 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Attempt to fix the MSVC build.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90427 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Fix thunk generation for thunks with a parameter with reference type.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90412 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Minor cleanup.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90411 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Add support for thunking dtors. Oh why does this make my head hurt?Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90409 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Reflow.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90407 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Revert r90402 for now, virt.cpp is failing.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90406 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Use Eli's ComputeThunkAdjustment for calculating the return adjustment.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90402 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Add CodeGenModule::ComputeThunkAdjustment, which Eli wrote.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90401 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Remove the index from the Thunk struct.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90400 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Change the Thunks map to use the vtable index as the key.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90399 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Add the global decl to the Thunk struct.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90398 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Remove unused struct fields.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90397 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Delay computing the return adjustments for covariant thunks until when they ↵Anders Carlsson
are added to the vtable. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90396 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03No need to create the covariant thunk in both places now.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90394 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Whoops, forgot to save :)Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90393 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Remove the index field from the CovariantThunk structure.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90392 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Change the CovariantThunk map to use the vtable index as its key.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90391 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Store a GlobalDecl in the return adjustment.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90387 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Do not include the 'this' pointer adjustment in the covariant return type. ↵Anders Carlsson
Instead, store it in the (now oddly named) Thunks map. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90386 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Move VtableBuilder::OverrideMethod out of line in preparation of other ↵Anders Carlsson
changes to it. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90382 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Remove untrue statement.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90377 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Note a failure I saw from the g++ testsuite:Mike Stump
FAIL: g++.old-deja/g++.mike/eh23.C (test for excess errors) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90374 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-03Work-in-progress: teach mangler how to mangle thunks for destructors.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90360 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-02Cleanups on exceptional edges don't work at all, yet. This doesn'tMike Stump
catch very many of them and if we caught all of them, the errors would be annoying. I'm working on this next. WIP. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90358 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-02Add a cleanup scope for each catch clause.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90357 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-02Add missing branch to exit. Seemingly obvious when I look at theMike Stump
code, but to track this down was laborious. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90356 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-02Fix for PR5522 and PR5666: fix a bunch of mangling issues with extern variablesEli Friedman
and funcctions declared locally within a function. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90344 91177308-0d34-0410-b5e6-96231b3b80d8
2009-12-02Pull the terminate handler up so that we can use it for the catchMike Stump
parameter setup code and set up the catch parameter setup code to protect that code with terminate. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90340 91177308-0d34-0410-b5e6-96231b3b80d8