Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | Add a special BuildVirtualCall that's going to be used for building calls to ↵ | Anders Carlsson | 2009-11-13 | 1 | -11/+26 | |
| | | | | | | | | | | | | | | | | destructors. This is needed because when compiling: struct A { virtual ~A(); }; void f(A* a) { delete a; } A's deleting destructor should be called. llvm-svn: 87083 | |||||
* | Fix two bugs with temporaries: | Anders Carlsson | 2009-11-13 | 1 | -2/+7 | |
| | | | | | | | | | | | | | | | | | | | | | | 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. llvm-svn: 87082 | |||||
* | Value initialize non-class array members in ctor's | Fariborz Jahanian | 2009-11-11 | 1 | -1/+8 | |
| | | | | | | initializer list. Fixes PR5463. llvm-svn: 86849 | |||||
* | Avoid generating additional destructor(s) for initialized constructed | Fariborz Jahanian | 2009-11-11 | 1 | -0/+3 | |
| | | | | | | objects. llvm-svn: 86778 | |||||
* | This patch implements Code gen. for destruction of | Fariborz Jahanian | 2009-11-10 | 1 | -7/+63 | |
| | | | | | | global array of objects. llvm-svn: 86701 | |||||
* | Add vtable caching to prevent multiple vtables for the same class from | Mike Stump | 2009-11-10 | 1 | -1/+1 | |
| | | | | | | | | being generated. Add the most derived vtable pointer to the VTT. llvm-svn: 86671 | |||||
* | Unify the codepaths used to verify base and member initializers for explicitly | Eli Friedman | 2009-11-09 | 1 | -58/+0 | |
| | | | | | | | | | | | | | | | | 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. llvm-svn: 86500 | |||||
* | This patch fixes code gen. part of pr5333 (Conversion | Fariborz Jahanian | 2009-11-06 | 1 | -1/+3 | |
| | | | | | | using elipsis conversion). llvm-svn: 86276 | |||||
* | If a member initializer create temporaries we need to destroy them. Fixes ↵ | Anders Carlsson | 2009-11-06 | 1 | -0/+7 | |
| | | | | | | PR5077. llvm-svn: 86225 | |||||
* | More cleanup. | Anders Carlsson | 2009-11-06 | 1 | -73/+94 | |
| | | | | llvm-svn: 86224 | |||||
* | References can't be zero; omit zero check for return value adjustments | Mike Stump | 2009-11-05 | 1 | -19/+25 | |
| | | | | | | in covariant thunks that return references. llvm-svn: 86121 | |||||
* | Refine covariant return value adjustments for thunks when null | Mike Stump | 2009-11-05 | 1 | -1/+19 | |
| | | | | | | pointers are returned. llvm-svn: 86120 | |||||
* | Add code gen for pointer-to-member function in | Fariborz Jahanian | 2009-11-04 | 1 | -0/+2 | |
| | | | | | | ctor's initializer. Fixes pr5178. llvm-svn: 86040 | |||||
* | Store the unresolved class type in MemberPointerType's Class field, | Douglas Gregor | 2009-11-04 | 1 | -1/+1 | |
| | | | | | | from Peter Collingbourne! llvm-svn: 86030 | |||||
* | Fix 80-col violations. | Mike Stump | 2009-11-04 | 1 | -15/+19 | |
| | | | | llvm-svn: 85990 | |||||
* | Split out return adjustments in thunks from this adjustment in thunks | Mike Stump | 2009-11-04 | 1 | -2/+9 | |
| | | | | | | | so the optimizer can tailcall into the return value adjustment thunk. This improves codesize for complex hierarchies. llvm-svn: 85988 | |||||
* | Misc cleanups. | Mike Stump | 2009-11-03 | 1 | -2/+0 | |
| | | | | llvm-svn: 85978 | |||||
* | Refine volatile handling, specifically, we must have the canonical | Mike Stump | 2009-11-03 | 1 | -3/+4 | |
| | | | | | | | type to look at the volatile specifier. I found these all from just hand auditing the code. llvm-svn: 85967 | |||||
* | Refine return value adjustments for thunks. | Mike Stump | 2009-11-03 | 1 | -28/+37 | |
| | | | | llvm-svn: 85905 | |||||
* | Refine codegen for non-virtual this adjustments for thunks. | Mike Stump | 2009-11-03 | 1 | -5/+12 | |
| | | | | llvm-svn: 85856 | |||||
* | Add virtual adjustments for this for thunks. | Mike Stump | 2009-11-03 | 1 | -2/+30 | |
| | | | | llvm-svn: 85852 | |||||
* | Add basic codegen for thunks that return values. | Mike Stump | 2009-11-02 | 1 | -2/+5 | |
| | | | | llvm-svn: 85842 | |||||
* | Refine codegen for thunks. | Mike Stump | 2009-11-02 | 1 | -30/+27 | |
| | | | | llvm-svn: 85839 | |||||
* | Minor cleanup. | Fariborz Jahanian | 2009-10-28 | 1 | -3/+4 | |
| | | | | llvm-svn: 85434 | |||||
* | Code gen for array construction - WIP | Fariborz Jahanian | 2009-10-28 | 1 | -4/+17 | |
| | | | | llvm-svn: 85432 | |||||
* | Code-gen for CXXZeroInitValueExpr AST passed | Fariborz Jahanian | 2009-10-20 | 1 | -4/+0 | |
| | | | | | | as argument to a function call. Removes a FIXME. llvm-svn: 84694 | |||||
* | Implement derived-to-base AST/code gen. There is a | Fariborz Jahanian | 2009-10-16 | 1 | -6/+13 | |
| | | | | | | | FIXME in CGCXX.cpp that I would like Anders to take a look at. llvm-svn: 84265 | |||||
* | Don't assume that the LHS and RHS of a member pointer expression is a ↵ | Anders Carlsson | 2009-10-13 | 1 | -5/+6 | |
| | | | | | | DeclRefExpr. Fixes PR5177. llvm-svn: 83986 | |||||
* | Even more devirtualization cleverness. | Anders Carlsson | 2009-10-12 | 1 | -1/+5 | |
| | | | | llvm-svn: 83886 | |||||
* | More devirtualization improvements. | Anders Carlsson | 2009-10-12 | 1 | -0/+4 | |
| | | | | llvm-svn: 83883 | |||||
* | Devirtualize calls on temporaries. A().f() for example. | Anders Carlsson | 2009-10-12 | 1 | -0/+6 | |
| | | | | llvm-svn: 83882 | |||||
* | Factor out devirtualization checking into a separate function and make it ↵ | Anders Carlsson | 2009-10-12 | 1 | -1/+15 | |
| | | | | | | handle references correctly. llvm-svn: 83880 | |||||
* | If the base type of a member call is a record type we don't need to emit a ↵ | Anders Carlsson | 2009-10-11 | 1 | -5/+6 | |
| | | | | | | virtual call. llvm-svn: 83816 | |||||
* | Move the vtable builder to CGVtable.cpp, general cleanup. | Anders Carlsson | 2009-10-11 | 1 | -548/+5 | |
| | | | | llvm-svn: 83798 | |||||
* | Change mangleCXXVtable and mangleCXXRtti to take CXXRecordDecls instead of ↵ | Anders Carlsson | 2009-10-11 | 1 | -2/+1 | |
| | | | | | | QualTypes. llvm-svn: 83793 | |||||
* | Move our (non-existing) RTTI emission code into CGRtti.cpp. No functionality ↵ | Anders Carlsson | 2009-10-10 | 1 | -32/+0 | |
| | | | | | | change. llvm-svn: 83732 | |||||
* | Avoid warning. | Mike Stump | 2009-10-09 | 1 | -1/+1 | |
| | | | | llvm-svn: 83609 | |||||
* | Add a MangleContext and pass it to all mangle functions. It will be used for ↵ | Anders Carlsson | 2009-10-07 | 1 | -7/+7 | |
| | | | | | | keeping state, such as identifiers assigned to anonymous structs as well as scope encoding. llvm-svn: 83442 | |||||
* | Uncomment some commented out code. | Anders Carlsson | 2009-10-06 | 1 | -4/+4 | |
| | | | | llvm-svn: 83428 | |||||
* | Change GetAddressCXXOfBaseClass to use CXXBasePaths for calculating base ↵ | Anders Carlsson | 2009-10-06 | 1 | -8/+46 | |
| | | | | | | class offsets. Fix the code to handle virtual bases as well. llvm-svn: 83426 | |||||
* | Pass the right type to GetAddrOfFunction when getting functions for the ↵ | Anders Carlsson | 2009-10-06 | 1 | -4/+16 | |
| | | | | | | VTable. Fixes PR5021. llvm-svn: 83395 | |||||
* | Implement code generation of member function pointer calls. Fixes PR5121. | Anders Carlsson | 2009-10-03 | 1 | -0/+109 | |
| | | | | llvm-svn: 83271 | |||||
* | Move some functions from CodeGenFunctions to CodeGenModule so they can be ↵ | Anders Carlsson | 2009-10-03 | 1 | -8/+12 | |
| | | | | | | used by CGExprConstant. llvm-svn: 83263 | |||||
* | Handle CXXMemberCallExprs that point to a static method. Fixes PR5093. | Anders Carlsson | 2009-09-29 | 1 | -0/+8 | |
| | | | | llvm-svn: 83045 | |||||
* | Fix http://llvm.org/PR5090. | Mike Stump | 2009-09-29 | 1 | -1/+2 | |
| | | | | llvm-svn: 83035 | |||||
* | CodeGen for try statements. (We just emit the body for now). | Anders Carlsson | 2009-09-27 | 1 | -4/+9 | |
| | | | | llvm-svn: 82910 | |||||
* | Refactor the representation of qualifiers to bring ExtQualType out of the | John McCall | 2009-09-24 | 1 | -2/+2 | |
| | | | | | | | | Type hierarchy. Demote 'volatile' to extended-qualifier status. Audit our use of qualifiers and fix a few places that weren't dealing with qualifiers quite right; many more remain. llvm-svn: 82705 | |||||
* | Add a new variant of EmitCXXAggrConstructorCall that takes a Value that ↵ | Anders Carlsson | 2009-09-23 | 1 | -20/+26 | |
| | | | | | | holds the number of elements to construct, to be used when implementing new[]. llvm-svn: 82602 | |||||
* | Move codegen of new and delete to CGCXXExpr.cpp | Anders Carlsson | 2009-09-22 | 1 | -187/+0 | |
| | | | | llvm-svn: 82585 | |||||
* | Change all the Type::getAsFoo() methods to specializations of Type::getAs(). | John McCall | 2009-09-21 | 1 | -18/+18 | |
| | | | | | | | | | | | Several of the existing methods were identical to their respective specializations, and so have been removed entirely. Several more 'leaf' optimizations were introduced. The getAsFoo() methods which imposed extra conditions, like getAsObjCInterfacePointerType(), have been left in place. llvm-svn: 82501 |