614dbdcd55 
								
							 
						 
						
							
							
								
								Go back to asking CodeGenTypes whether a type is zero-initializable.  
							
							... 
							
							
							
							Make CGT defer to the ABI on all member pointer types.
This requires giving CGT a handle to the ABI.
It's way easier to make that work if we avoid lazily creating the ABI.
Make it so.
llvm-svn: 111786 
							
						 
						
							2010-08-22 21:01:12 +00:00  
				
					
						
							
							
								 
						
							
								a1dee5300b 
								
							 
						 
						
							
							
								
								Experiment with using first-class aggregates to represent member function  
							
							... 
							
							
							
							pointers.  I find the resulting code to be substantially cleaner, and it
makes it very easy to use the same APIs for data member pointers (which I have
conscientiously avoided here), and it avoids a plethora of potential
inefficiencies due to excessive memory copying, but we'll have to see if it
actually works.
llvm-svn: 111776 
							
						 
						
							2010-08-22 10:59:02 +00:00  
				
					
						
							
							
								 
						
							
								131d97d809 
								
							 
						 
						
							
							
								
								Extract member function pointer comparison and null comparison into  
							
							... 
							
							
							
							the ABI code.  Implement correct semantics for these on ARM.
I believe this completes the implementation of member function pointers
on ARM.
I think I'm going to switch member function pointers over to be
non-aggregates while I have all this in mind.
llvm-svn: 111774 
							
						 
						
							2010-08-22 08:30:07 +00:00  
				
					
						
							
							
								 
						
							
								1c456c89dc 
								
							 
						 
						
							
							
								
								Abstract out member-pointer creation.  I'm really unhappy about the current  
							
							... 
							
							
							
							duplication between the constant and non-constant paths in all of this.
Implement ARM ABI semantics for member pointer constants and conversion.
llvm-svn: 111772 
							
						 
						
							2010-08-22 06:43:33 +00:00  
				
					
						
							
							
								 
						
							
								84fa510aa9 
								
							 
						 
						
							
							
								
								Abstract more member-pointerness out.  
							
							... 
							
							
							
							llvm-svn: 111771 
							
						 
						
							2010-08-22 04:16:24 +00:00  
				
					
						
							
							
								 
						
							
								a8bbb82c55 
								
							 
						 
						
							
							
								
								Abstract out member-pointer conversions.  
							
							... 
							
							
							
							Pretty much everything having to do with member pointers is ABI-specific.
llvm-svn: 111770 
							
						 
						
							2010-08-22 03:04:22 +00:00  
				
					
						
							
							
								 
						
							
								475999dcf9 
								
							 
						 
						
							
							
								
								Extract calls to method pointers out as an ABI routine.  
							
							... 
							
							
							
							No functionality change.
llvm-svn: 111752 
							
						 
						
							2010-08-22 00:05:51 +00:00  
				
					
						
							
							
								 
						
							
								53c59df2f7 
								
							 
						 
						
							
							
								
								Implement support for member pointers under the Microsoft C++ ABI in the  
							
							... 
							
							
							
							AST library.
This also adds infrastructure for supporting multiple C++ ABIs in the AST.
llvm-svn: 111117 
							
						 
						
							2010-08-16 03:33:14 +00:00  
				
					
						
							
							
								 
						
							
								36ea322579 
								
							 
						 
						
							
							
								
								Introduce Decl::hasBody() and FunctionDecl::hasBody() and use them instead of getBody() when we are just checking the existence of a body, to avoid de-serialization of the body from PCH.  
							
							... 
							
							
							
							Makes de-serialization of the function body even more "lazier".
llvm-svn: 107768 
							
						 
						
							2010-07-07 11:31:19 +00:00  
				
					
						
							
							
								 
						
							
								bac7490ffc 
								
							 
						 
						
							
							
								
								Remove unnecessary ASTContext parameter from  
							
							... 
							
							
							
							CXXRecordDecl::getDestructor(); no functionality change.
llvm-svn: 107394 
							
						 
						
							2010-07-01 14:13:13 +00:00  
				
					
						
							
							
								 
						
							
								ea836bc41c 
								
							 
						 
						
							
							
								
								Switch over to the new caching version of getMangledName.  
							
							... 
							
							
							
							llvm-svn: 106549 
							
						 
						
							2010-06-22 16:16:50 +00:00  
				
					
						
							
							
								 
						
							
								8509824cdb 
								
							 
						 
						
							
							
								
								Move CodeGenOptions.h *back* into Frontend. This should have been done when the  
							
							... 
							
							
							
							dependency edge was reversed such that CodeGen depends on Frontend.
llvm-svn: 106065 
							
						 
						
							2010-06-15 23:19:56 +00:00  
				
					
						
							
							
								 
						
							
								635186a8c4 
								
							 
						 
						
							
							
								
								Get rid of getMangledCXXCtorName and getMangledCXXDtorName.  
							
							... 
							
							
							
							llvm-svn: 105673 
							
						 
						
							2010-06-09 02:36:32 +00:00  
				
					
						
							
							
								 
						
							
								09b5fe68ab 
								
							 
						 
						
							
							
								
								More mangling cleanup.  
							
							... 
							
							
							
							llvm-svn: 105672 
							
						 
						
							2010-06-09 02:30:12 +00:00  
				
					
						
							
							
								 
						
							
								c8731be34d 
								
							 
						 
						
							
							
								
								Fix for PR7040: Don't try to compute the LLVM type for a function where it  
							
							... 
							
							
							
							isn't possible to compute.
This patch is mostly refactoring; the key change is the addition of the code
starting with the comment, "Check whether the function has a computable LLVM
signature."  The solution here is essentially the same as the way the
vtable code handles such functions.
llvm-svn: 105151 
							
						 
						
							2010-05-30 06:03:20 +00:00  
				
					
						
							
							
								 
						
							
								4e786ddccb 
								
							 
						 
						
							
							
								
								IRgen: Add a stub class for generating ABI-specific C++ code.  
							
							... 
							
							
							
							This class only supports name mangling (which is apparently used during C/ObjC
codegen). For now only the Itanium C++ ABI is supported. Patches to add a
second C++ ABI are forthcoming.
llvm-svn: 104630 
							
						 
						
							2010-05-25 19:52:27 +00:00  
				
					
						
							
							
								 
						
							
								7e10f3699a 
								
							 
						 
						
							
							
								
								Improve name mangling for blocks and support mangling of static local  
							
							... 
							
							
							
							variables within blocks. We loosely follow GCC's mangling, but since
