summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGExprCXX.cpp
Commit message (Collapse)AuthorAgeFilesLines
* IRgen: Add CreateMemTemp, for creating an temporary memory object for a ↵Daniel Dunbar2010-02-091-2/+1
| | | | | | | | | | particular type, and flood fill. - CreateMemTemp sets the alignment on the alloca correctly, which fixes a great many places in IRgen where we were doing the wrong thing. - This fixes many many more places than the test case, but my feeling is we need to audit alignment systematically so I'm not inclined to try hard to test the individual fixes in this patch. If this bothers you, patches welcome! PR6240. llvm-svn: 95648
* Standardize the parsing of function type attributes in a way thatJohn McCall2010-02-051-7/+8
| | | | | | | | | | | | follows (as conservatively as possible) gcc's current behavior: attributes written on return types that don't apply there are applied to the function instead, etc. Only parse CC attributes as type attributes, not as decl attributes; don't accepet noreturn as a decl attribute on ValueDecls, either (it still needs to apply to other decls, like blocks). Consistently consume CC/noreturn information throughout codegen; enforce this by removing their default values in CodeGenTypes::getFunctionInfo(). llvm-svn: 95436
* IRgen: Fix some CreateTempAlloca calls to use ConvertTypeForMem when that isDaniel Dunbar2010-02-051-1/+1
| | | | | | conceptually correct. Review appreciated (Chris, Eli, Anders). llvm-svn: 95401
* Fix another pointer-to-member function miscompile, this time when trying to ↵Anders Carlsson2010-02-041-11/+11
| | | | | | call a virtual member function. llvm-svn: 95307
* Provide a real fix for PR6199, reverting the old workaround. Here, weDouglas Gregor2010-02-031-3/+1
| | | | | | | | realize that CXXConstructExpr is always implicit, so we should just return its argument (if there is only one) rather than directly invoking the constructor. llvm-svn: 95192
* 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