aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/CGCXX.cpp
AgeCommit message (Collapse)Author
2009-11-18Refactor emitting call to delete operator into common function EmitDeleteCall.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89173 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-17Unify the way destructor epilogues are generated for synthesized and regular ↵Anders Carlsson
destructors. Also fix PR5529. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89034 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-16Fix up EmitMemberInitializer to handle many more cases.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88999 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-16Reorganize EmitMemberInitializer to put anonymous unions on the common codepath.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88995 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-16Make member initializers for union members work correctly.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88989 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-16Implement a few more cases for copy constructor synthesis.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88971 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-16Fix a couple of cases where we weren't generating the right kind of callEli Friedman
for a call to a virtual function. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88891 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-15When generating the deleting ctor, emit a call to delete.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88878 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-14PR5483: Generate missing form of destructor when it is virtual. (SomeoneEli Friedman
more familiar with this stuff should double-check that there isn't some more general rule; this is purely from inspecting g++ output.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88755 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-13Code gen. For virtual destructor call on array objectsFariborz Jahanian
(still part of pr5472). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88712 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-13Code gen for arrady delete operator. Fixes pr5472.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88680 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-13Instead of storing CXXMethodDecls in the vtable builder, store GlobalDecls ↵Anders Carlsson
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! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88663 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-13Add a special BuildVirtualCall that's going to be used for building calls to ↵Anders Carlsson
destructors. This is needed because when compiling: struct A { virtual ~A(); }; void f(A* a) { delete a; } A's deleting destructor should be called. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87083 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-13Fix two bugs with temporaries:Anders Carlsson
1. For A f() { return A(); } we were incorrectly calling the A destructor on the returned object. 2. For void f(A); void g() { A a; f(a); } we were incorrectly not calling the copy constructor. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@87082 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Value initialize non-class array members in ctor'sFariborz Jahanian
initializer list. Fixes PR5463. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86849 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11Avoid generating additional destructor(s) for initialized constructedFariborz Jahanian
objects. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86778 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-10This patch implements Code gen. for destruction ofFariborz Jahanian
global array of objects. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86701 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-10Add vtable caching to prevent multiple vtables for the same class fromMike Stump
being generated. Add the most derived vtable pointer to the VTT. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86671 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-09Unify the codepaths used to verify base and member initializers for explicitlyEli Friedman
and implicitly defined constructors. This has a number of benefits: 1. Less code. 2. Explicit and implicit constructors get the same diagnostics. 3. The AST explicitly contains constructor calls from implicit default constructors. This allows handing some cases that previously weren't handled correctly in IRGen without any additional code. Specifically, implicit default constructors containing calls to constructors with default arguments are now handled correctly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86500 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-06This patch fixes code gen. part of pr5333 (ConversionFariborz Jahanian
using elipsis conversion). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86276 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-06If a member initializer create temporaries we need to destroy them. Fixes ↵Anders Carlsson
PR5077. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86225 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-06More cleanup.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86224 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-05References can't be zero; omit zero check for return value adjustmentsMike Stump
in covariant thunks that return references. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86121 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-05Refine covariant return value adjustments for thunks when nullMike Stump
pointers are returned. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86120 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-04Add code gen for pointer-to-member function inFariborz Jahanian
ctor's initializer. Fixes pr5178. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86040 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-04Store the unresolved class type in MemberPointerType's Class field,Douglas Gregor
from Peter Collingbourne! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86030 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-04Fix 80-col violations.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85990 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-04Split out return adjustments in thunks from this adjustment in thunksMike Stump
so the optimizer can tailcall into the return value adjustment thunk. This improves codesize for complex hierarchies. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85988 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-03Misc cleanups.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85978 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-03Refine volatile handling, specifically, we must have the canonicalMike Stump
type to look at the volatile specifier. I found these all from just hand auditing the code. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85967 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-03Refine return value adjustments for thunks.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85905 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-03Refine codegen for non-virtual this adjustments for thunks.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85856 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-03Add virtual adjustments for this for thunks.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85852 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-02Add basic codegen for thunks that return values.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85842 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-02Refine codegen for thunks.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85839 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-28Minor cleanup.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85434 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-28Code gen for array construction - WIPFariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85432 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-20Code-gen for CXXZeroInitValueExpr AST passedFariborz Jahanian
as argument to a function call. Removes a FIXME. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84694 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-16Implement derived-to-base AST/code gen. There is aFariborz Jahanian
FIXME in CGCXX.cpp that I would like Anders to take a look at. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84265 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-13Don't assume that the LHS and RHS of a member pointer expression is a ↵Anders Carlsson
DeclRefExpr. Fixes PR5177. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83986 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-12Even more devirtualization cleverness.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83886 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-12More devirtualization improvements.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83883 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-12Devirtualize calls on temporaries. A().f() for example.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83882 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-12Factor out devirtualization checking into a separate function and make it ↵Anders Carlsson
handle references correctly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83880 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-11If the base type of a member call is a record type we don't need to emit a ↵Anders Carlsson
virtual call. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83816 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-11Move the vtable builder to CGVtable.cpp, general cleanup.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83798 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-11Change mangleCXXVtable and mangleCXXRtti to take CXXRecordDecls instead of ↵Anders Carlsson
QualTypes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83793 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-10Move our (non-existing) RTTI emission code into CGRtti.cpp. No functionality ↵Anders Carlsson
change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83732 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-09Avoid warning.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83609 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-07Add a MangleContext and pass it to all mangle functions. It will be used for ↵Anders Carlsson
keeping state, such as identifiers assigned to anonymous structs as well as scope encoding. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83442 91177308-0d34-0410-b5e6-96231b3b80d8