these are always internal symbols the names don't really matter. I
intend to revisit block mangling later, because GCC's mangling is
rather verbose. <rdar://problem/8015719>.
llvm-svn: 104610 
							
						 
						
							2010-05-25 17:04:15 +00:00  
				
					
						
							
							
								 
						
							
								7cb0220e53 
								
							 
						 
						
							
							
								
								If a function definition has any sort of weak linkage, its static local  
							
							... 
							
							
							
							variables should have that linkage.  Otherwise, its static local
variables should have internal linkage.  To avoid computing this excessively,
set a function's linkage before we emit code for it.
Previously we were assigning weak linkage to the static variables of
static inline functions in C++, with predictably terrible results.  This
fixes that and also gives better linkage than 'weak' when merging is required.
llvm-svn: 104581 
							
						 
						
							2010-05-25 04:30:21 +00:00  
				
					
						
							
							
								 
						
							
								11e5140db9 
								
							 
						 
						
							
							
								
								Vtable -> VTable renames across the board.  
							
							... 
							
							
							
							llvm-svn: 101666 
							
						 
						
							2010-04-17 20:15:18 +00:00  
				
					
						
							
							
								 
						
							
								f141dd1b95 
								
							 
						 
						
							
							
								
								Remove the old vtable layout code.  
							
							... 
							
							
							
							llvm-svn: 99869 
							
						 
						
							2010-03-30 03:43:47 +00:00  
				
					
						
							
							
								 
						
							
								95e0223baf 
								
							 
						 
						
							
							
								
								Remove old thunks code.  
							
							... 
							
							
							
							llvm-svn: 99374 
							
						 
						
							2010-03-24 00:57:54 +00:00  
				
					
						
							
							
								 
						
							
								995891667f 
								
							 
						 
						
							
							
								
								Use the canonical destructor, which fixes the self-host build. Thanks to Eli for noticing.  
							
							... 
							
							
							
							llvm-svn: 99260 
							
						 
						
							2010-03-23 05:15:24 +00:00  
				
					
						
							
							
								 
						
							
								af82f63b47 
								
							 
						 
						
							
							
								
								Always emit associated thunks when emitting the function itself. Remove getVtableAddressPoint, it's not used.  
							
							... 
							
							
							
							llvm-svn: 99252 
							
						 
						
							2010-03-23 04:31:31 +00:00  
				
					
						
							
							
								 
						
							
								a864caff8c 
								
							 
						 
						
							
							
								
								Rename CGVtableInfo to CodeGenVTables in preparation of adding another VTableInfo class.  
							
							... 
							
							
							
							llvm-svn: 99250 
							
						 
						
							2010-03-23 04:11:45 +00:00  
				
					
						
							
							
								 
						
							
								7ec5043c2c 
								
							 
						 
						
							
							
								
								Change CodeGenModule to rely on the Module's symbol table instead of  
							
							... 
							
							
							
							shadowing it in the GlobalDeclMap.  Eliminates the string-uniquing
requirement for mangled names, which should help C++ codegen times a little.
Forces us to do string lookups instead of pointer lookups, which might hurt
codegen times a little across the board.  We'll see how it plays out.
Removing the string-uniquing requirement implicitly fixes any bugs like
PR6635 which arose from the fact that we had multiple uniquing tables for
different kinds of identifiers.
llvm-svn: 99012 
							
						 
						
							2010-03-19 23:29:14 +00:00  
				
					
						
							
							
								 
						
							
								d51c9b9a9f 
								
							 
						 
						
							
							
								
								Use static method in GlobalValue  
							
							... 
							
							
							
							llvm-svn: 97872 
							
						 
						
							2010-03-06 07:35:18 +00:00  
				
					
						
							
							
								 
						
							
								4c489c7030 
								
							 
						 
						
							
							
								
								Don't produce an alias for a destructor if the target is weak.  
							
							... 
							
							
							
							This fixes bootstrap on ELF systems :-)
llvm-svn: 97773 
							
						 
						
							2010-03-05 01:21:10 +00:00  
				
					
						
							
							
								 
						
							
								1950a11939 
								
							 
						 
						
							
							
								
								Don't emit derived-to-base destructor aliases if we don't have a definition  
							
							... 
							
							
							
							for the base destructor, because aliases to declarations aren't legal.
Fixes PR 6471.
llvm-svn: 97637 
							
						 
						
							2010-03-03 03:40:11 +00:00  
				
					
						
							
							
								 
						
							
								aea181de04 
								
							 
						 
						
							
							
								
								Fix an iterator-invalidation bug that was causing selfhost errors  
							
							... 
							
							
							
							on non-darwin platforms.  Fixes PR6411. Test case doesn't reduce,
unfortunately.
llvm-svn: 97055 
							
						 
						
							2010-02-24 20:32:01 +00:00  
				
					
						
							
							
								 
						
							
								f8ff7b9fd1 
								
							 
						 
						
							
							
								
								Perform two more constructor/destructor code-size optimizations:  
							
							... 
							
							
							
							1) emit base destructors as aliases to their unique base class destructors
under some careful conditions.  This is enabled for the same targets that can
support complete-to-base aliases, i.e. not darwin.
2) Emit non-variadic complete constructors for classes with no virtual bases
as calls to the base constructor.  This is enabled on all targets and in
theory can trigger in situations that the alias optimization can't (mostly
involving virtual bases, mostly not yet supported).
These are bundled together because I didn't think it worthwhile to split them,
not because they really need to be.
llvm-svn: 96842 
							
						 
						
							2010-02-23 00:48:20 +00:00  
				
					
						
							
							
								 
						
							
								d4324148d7 
								
							 
						 
						
							
							
								
								Re-introduce the ctor/dtor alias optimization, this time hidden behind a  
							
							... 
							
							
							
							command-line option which defaults off.
llvm-svn: 96649 
							
						 
						
							2010-02-19 01:32:20 +00:00  
				
					
						
							
							
								 
						
							
								334ce7c1c4 
								
							 
						 
						
							
							
								
								Revert the ctor/dtor alias optimization for now;  the buildbots can detect  
							
							... 
							
							
							
							some failure here that I can't.
llvm-svn: 96612 
							
						 
						
							2010-02-18 21:31:48 +00:00  
				
					
						
							
							
								 
						
							
								67cea74745 
								
							 
						 
						
							
							
								
								Emit complete constructors and destructors as aliases to base constructors  
							
							... 
							
							
							
							and destructors when the two entities are semantically identical, i.e. when
