summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGExprCXX.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Check in a test case and a nasty workaround for PR6199.Anders Carlsson2010-02-021-1/+3
| | | | llvm-svn: 95076
* Switch expressions like T() and T(1,2) over to new-style initialization. I'mEli Friedman2010-01-311-1/+1
| | | | | | | not quite sure what we want to do about the AST representation; comments welcome. llvm-svn: 94967
* Rework base and member initialization in constructors, with severalDouglas Gregor2010-01-311-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (necessarily simultaneous) changes: - CXXBaseOrMemberInitializer now contains only a single initializer rather than a set of initialiation arguments + a constructor. The single initializer covers all aspects of initialization, including constructor calls as necessary but also cleanup of temporaries created by the initializer (which we never handled before!). - Rework + simplify code generation for CXXBaseOrMemberInitializers, since we can now just emit the initializer as an initializer. - Switched base and member initialization over to the new initialization code (InitializationSequence), so that it - Improved diagnostics for the new initialization code when initializing bases and members, to match the diagnostics produced by the previous (special-purpose) code. - Simplify the representation of type-checked constructor initializers in templates; instead of keeping the fully-type-checked AST, which is rather hard to undo at template instantiation time, throw away the type-checked AST and store the raw expressions in the AST. This simplifies instantiation, but loses a little but of information in the AST. - When type-checking implicit base or member initializers within a dependent context, don't add the generated initializers into the AST, because they'll look like they were explicit. - Record in CXXConstructExpr when the constructor call is to initialize a base class, so that CodeGen does not have to infer it from context. This ensures that we call the right kind of constructor. There are also a few "opportunity" fixes here that were needed to not regress, for example: - Diagnose default-initialization of a const-qualified class that does not have a user-declared default constructor. We had this diagnostic specifically for bases and members, but missed it for variables. That's fixed now. - When defining the implicit constructors, destructor, and copy-assignment operator, set the CurContext to that constructor when we're defining the body. llvm-svn: 94952
* Convert one last size variable to CharUnits (follow-on to 94577).Ken Dyck2010-01-261-2/+3
| | | | llvm-svn: 94579
* Use CharUnits for sizes, offsets, alignments, and padding amounts for valuesKen Dyck2010-01-261-35/+39
| | | | | | that are in character units. llvm-svn: 94577
* Correctly pass VTT parameters to constructors and destructors. The VTTs ↵Anders Carlsson2010-01-021-3/+11
| | | | | | aren't yet used in the ctors/dtors, but that will follow. llvm-svn: 92409
* Move a few more functions away from CGCXX and to CGClass and CGExprCXX.Anders Carlsson2010-01-011-0/+321
| | | | llvm-svn: 92399
* Remove some dead variables clang-analyzer found.Benjamin Kramer2009-12-251-1/+0
| | | | llvm-svn: 92162
* Pass the return value slot to all call exprs.Anders Carlsson2009-12-241-1/+1
| | | | llvm-svn: 92145
* Pass ReturnValueSlot to EmitCall. No functionality change yet.Anders Carlsson2009-12-241-2/+2
| | | | llvm-svn: 92138
* There is no such thing as typeinfo for a cv-qualified type. AssertDouglas Gregor2009-12-231-2/+4
| | | | | | | | that this is true when mangling, then fix up the various places in Sema and/or CodeGen that need to remove qualifiers. Addresses a linking issue when building LLVM with Clang. llvm-svn: 92064
* Fix regression I introduced when dynamic_cast-ing to a reference type.Anders Carlsson2009-12-181-1/+1
| | | | llvm-svn: 91687
* Rename GetAddrOfRTTI to GetAddrOfRTTIDescriptor. Remove the overload that ↵Anders Carlsson2009-12-171-34/+31
| | | | | | takes a CXXRecordDecl since we were just creating a QualType from it anyway. llvm-svn: 91590
* Use GetAddrOfRTTI everywhere and remove GenerateRTTI and GenerateRTTIRef. ↵Anders Carlsson2009-12-161-4/+4
| | | | | | With this change, we can now compile and link TableGen. llvm-svn: 91520
* Don't use a cookie if the global placement new function is used.Anders Carlsson2009-12-131-1/+13
| | | | llvm-svn: 91251
* Fix regression in my last commit - if a struct has a trivial destructor but ↵Anders Carlsson2009-12-131-9/+17
| | | | | | no usual deallocation function we don't need a cookie. llvm-svn: 91249
* More array cookie improvements.Anders Carlsson2009-12-131-61/+95
| | | | llvm-svn: 91247
* If the usual array deallocation function of a class takes two arguments, we ↵Anders Carlsson2009-12-131-27/+46
| | | | | | need to pass the number of bytes allocated to the deallocation function, just not the number of bytes in a single element. llvm-svn: 91246
* Improve linkage of RTTI data structures. Introduce ↵Anders Carlsson2009-12-111-12/+4
| | | | | | 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
* Change rtti/Rtti to RTTI, as it is an acronym.Mike Stump2009-12-021-7/+7
| | | | llvm-svn: 90334
* Handle cases where we're constructing an array of objects and the ↵Anders Carlsson2009-11-241-26/+28
| | | | | | constructor has default arguments. llvm-svn: 89783
* Get rid of the ugly CGCXX names and replace them with CGClass, CGExprCXX and ↵Anders Carlsson2009-11-241-0/+525
CGTemporaries. llvm-svn: 89742
OpenPOWER on IntegriCloud