the class has no virtual base classes.  We only do this for linkage types
for which aliases are supported, i.e. internal and external, i.e. not linkonce.
llvm-svn: 96451 
							
						 
						
							2010-02-17 03:52:49 +00:00  
				
					
						
							
							
								 
						
							
								347132b32f 
								
							 
						 
						
							
							
								
								IRgen optimization:  cache the value of 'this' and 'vtt' instead of  
							
							... 
							
							
							
							repeatedly reloading from an alloca.  We still need to create the alloca
for debug info purposes (although we currently create it in all cases
because of some abstraction boundaries that're hard to break down).
llvm-svn: 96403 
							
						 
						
							2010-02-16 22:04:33 +00:00  
				
					
						
							
							
								 
						
							
								ab26cfa58d 
								
							 
						 
						
							
							
								
								Standardize the parsing of function type attributes in a way that  
							
							... 
							
							
							
							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 
							
						 
						
							2010-02-05 21:31:56 +00:00  
				
					
						
							
							
								 
						
							
								27da15ba8e 
								
							 
						 
						
							
							
								
								Move a few more functions away from CGCXX and to CGClass and CGExprCXX.  
							
							... 
							
							
							
							llvm-svn: 92399 
							
						 
						
							2010-01-01 20:29:01 +00:00  
				
					
						
							
							
								 
						
							
								1e26278b3b 
								
							 
						 
						
							
							
								
								Add a sanity assertion so that we don't silently generate bad code; I'll file  
							
							... 
							
							
							
							a bug with a testcase hitting this assertion in a moment.
llvm-svn: 92175 
							
						 
						
							2009-12-27 07:02:50 +00:00  
				
					
						
							
							
								 
						
							
								af76ad73ed 
								
							 
						 
						
							
							
								
								Fix obvious mistake.  
							
							... 
							
							
							
							llvm-svn: 92172 
							
						 
						
							2009-12-27 03:44:17 +00:00  
				
					
						
							
							
								 
						
							
								fddc26cc64 
								
							 
						 
						
							
							
								
								Make copy constructor elimination work in more cases; the case in question  
							
							... 
							
							
							
							here affects clang-on-clang.
llvm-svn: 92151 
							
						 
						
							2009-12-24 23:33:34 +00:00  
				
					
						
							
							
								 
						
							
								fb404888af 
								
							 
						 
						
							
							
								
								Move a bunch of class related functions to CGClass.cpp, no functionality change.  
							
							... 
							
							
							
							llvm-svn: 92148 
							
						 
						
							2009-12-24 22:46:43 +00:00  
				
					
						
							
							
								 
						
							
								bfb3671b25 
								
							 
						 
						
							
							
								
								Pass the return value slot to all call exprs.  
							
							... 
							
							
							
							llvm-svn: 92145 
							
						 
						
							2009-12-24 21:13:40 +00:00  
				
					
						
							
							
								 
						
							
								1749083e2e 
								
							 
						 
						
							
							
								
								Fill in the return value slot in CGExprAgg::VisitCallExpr. This takes us halfway towards fixing PR5824.  
							
							... 
							
							
							
							llvm-svn: 92142 
							
						 
						
							2009-12-24 20:40:36 +00:00  
				
					
						
							
							
								 
						
							
								61a401caec 
								
							 
						 
						
							
							
								
								Pass ReturnValueSlot to EmitCall. No functionality change yet.  
							
							... 
							
							
							
							llvm-svn: 92138 
							
						 
						
							2009-12-24 19:25:24 +00:00  
				
					
						
							
							
								 
						
							
								0435ed5875 
								
							 
						 
						
							
							
								
								Add a ReturnValueSlot class. Change the argument order in EmitCall to match the other overload better.  
							
							... 
							
							
							
							llvm-svn: 92136 
							
						 
						
							2009-12-24 19:08:58 +00:00  
				
					
						
							
							
								 
						
							
								507eb87f05 
								
							 
						 
						
							
							
								
								Eliminate the ASTContext argument to CXXConstructorDecl::isCopyConstructor, since the context is available in the Decl  
							
							... 
							
							
							
							llvm-svn: 91862 
							
						 
						
							2009-12-22 00:34:07 +00:00  
				
					
						
							
							
								 
						
							
								70724ad2ff 
								
							 
						 
						
							
							
								
								Work in progress for setting the vtable pointers for all bases correctly in  
							
							... 
							
							
							
							the constructor.  This doesn't handle cases requiring the VTT at the moment,
and generates unnecessary stores, but I think it's essentially correct.
llvm-svn: 91731 
							
						 
						
							2009-12-18 23:47:41 +00:00  
				
					
						
							
							
								 
						
							
								303e45750e 
								
							 
						 
						
							
							
								
								Fix for PR5830: fix the computation of the offset to a virtual base.  
							
							... 
							
							
							
							llvm-svn: 91724 
							
						 
						
							2009-12-18 23:27:44 +00:00  
				
					
						
							
							
								 
						
							
								28a133d602 
								
							 
						 
						
							
							
								
								CK_UserDefinedConversion is a valid kind when doing copy ctor elision.  
							
							... 
							
							
							
							llvm-svn: 91695 
							
						 
						
							2009-12-18 17:29:21 +00:00  
				
					
						
							
							
								 
						
							
								357b6fd3e5 
								
							 
						 
						
							
							
								
								Address some of Anders comments  
							
							... 
							
							
							
							llvm-svn: 91670 
							
						 
						
							2009-12-18 05:19:44 +00:00  
				
					
						
							
							
								 
						
							
								e1314a64b8 
								
							 
						 
						
							
							
								
								Switch the initialization required by return statements over to the  
							
							... 
							
							
							
							new InitializationSequence. This fixes some bugs (e.g., PR5808),
changed some diagnostics, and caused more churn than expected. What's
new:
  - InitializationSequence now has a "C conversion sequence" category
    and step kind, which falls back to
  - Changed the diagnostics for returns to always have the result type
    of the function first and the type of the expression second.
    CheckSingleAssignmentConstraints to peform checking in C. 
  - Improved ASTs for initialization of return values. The ASTs now
    capture all of the temporaries we need to create, but
    intentionally do not bind the tempoary that is actually returned,
    so that it won't get destroyed twice.
  - Make sure to perform an (elidable!) copy of the class object that
    is returned from a class.
  - Fix copy elision in CodeGen to properly see through the
    subexpressions that occur with elidable copies.
  - Give "new" its own entity kind; as with return values and thrown
    objects, we don't bind the expression so we don't call a
    destructor for it.
Note that, with this patch, I've broken returning move-only types in
C++0x. We'll fix it later, when we tackle NRVO.
llvm-svn: 91669 
							
						 
						
							2009-12-18 05:02:21 +00:00  
				
					
						
							
							
								 
						
							
								4f4b186215 
								
							 
						 
						
							
							
								
								When value-initializing a class with no user-defined constructors but  
							
							... 
							
							
							
							with a non-trivial default constructor, zero-initialize the storage
and then call the default constructor. Fixes PR5800.
llvm-svn: 91548 
							
						 
						
							2009-12-16 18:50:27 +00:00  
				
					
						
							
							
								 
						
							
								d777cccb47 
								
							 
						 
						
							
							
								
								Don't force the emission of destructor definitions.  
							
							... 
							
							
							
							llvm-svn: 91394 
							
						 
						
							2009-12-15 02:06:15 +00:00  
				
					
						
							
							
								 
						
							
								21122cf657 
								
							 
						 
						
							
							
								
								More array cookie improvements.  
							
							... 
							
							
							
							llvm-svn: 91247 
							
						 
						
							2009-12-13 20:04:38 +00:00  
				
					
						
							
							
								 
						
							
								b11118bd0b 
								
							 
						 
						
							
							
								
								Random string-related cleanups.  
							
							... 
							
							
							
							llvm-svn: 91119 
							
						 
						
							2009-12-11 13:33:18 +00:00  
				
					
						
							
							
								 
						
							
								d5bc94e2eb 
								
							 
						 
						
							
							
								
								Get rid of static variable.  
							
							... 
							
							
							
							llvm-svn: 91041 
							
						 
						
							2009-12-10 02:21:21 +00:00  
				
					
						
							
							
								 
						
							
								633c6f6f36 
								
							 
						 
						
							
							
								
								Move more decl related functions to CGDeclCXX.cpp  
							
							... 
							
							
							
							llvm-svn: 91012 
							
						 
						
							2009-12-10 00:30:05 +00:00  
				
					
						
							
							
								 
						
							
								bc49cfed84 
								
							 
						 
						
							
							
								
								Add CGDeclCXX.cpp and move EmitCXXGlobalVarDeclInit there.  
							
							... 
							
							
							
							llvm-svn: 91006 
							
						 
						
							2009-12-10 00:16:00 +00:00  
				
					
						
							
							
								 
						
							
								2600491817 
								
							 
						 
						
							
							
								
								Fix spacing.  
							
							... 
							
							
							
							llvm-svn: 91000 
							
						 
						
							2009-12-10 00:05:14 +00:00  
				
					
						
							
							
								 
						
							
								80888c7b38 
								
							 
						 
						
							
							
								
								Build fix.  
							
							... 
							
							
							
							llvm-svn: 90841 
							
						 
						
							2009-12-08 06:54:20 +00:00  
				
					
						
							
							
								 
						
							
								bb5008a32a 
								
							 
						 
						
							
							
								
								Fix for PR5707: make sure implicit copy constructors initialize the vtable  
							
							... 
							
							
							
							pointer.
llvm-svn: 90840 
							
						 
						
							2009-12-08 06:46:18 +00:00  
				
					
						
							
							
								 
						
							
								8aaff69e86 
								
							 
						 
						
							
							
								
								Fix some direct checks of expressions which might be surrounded by parentheses.  
							
							... 
							
							
							
							llvm-svn: 90825 
							
						 
						
							2009-12-08 02:09:46 +00:00  
				
					
						
							
							
								 
						
							
								cd6a50f3e5 
								
							 
						 
						
							
							
								
								Make copy assignment operator synthesis not explode for classes with complex  
							
							... 
							
							
							
							or non-record aggregate members.
It might be worth spending some time to optimize this code (and the parallel
code for copy constructors) to memcpy in larger chunks, rather than copying
one member at a time.  Not sure exactly how beneficial that would be, but
it seems like could help for large classes with, for example, a vtable pointer
forcing the generation of a copy constructor.
llvm-svn: 90823 
							
						 
						
							2009-12-08 01:57:53 +00:00  
				
					
						
							
							
								 
						
							
								31bc3ad275 
								
							 
						 
						
							
							
								
								A bunch more thunk fixes from misc testing.  
							
							... 
							
							
							
							(Yes, I do intend to commit some tests for this.)
llvm-svn: 90818 
							
						 
						
							2009-12-07 23:56:34 +00:00  
				
					
						
							
							
								 
						
							
								8174f2c23c 
								
							 
						 
						
							
							
								
								Work-in-progess rewrite of thunks: move thunk generation outside of vtable  
							
							... 
							
							
							
							generation, and make sure we generate thunks when the function is defined
rather than when the vtable is defined.
llvm-svn: 90722 
							
						 
						
							2009-12-06 22:01:30 +00:00  
				
					
						
							
							
								 
						
							
								b3f54b748d 
								
							 
						 
						
							
							
								
								CodeGenModule::GenerateVtable now returns a pointer directly to the vtable and not to the address point.  
							
							... 
							
							
							
							llvm-svn: 90676 
							
						 
						
							2009-12-05 21:28:12 +00:00  
				
					
						
							
							
								 
						
							
								5a1a84f9fa 
								
							 
						 
						
							
							
								
								Simplify some code.  
							
							... 
							
							
							
							llvm-svn: 90670 
							
						 
						
							2009-12-05 18:38:15 +00:00  
				
					
						
							
							
								 
						
							
								ce460529c0 
								
							 
						 
						
							
							
								
								When generating a virtual destructor, don't try to make a virtual call to the base class destructor because then we'll just re-enter the same destructor!  
							
							... 
							
							
							
							This was done to fix PR5619, so I went ahead and passed a dummy VTT pointer for now.
llvm-svn: 90578 
							
						 
						
							2009-12-04 19:33:17 +00:00  
				
					
						
							
							
								 
						
							
								4039f35344 
								
							 
						 
						
							
							
								
								Fix thunk generation for thunks with a parameter with reference type.  
							
							... 
							
							
							
							llvm-svn: 90412 
							
						 
						
							2009-12-03 04:49:52 +00:00  
				
					
						
							
							
								 
						
							
								551fe84d0e 
								
							 
						 
						
							
							
								
								Minor cleanup.  
							
							... 
							
							
							
							llvm-svn: 90411 
							
						 
						
							2009-12-03 04:27:05 +00:00  
				
					
						
							
							
								 
						
							
								e2d4a2c3a8 
								
							 
						 
						
							
							
								
								Add support for thunking dtors.  Oh why does this make my head hurt?  
							
							... 
							
							
							
							llvm-svn: 90409 
							
						 
						
							2009-12-03 03:47:56 +00:00  
				
					
						
							
							
								 
						
							
								037bcb5be3 
								
							 
						 
						
							
							
								
								Added an assert.  
							
							... 
							
							
							
							llvm-svn: 90285 
							
						 
						
							2009-12-01 23:35:33 +00:00  
				
					
						
							
							
								 
						
							
								be64149749 
								
							 
						 
						
							
							
								
								More support for virtual destructor calls.  
							
							... 
							
							
							
							Fixes pr5619
llvm-svn: 90158 
							
						 
						
							2009-11-30 22:07:18 +00:00  
				
					
						
							
							
								 
						
							
								dacbe6bdcd 
								
							 
						 
						
							
							
								
								Don't pass false (default) for isVolatile parameter to CreateStore.  
							
							... 
							
							
							
							llvm-svn: 90094 
							
						 
						
							2009-11-29 21:11:41 +00:00  
				
					
						
							
							
								 
						
							
								f942ee0297 
								
							 
						 
						
							
							
								
								Don't build the entire vtable when all we want is the index of a virtual method.  
							
							... 
							
							
							
							llvm-svn: 90017 
							
						 
						
							2009-11-27 20:47:55 +00:00  
				
					
						
							
							
								 
						
							
								250534cf9a 
								
							 
						 
						
							
							
								
								Fix for PR5594: use EmitGlobalDefinition instead of EmitCXXDestructor so that  
							
							... 
							
							
							
							we check whether the vtable needs to be generated.
llvm-svn: 89984 
							
						 
						
							2009-11-27 01:42:12 +00:00  
				
					
						
							
							
								 
						
							
								4907c6f2ed 
								
							 
						 
						
							
							
								
								Remove unused variable.  
							
							... 
							
							
							
							llvm-svn: 89945 
							
						 
						
							2009-11-26 07:48:44 +00:00  
				
					
						
							
							
								 
						
							
								ffc066f4b9 
								
							 
						 
						
							
							
								
								Shortcut explicit calls to a trivial copy assignment operator.  
							
							... 
							
							
							
							llvm-svn: 89944 
							
						 
						
							2009-11-26 07:45:48 +00:00  
				
					
						
							
							
								 
						
							
								84a7e347bf 
								
							 
						 
						
							
							
								
								Simplify and fix up the handling of implicit constructors, copy assignment  
							
							... 
							
							
							
							operators, and destructors.  Avoids generating declarations/definitions of
trivial constructors/destructors, and makes sure the trivial copy assignment
operator is generated when necessary.
llvm-svn: 89943 
							
						 
						
							2009-11-26 07:40:08 +00:00  
				
					
						
							
							
								 
						
							
								2f87c4f1a5 
								
							 
						 
						
							
							
								
								Add a CovariantThunkAdjustment struct that represents the adjustments needed for a covariant thunk.  
							
							... 
							
							
							
							llvm-svn: 89933 
							
						 
						
							2009-11-26 03:09:37 +00:00  
				
					
						
							
							
								 
						
							
								abe274a8b0 
								
							 
						 
						
							
							
								
								Move the mangler into the CodeGen namespace. Change mangleThunk to take a ThunkAdjustment.  
							
							... 
							
							
							
							llvm-svn: 89930 
							
						 
						
							2009-11-26 02:49:32 +00:00  
				
					
						
							
							
								 
						
							
								c778540f9a 
								
							 
						 
						
							
							
								
								Add a ThunkAdjustment struct which holds a non-virtual and a virtual adjustment offset. Start using it. General cleanup in Mangle.cpp.  
							
							... 
							
							
							
							llvm-svn: 89925 
							
						 
						
							2009-11-26 02:32:05 +00:00  
				
					
						
							
							
								 
						
							
								82ba57c8f0 
								
							 
						 
						
							
							
								
								Add VTT parameter to base ctors/dtors with virtual bases. (They aren't used yet).  
							
							... 
							
							
							
							llvm-svn: 89835 
							
						 
						
							2009-11-25 03:15:49 +00:00  
				
					
						
							
							
								 
						
							
								3c9beab48a 
								
							 
						 
						
							
							
								
								Handle references correctly when synthesizing copy constructors.  
							
							... 
							
							
							
							With this change, the clang-on-clang test result is now
Expected Passes    : 224
Unexpected Failures: 37
Which means that we can compile over 80% of clang with clang! :)
llvm-svn: 89799 
							
						 
						
							2009-11-24 21:08:10 +00:00  
				
					
						
							
							
								 
						
							
								3a202f601e 
								
							 
						 
						
							
							
								
								Handle cases where we're constructing an array of objects and the constructor has default arguments.  
							
							... 
							
							
							
							llvm-svn: 89783 
							
						 
						
							2009-11-24 18:43:52 +00:00  
				
					
						
							
							
								 
						
							
								8c793172c2 
								
							 
						 
						
							
							
								
								Handle base-to-derived casts. Will land test case shortly.  
							
							... 
							
							
							
							llvm-svn: 89678 
							
						 
						
							2009-11-23 17:57:54 +00:00  
				
					
						
							
							
								 
						
							
								e128dd18ab 
								
							 
						 
						
							
							
								
								IRgen: Switch the C++ mangler interfaces to take the SmallVector to write into,  
							
							... 
							
							
							
							instead of requiring clients to make a raw_svector_ostream, which is just an
implementation detail.
llvm-svn: 89548 
							
						 
						
							2009-11-21 09:06:22 +00:00  
				
					
						
							
							
								 
						
							
								ef5d75afeb 
								
							 
						 
						
							
							
								
								Sink free mangle* methods into MangleContext.  
							
							... 
							
							
							
							llvm-svn: 89547 
							
						 
						
							2009-11-21 09:06:10 +00:00  
				
					
						
							
							
								 
						
							
								58ef18b38c 
								
							 
						 
						
							
							
								
								Checkpoint current work.  WIP.  
							
							... 
							
							
							
							llvm-svn: 89513 
							
						 
						
							2009-11-20 23:44:51 +00:00  
				
					
						
							
							
								 
						
							
								ea950e249f 
								
							 
						 
						
							
							
								
								Reflow to fit 80-col.  
							
							... 
							
							
							
							llvm-svn: 89222 
							
						 
						
							2009-11-18 18:57:56 +00:00  
				
					
						
							
							
								 
						
							
								fe81e3fb3c 
								
							 
						 
						
							
							
								
								Refactor emitting call to delete operator into common function EmitDeleteCall.  
							
							... 
							
							
							
							llvm-svn: 89173 
							
						 
						
							2009-11-18 00:50:08 +00:00  
				
					
						
							
							
								 
						
							
								dee9a30204 
								
							 
						 
						
							
							
								
								Unify the way destructor epilogues are generated for synthesized and regular destructors. Also fix PR5529.  
							
							... 
							
							
							
							llvm-svn: 89034 
							
						 
						
							2009-11-17 04:44:12 +00:00  
				
					
						
							
							
								 
						
							
								e85ef718d5 
								
							 
						 
						
							
							
								
								Fix up EmitMemberInitializer to handle many more cases.  
							
							... 
							
							
							
							llvm-svn: 88999 
							
						 
						
							2009-11-16 23:53:01 +00:00  
				
					
						
							
							
								 
						
							
								5e7d969526 
								
							 
						 
						
							
							
								
								Reorganize EmitMemberInitializer to put anonymous unions on the common codepath.  
							
							... 
							
							
							
							llvm-svn: 88995 
							
						 
						
							2009-11-16 23:34:11 +00:00  
				
					
						
							
							
								 
						
							
								c1daba3ec8 
								
							 
						 
						
							
							
								
								Make member initializers for union members work correctly.  
							
							... 
							
							
							
							llvm-svn: 88989 
							
						 
						
							2009-11-16 22:58:01 +00:00  
				
					
						
							
							
								 
						
							
								c2ef215bda 
								
							 
						 
						
							
							
								
								Implement a few more cases for copy constructor synthesis.  
							
							... 
							
							
							
							llvm-svn: 88971 
							
						 
						
							2009-11-16 21:47:41 +00:00  
				
					
						
							
							
								 
						
							
								e6ce354795 
								
							 
						 
						
							
							
								
								Fix a couple of cases where we weren't generating the right kind of call  
							
							... 
							
							
							
							for a call to a virtual function.
llvm-svn: 88891 
							
						 
						
							2009-11-16 05:31:29 +00:00  
				
					
						
							
							
								 
						
							
								d787204e6d 
								
							 
						 
						
							
							
								
								When generating the deleting ctor, emit a call to delete.  
							
							... 
							
							
							
							llvm-svn: 88878 
							
						 
						
							2009-11-15 23:03:25 +00:00  
				
					
						
							
							
								 
						
							
								b572c92674 
								
							 
						 
						
							
							
								
								PR5483: Generate missing form of destructor when it is virtual.  (Someone  
							
							... 
							
							
							
							more familiar with this stuff should double-check that there isn't some more
general rule; this is purely from inspecting g++ output.)
llvm-svn: 88755 
							
						 
						
							2009-11-14 04:19:37 +00:00  
				
					
						
							
							
								 
						
							
								ebea005812 
								
							 
						 
						
							
							
								
								Code gen. For virtual destructor call on array objects  
							
							... 
							
							
							
							(still part of pr5472).
llvm-svn: 88712 
							
						 
						
							2009-11-13 22:29:45 +00:00  
				
					
						
							
							
								 
						
							
								6814eaa2cc 
								
							 
						 
						
							
							
								
								Code gen for arrady delete operator. Fixes pr5472.  
							
							... 
							
							
							
							llvm-svn: 88680 
							
						 
						
							2009-11-13 19:27:47 +00:00  
				
					
						
							
							
								 
						
							
								fb4dda4fed 
								
							 
						 
						
							
							
								
								Instead of storing CXXMethodDecls in the vtable builder, store GlobalDecls 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!
llvm-svn: 88663 
							
						 
						
							2009-11-13 17:08:56 +00:00  
				
					
						
							
							
								 
						
							
								e828c36933 
								
							 
						 
						
							
							
								
								Add a special BuildVirtualCall that's going to be used for building calls to 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 
							
						 
						
							2009-11-13 04:45:41 +00:00  
				
					
						
							
							
								 
						
							
								78cfaa9e56 
								
							 
						 
						
							
							
								
								Fix two bugs with temporaries:  
							
							... 
							
							
							
							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 
							
						 
						
							2009-11-13 04:34:45 +00:00  
				
					
						
							
							
								 
						
							
								03f62ed9bb 
								
							 
						 
						
							
							
								
								Value initialize non-class array members in ctor's  
							
							... 
							
							
							
							initializer list. Fixes PR5463.
llvm-svn: 86849 
							
						 
						
							2009-11-11 17:55:25 +00:00  
				
					
						
							
							
								 
						
							
								e6c8112572 
								
							 
						 
						
							
							
								
								Avoid generating additional destructor(s) for initialized constructed  
							
							... 
							
							
							
							objects.
llvm-svn: 86778 
							
						 
						
							2009-11-11 01:13:34 +00:00  
				
					
						
							
							
								 
						
							
								1254a0978c 
								
							 
						 
						
							
							
								
								This patch implements Code gen. for destruction of  
							
							... 
							
							
							
							global array of objects.
llvm-svn: 86701 
							
						 
						
							2009-11-10 19:24:06 +00:00  
				
					
						
							
							
								 
						
							
								d846d0825b 
								
							 
						 
						
							
							
								
								Add vtable caching to prevent multiple vtables for the same class from  
							
							... 
							
							
							
							being generated.
Add the most derived vtable pointer to the VTT.
llvm-svn: 86671 
							
						 
						
							2009-11-10 07:44:33 +00:00  
				
					
						
							
							
								 
						
							
								d7686ef31c 
								
							 
						 
						
							
							
								
								Unify the codepaths used to verify base and member initializers for explicitly  
							
							... 
							
							
							
							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 
							
						 
						
							2009-11-09 01:05:47 +00:00  
				
					
						
							
							
								 
						
							
								c2d71b531c 
								
							 
						 
						
							
							
								
								This patch fixes code gen. part of pr5333 (Conversion  
							
							... 
							
							
							
							using elipsis conversion).
llvm-svn: 86276 
							
						 
						
							2009-11-06 18:47:57 +00:00  
				
					
						
							
							
								 
						
							
								5852b13827 
								
							 
						 
						
							
							
								
								If a member initializer create temporaries we need to destroy them. Fixes PR5077.  
							
							... 
							
							
							
							llvm-svn: 86225 
							
						 
						
							2009-11-06 04:11:09 +00:00  
				
					
						
							
							
								 
						
							
								a7cb98b202 
								
							 
						 
						
							
							
								
								More cleanup.  
							
							... 
							
							
							
							llvm-svn: 86224 
							
						 
						
							2009-11-06 03:23:06 +00:00  
				
					
						
							
							
								 
						
							
								c550768a11 
								
							 
						 
						
							
							
								
								References can't be zero; omit zero check for return value adjustments  
							
							... 
							
							
							
							in covariant thunks that return references.
llvm-svn: 86121 
							
						 
						
							2009-11-05 06:32:02 +00:00  
				
					
						
							
							
								 
						
							
								b8da7a046d 
								
							 
						 
						
							
							
								
								Refine covariant return value adjustments for thunks when null  
							
							... 
							
							
							
							pointers are returned.
llvm-svn: 86120 
							
						 
						
							2009-11-05 06:12:26 +00:00  
				
					
						
							
							
								 
						
							
								18bc195473 
								
							 
						 
						
							
							
								
								Add code gen for pointer-to-member function in  
							
							... 
							
							
							
							ctor's initializer. Fixes pr5178.
llvm-svn: 86040 
							
						 
						
							2009-11-04 19:13:37 +00:00  
				
					
						
							
							
								 
						
							
								615ac67fb8 
								
							 
						 
						
							
							
								
								Store the unresolved class type in MemberPointerType's Class field,  
							
							... 
							
							
							
							from Peter Collingbourne!
llvm-svn: 86030 
							
						 
						
							2009-11-04 16:49:01 +00:00  
				
					
						
							
							
								 
						
							
								b9c9b351e9 
								
							 
						 
						
							
							
								
								Fix 80-col violations.  
							
							... 
							
							
							
							llvm-svn: 85990 
							
						 
						
							2009-11-04 01:11:15 +00:00  
				
					
						
							
							
								 
						
							
								71609a2874 
								
							 
						 
						
							
							
								
								Split out return adjustments in thunks from this adjustment in thunks  
							
							... 
							
							
							
							so the optimizer can tailcall into the return value adjustment thunk.
This improves codesize for complex hierarchies.
llvm-svn: 85988 
							
						 
						
							2009-11-04 00:53:51 +00:00  
				
					
						
							
							
								 
						
							
								8117848174 
								
							 
						 
						
							
							
								
								Misc cleanups.  
							
							... 
							
							
							
							llvm-svn: 85978 
							
						 
						
							2009-11-03 23:50:34 +00:00  
				
					
						
							
							
								 
						
							
								53f9ded62b 
								
							 
						 
						
							
							
								
								Refine volatile handling, specifically, we must have the canonical  
							
							... 
							
							
							
							type to look at the volatile specifier.  I found these all from just
hand auditing the code.
llvm-svn: 85967 
							
						 
						
							2009-11-03 23:25:48 +00:00  
				
					
						
							
							
								 
						
							
								77738205e6 
								
							 
						 
						
							
							
								
								Refine return value adjustments for thunks.  
							
							... 
							
							
							
							llvm-svn: 85905 
							
						 
						
							2009-11-03 16:59:27 +00:00  
				
					
						
							
							
								 
						
							
								92e5f8cb39 
								
							 
						 
						
							
							
								
								Refine codegen for non-virtual this adjustments for thunks.  
							
							... 
							
							
							
							llvm-svn: 85856 
							
						 
						
							2009-11-03 03:16:46 +00:00  
				
					
						
							
							
								 
						
							
								f358972fdc 
								
							 
						 
						
							
							
								
								Add virtual adjustments for this for thunks.  
							
							... 
							
							
							
							llvm-svn: 85852 
							
						 
						
							2009-11-03 02:12:59 +00:00  
				
					
						
							
							
								 
						
							
								31e1d43729 
								
							 
						 
						
							
							
								
								Add basic codegen for thunks that return values.  
							
							... 
							
							
							
							llvm-svn: 85842 
							
						 
						
							2009-11-02 23:47:45 +00:00  
				
					
						
							
							
								 
						
							
								33ccd9e354 
								
							 
						 
						
							
							
								
								Refine codegen for thunks.  
							
							... 
							
							
							
							llvm-svn: 85839 
							
						 
						
							2009-11-02 23:22:01 +00:00  
				
					
						
							
							
								 
						
							
								29baa2b1ba 
								
							 
						 
						
							
							
								
								Minor cleanup.  
							
							... 
							
							
							
							llvm-svn: 85434 
							
						 
						
							2009-10-28 21:07:28 +00:00  
				
					
						
							
							
								 
						
							
								f1639fffbc 
								
							 
						 
						
							
							
								
								Code gen for array construction - WIP  
							
							... 
							
							
							
							llvm-svn: 85432 
							
						 
						
							2009-10-28 20:55:41 +00:00  
				
					
						
							
							
								 
						
							
								e4d94cee05 
								
							 
						 
						
							
							
								
								Code-gen for CXXZeroInitValueExpr AST passed  
							
							... 
							
							
							
							as argument to a function call. Removes a FIXME.
llvm-svn: 84694 
							
						 
						
							2009-10-20 23:29:04 +00:00  
				
					
						
							
							
								 
						
							
								da21efb566 
								
							 
						 
						
							
							
								
								Implement derived-to-base AST/code gen. There is a  
							
							... 
							
							
							
							FIXME in CGCXX.cpp that I would like Anders to
take a look at.
llvm-svn: 84265 
							
						 
						
							2009-10-16 19:20:59 +00:00  
				
					
						
							
							
								 
						
							
								6bfee8f3e3 
								
							 
						 
						
							
							
								
								Don't assume that the LHS and RHS of a member pointer expression is a DeclRefExpr. Fixes PR5177.  
							
							... 
							
							
							
							llvm-svn: 83986 
							
						 
						
							2009-10-13 17:41:28 +00:00  
				
					
						
							
							
								 
						
							
								a1b54fdbe1 
								
							 
						 
						
							
							
								
								Even more devirtualization cleverness.  
							
							... 
							
							
							
							llvm-svn: 83886 
							
						 
						
							2009-10-12 19:59:15 +00:00  
				
					
						
							
							
								 
						
							
								2a01709204 
								
							 
						 
						
							
							
								
								More devirtualization improvements.  
							
							... 
							
							
							
							llvm-svn: 83883 
							
						 
						
							2009-10-12 19:51:33 +00:00  
				
					
						
							
							
								 
						
							
								b61301f353 
								
							 
						 
						
							
							
								
								Devirtualize calls on temporaries. A().f() for example.  
							
							... 
							
							
							
							llvm-svn: 83882 
							
						 
						
							2009-10-12 19:45:47 +00:00  
				
					
						
							
							
								 
						
							
								d7432dfb0a 
								
							 
						 
						
							
							
								
								Factor out devirtualization checking into a separate function and make it handle references correctly.  
							
							... 
							
							
							
							llvm-svn: 83880 
							
						 
						
							2009-10-12 19:41:04 +00:00  
				
					
						
							
							
								 
						
							
								b5296558f1 
								
							 
						 
						
							
							
								
								If the base type of a member call is a record type we don't need to emit a virtual call.  
							
							... 
							
							
							
							llvm-svn: 83816 
							
						 
						
							2009-10-11 23:55:52 +00:00  
				
					
						
							
							
								 
						
							
								2bb27f53e0 
								
							 
						 
						
							
							
								
								Move the vtable builder to CGVtable.cpp, general cleanup.  
							
							... 
							
							
							
							llvm-svn: 83798 
							
						 
						
							2009-10-11 22:13:54 +00:00  
				
					
						
							
							
								 
						
							
								2295f31810 
								
							 
						 
						
							
							
								
								Change mangleCXXVtable and mangleCXXRtti to take CXXRecordDecls instead of QualTypes.  
							
							... 
							
							
							
							llvm-svn: 83793 
							
						 
						
							2009-10-11 21:24:51 +00:00  
				
					
						
							
							
								 
						
							
								6ce51fdf43 
								
							 
						 
						
							
							
								
								Move our (non-existing) RTTI emission code into CGRtti.cpp. No functionality change.  
							
							... 
							
							
							
							llvm-svn: 83732 
							
						 
						
							2009-10-10 20:49:04 +00:00  
				
					
						
							
							
								 
						
							
								0d479e6653 
								
							 
						 
						
							
							
								
								Avoid warning.  
							
							... 
							
							
							
							llvm-svn: 83609 
							
						 
						
							2009-10-09 01:25:47 +00:00  
				
					
						
							
							
								 
						
							
								ff971e8bf4 
								
							 
						 
						
							
							
								
								Add a MangleContext and pass it to all mangle functions. It will be used for keeping state, such as identifiers assigned to anonymous structs as well as scope encoding.  
							
							... 
							
							
							
							llvm-svn: 83442 
							
						 
						
							2009-10-07 01:06:45 +00:00  
				
					
						
							
							
								 
						
							
								b703fd2216 
								
							 
						 
						
							
							
								
								Uncomment some commented out code.  
							
							... 
							
							
							
							llvm-svn: 83428 
							
						 
						
							2009-10-06 23:02:00 +00:00  
				
					
						
							
							
								 
						
							
								c6d171ec77 
								
							 
						 
						
							
							
								
								Change GetAddressCXXOfBaseClass to use CXXBasePaths for calculating base class offsets. Fix the code to handle virtual bases as well.  
							
							... 
							
							
							
							llvm-svn: 83426 
							
						 
						
							2009-10-06 22:43:30 +00:00  
				
					
						
							
							
								 
						
							
								80ef6f1a46 
								
							 
						 
						
							
							
								
								Pass the right type to GetAddrOfFunction when getting functions for the VTable. Fixes PR5021.  
							
							... 
							
							
							
							llvm-svn: 83395 
							
						 
						
							2009-10-06 17:54:23 +00:00  
				
					
						
							
							
								 
						
							
								2ee3c011d9 
								
							 
						 
						
							
							
								
								Implement code generation of member function pointer calls. Fixes PR5121.  
							
							... 
							
							
							
							llvm-svn: 83271 
							
						 
						
							2009-10-03 19:43:08 +00:00  
				
					
						
							
							
								 
						
							
								32bfb1ce8f 
								
							 
						 
						
							
							
								
								Move some functions from CodeGenFunctions to CodeGenModule so they can be used by CGExprConstant.  
							
							... 
							
							
							
							llvm-svn: 83263 
							
						 
						
							2009-10-03 14:56:57 +00:00  
				
					
						
							
							
								 
						
							
								8f4fd60c47 
								
							 
						 
						
							
							
								
								Handle CXXMemberCallExprs that point to a static method. Fixes PR5093.  
							
							... 
							
							
							
							llvm-svn: 83045 
							
						 
						
							2009-09-29 03:54:11 +00:00  
				
					
						
							
							
								 
						
							
								e7a2b48572 
								
							 
						 
						
							
							
								
								Fix  http://llvm.org/PR5090 .  
							
							... 
							
							
							
							llvm-svn: 83035 
							
						 
						
							2009-09-29 00:50:50 +00:00  
				
					
						
							
							
								 
						
							
								52d78a518a 
								
							 
						 
						
							
							
								
								CodeGen for try statements. (We just emit the body for now).  
							
							... 
							
							
							
							llvm-svn: 82910 
							
						 
						
							2009-09-27 18:58:34 +00:00  
				
					
						
							
							
								 
						
							
								8ccfcb51ee 
								
							 
						 
						
							
							
								
								Refactor the representation of qualifiers to bring ExtQualType out of the  
							
							... 
							
							
							
							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 
							
						 
						
							2009-09-24 19:53:00 +00:00  
				
					
						
							
							
								 
						
							
								d49844b715 
								
							 
						 
						
							
							
								
								Add a new variant of EmitCXXAggrConstructorCall that takes a Value that holds the number of elements to construct, to be used when implementing new[].  
							
							... 
							
							
							
							llvm-svn: 82602 
							
						 
						
							2009-09-23 02:45:36 +00:00  
				
					
						
							
							
								 
						
							
								cc52f65500 
								
							 
						 
						
							
							
								
								Move codegen of new and delete to CGCXXExpr.cpp  
							
							... 
							
							
							
							llvm-svn: 82585 
							
						 
						
							2009-09-22 22:53:17 +00:00