Rafael Espindola
							
						 
						
							 
							
							
							
							
								
							
							
								d51c9b9a9f 
								
							 
						 
						
							
							
								
								Use static method in GlobalValue  
							
							 
							
							... 
							
							
							
							llvm-svn: 97872 
							
						 
						
							2010-03-06 07:35:18 +00:00  
						
					 
				
					
						
							
							
								 
								Rafael Espindola
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								John McCall
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								John McCall
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								John McCall
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								John McCall
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								John McCall
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								John McCall
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								John McCall
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								John McCall
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Eli Friedman
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Eli Friedman
							
						 
						
							 
							
							
							
							
								
							
							
								af76ad73ed 
								
							 
						 
						
							
							
								
								Fix obvious mistake.  
							
							 
							
							... 
							
							
							
							llvm-svn: 92172 
							
						 
						
							2009-12-27 03:44:17 +00:00  
						
					 
				
					
						
							
							
								 
								Eli Friedman
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								bfb3671b25 
								
							 
						 
						
							
							
								
								Pass the return value slot to all call exprs.  
							
							 
							
							... 
							
							
							
							llvm-svn: 92145 
							
						 
						
							2009-12-24 21:13:40 +00:00  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								61a401caec 
								
							 
						 
						
							
							
								
								Pass ReturnValueSlot to EmitCall. No functionality change yet.  
							
							 
							
							... 
							
							
							
							llvm-svn: 92138 
							
						 
						
							2009-12-24 19:25:24 +00:00  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Douglas Gregor
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Eli Friedman
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Eli Friedman
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								28a133d602 
								
							 
						 
						
							
							
								
								CK_UserDefinedConversion is a valid kind when doing copy ctor elision.  
							
							 
							
							... 
							
							
							
							llvm-svn: 91695 
							
						 
						
							2009-12-18 17:29:21 +00:00  
						
					 
				
					
						
							
							
								 
								Douglas Gregor
							
						 
						
							 
							
							
							
							
								
							
							
								357b6fd3e5 
								
							 
						 
						
							
							
								
								Address some of Anders comments  
							
							 
							
							... 
							
							
							
							llvm-svn: 91670 
							
						 
						
							2009-12-18 05:19:44 +00:00  
						
					 
				
					
						
							
							
								 
								Douglas Gregor
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Douglas Gregor
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Eli Friedman
							
						 
						
							 
							
							
							
							
								
							
							
								d777cccb47 
								
							 
						 
						
							
							
								
								Don't force the emission of destructor definitions.  
							
							 
							
							... 
							
							
							
							llvm-svn: 91394 
							
						 
						
							2009-12-15 02:06:15 +00:00  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								21122cf657 
								
							 
						 
						
							
							
								
								More array cookie improvements.  
							
							 
							
							... 
							
							
							
							llvm-svn: 91247 
							
						 
						
							2009-12-13 20:04:38 +00:00  
						
					 
				
					
						
							
							
								 
								Benjamin Kramer
							
						 
						
							 
							
							
							
							
								
							
							
								b11118bd0b 
								
							 
						 
						
							
							
								
								Random string-related cleanups.  
							
							 
							
							... 
							
							
							
							llvm-svn: 91119 
							
						 
						
							2009-12-11 13:33:18 +00:00  
						
					 
				
					
						
							
							
								 
								Eli Friedman
							
						 
						
							 
							
							
							
							
								
							
							
								d5bc94e2eb 
								
							 
						 
						
							
							
								
								Get rid of static variable.  
							
							 
							
							... 
							
							
							
							llvm-svn: 91041 
							
						 
						
							2009-12-10 02:21:21 +00:00  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								633c6f6f36 
								
							 
						 
						
							
							
								
								Move more decl related functions to CGDeclCXX.cpp  
							
							 
							
							... 
							
							
							
							llvm-svn: 91012 
							
						 
						
							2009-12-10 00:30:05 +00:00  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								bc49cfed84 
								
							 
						 
						
							
							
								
								Add CGDeclCXX.cpp and move EmitCXXGlobalVarDeclInit there.  
							
							 
							
							... 
							
							
							
							llvm-svn: 91006 
							
						 
						
							2009-12-10 00:16:00 +00:00  
						
					 
				
					
						
							
							
								 
								Mike Stump
							
						 
						
							 
							
							
							
							
								
							
							
								2600491817 
								
							 
						 
						
							
							
								
								Fix spacing.  
							
							 
							
							... 
							
							
							
							llvm-svn: 91000 
							
						 
						
							2009-12-10 00:05:14 +00:00  
						
					 
				
					
						
							
							
								 
								Eli Friedman
							
						 
						
							 
							
							
							
							
								
							
							
								80888c7b38 
								
							 
						 
						
							
							
								
								Build fix.  
							
							 
							
							... 
							
							
							
							llvm-svn: 90841 
							
						 
						
							2009-12-08 06:54:20 +00:00  
						
					 
				
					
						
							
							
								 
								Eli Friedman
							
						 
						
							 
							
							
							
							
								
							
							
								bb5008a32a 
								
							 
						 
						
							
							
								
								Fix for PR5707: make sure implicit copy constructors initialize the vtable  
							
							 
							
							... 
							
							
							
							pointer.
llvm-svn: 90840 
							
						 
						
							2009-12-08 06:46:18 +00:00  
						
					 
				
					
						
							
							
								 
								Eli Friedman
							
						 
						
							 
							
							
							
							
								
							
							
								8aaff69e86 
								
							 
						 
						
							
							
								
								Fix some direct checks of expressions which might be surrounded by parentheses.  
							
							 
							
							... 
							
							
							
							llvm-svn: 90825 
							
						 
						
							2009-12-08 02:09:46 +00:00  
						
					 
				
					
						
							
							
								 
								Eli Friedman
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Eli Friedman
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Eli Friedman
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								5a1a84f9fa 
								
							 
						 
						
							
							
								
								Simplify some code.  
							
							 
							
							... 
							
							
							
							llvm-svn: 90670 
							
						 
						
							2009-12-05 18:38:15 +00:00  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Eli Friedman
							
						 
						
							 
							
							
							
							
								
							
							
								4039f35344 
								
							 
						 
						
							
							
								
								Fix thunk generation for thunks with a parameter with reference type.  
							
							 
							
							... 
							
							
							
							llvm-svn: 90412 
							
						 
						
							2009-12-03 04:49:52 +00:00  
						
					 
				
					
						
							
							
								 
								Eli Friedman
							
						 
						
							 
							
							
							
							
								
							
							
								551fe84d0e 
								
							 
						 
						
							
							
								
								Minor cleanup.  
							
							 
							
							... 
							
							
							
							llvm-svn: 90411 
							
						 
						
							2009-12-03 04:27:05 +00:00  
						
					 
				
					
						
							
							
								 
								Mike Stump
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Fariborz Jahanian
							
						 
						
							 
							
							
							
							
								
							
							
								037bcb5be3 
								
							 
						 
						
							
							
								
								Added an assert.  
							
							 
							
							... 
							
							
							
							llvm-svn: 90285 
							
						 
						
							2009-12-01 23:35:33 +00:00  
						
					 
				
					
						
							
							
								 
								Fariborz Jahanian
							
						 
						
							 
							
							
							
							
								
							
							
								be64149749 
								
							 
						 
						
							
							
								
								More support for virtual destructor calls.  
							
							 
							
							... 
							
							
							
							Fixes pr5619
llvm-svn: 90158 
							
						 
						
							2009-11-30 22:07:18 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								dacbe6bdcd 
								
							 
						 
						
							
							
								
								Don't pass false (default) for isVolatile parameter to CreateStore.  
							
							 
							
							... 
							
							
							
							llvm-svn: 90094 
							
						 
						
							2009-11-29 21:11:41 +00:00  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Eli Friedman
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Eli Friedman
							
						 
						
							 
							
							
							
							
								
							
							
								4907c6f2ed 
								
							 
						 
						
							
							
								
								Remove unused variable.  
							
							 
							
							... 
							
							
							
							llvm-svn: 89945 
							
						 
						
							2009-11-26 07:48:44 +00:00  
						
					 
				
					
						
							
							
								 
								Eli Friedman
							
						 
						
							 
							
							
							
							
								
							
							
								ffc066f4b9 
								
							 
						 
						
							
							
								
								Shortcut explicit calls to a trivial copy assignment operator.  
							
							 
							
							... 
							
							
							
							llvm-svn: 89944 
							
						 
						
							2009-11-26 07:45:48 +00:00  
						
					 
				
					
						
							
							
								 
								Eli Friedman
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								8c793172c2 
								
							 
						 
						
							
							
								
								Handle base-to-derived casts. Will land test case shortly.  
							
							 
							
							... 
							
							
							
							llvm-svn: 89678 
							
						 
						
							2009-11-23 17:57:54 +00:00  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Daniel Dunbar
							
						 
						
							 
							
							
							
							
								
							
							
								ef5d75afeb 
								
							 
						 
						
							
							
								
								Sink free mangle* methods into MangleContext.  
							
							 
							
							... 
							
							
							
							llvm-svn: 89547 
							
						 
						
							2009-11-21 09:06:10 +00:00  
						
					 
				
					
						
							
							
								 
								Mike Stump
							
						 
						
							 
							
							
							
							
								
							
							
								58ef18b38c 
								
							 
						 
						
							
							
								
								Checkpoint current work.  WIP.  
							
							 
							
							... 
							
							
							
							llvm-svn: 89513 
							
						 
						
							2009-11-20 23:44:51 +00:00  
						
					 
				
					
						
							
							
								 
								Mike Stump
							
						 
						
							 
							
							
							
							
								
							
							
								ea950e249f 
								
							 
						 
						
							
							
								
								Reflow to fit 80-col.  
							
							 
							
							... 
							
							
							
							llvm-svn: 89222 
							
						 
						
							2009-11-18 18:57:56 +00:00  
						
					 
				
					
						
							
							
								 
								Eli Friedman
							
						 
						
							 
							
							
							
							
								
							
							
								fe81e3fb3c 
								
							 
						 
						
							
							
								
								Refactor emitting call to delete operator into common function EmitDeleteCall.  
							
							 
							
							... 
							
							
							
							llvm-svn: 89173 
							
						 
						
							2009-11-18 00:50:08 +00:00  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Eli Friedman
							
						 
						
							 
							
							
							
							
								
							
							
								e85ef718d5 
								
							 
						 
						
							
							
								
								Fix up EmitMemberInitializer to handle many more cases.  
							
							 
							
							... 
							
							
							
							llvm-svn: 88999 
							
						 
						
							2009-11-16 23:53:01 +00:00  
						
					 
				
					
						
							
							
								 
								Eli Friedman
							
						 
						
							 
							
							
							
							
								
							
							
								5e7d969526 
								
							 
						 
						
							
							
								
								Reorganize EmitMemberInitializer to put anonymous unions on the common codepath.  
							
							 
							
							... 
							
							
							
							llvm-svn: 88995 
							
						 
						
							2009-11-16 23:34:11 +00:00  
						
					 
				
					
						
							
							
								 
								Eli Friedman
							
						 
						
							 
							
							
							
							
								
							
							
								c1daba3ec8 
								
							 
						 
						
							
							
								
								Make member initializers for union members work correctly.  
							
							 
							
							... 
							
							
							
							llvm-svn: 88989 
							
						 
						
							2009-11-16 22:58:01 +00:00  
						
					 
				
					
						
							
							
								 
								Eli Friedman
							
						 
						
							 
							
							
							
							
								
							
							
								c2ef215bda 
								
							 
						 
						
							
							
								
								Implement a few more cases for copy constructor synthesis.  
							
							 
							
							... 
							
							
							
							llvm-svn: 88971 
							
						 
						
							2009-11-16 21:47:41 +00:00  
						
					 
				
					
						
							
							
								 
								Eli Friedman
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								d787204e6d 
								
							 
						 
						
							
							
								
								When generating the deleting ctor, emit a call to delete.  
							
							 
							
							... 
							
							
							
							llvm-svn: 88878 
							
						 
						
							2009-11-15 23:03:25 +00:00  
						
					 
				
					
						
							
							
								 
								Eli Friedman
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Fariborz Jahanian
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Fariborz Jahanian
							
						 
						
							 
							
							
							
							
								
							
							
								6814eaa2cc 
								
							 
						 
						
							
							
								
								Code gen for arrady delete operator. Fixes pr5472.  
							
							 
							
							... 
							
							
							
							llvm-svn: 88680 
							
						 
						
							2009-11-13 19:27:47 +00:00  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Fariborz Jahanian
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Fariborz Jahanian
							
						 
						
							 
							
							
							
							
								
							
							
								e6c8112572 
								
							 
						 
						
							
							
								
								Avoid generating additional destructor(s) for initialized constructed  
							
							 
							
							... 
							
							
							
							objects.
llvm-svn: 86778 
							
						 
						
							2009-11-11 01:13:34 +00:00  
						
					 
				
					
						
							
							
								 
								Fariborz Jahanian
							
						 
						
							 
							
							
							
							
								
							
							
								1254a0978c 
								
							 
						 
						
							
							
								
								This patch implements Code gen. for destruction of  
							
							 
							
							... 
							
							
							
							global array of objects.
llvm-svn: 86701 
							
						 
						
							2009-11-10 19:24:06 +00:00  
						
					 
				
					
						
							
							
								 
								Mike Stump
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Eli Friedman
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Fariborz Jahanian
							
						 
						
							 
							
							
							
							
								
							
							
								c2d71b531c 
								
							 
						 
						
							
							
								
								This patch fixes code gen. part of pr5333 (Conversion  
							
							 
							
							... 
							
							
							
							using elipsis conversion).
llvm-svn: 86276 
							
						 
						
							2009-11-06 18:47:57 +00:00  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Anders Carlsson
							
						 
						
							 
							
							
							
							
								
							
							
								a7cb98b202 
								
							 
						 
						
							
							
								
								More cleanup.  
							
							 
							
							... 
							
							
							
							llvm-svn: 86224 
							
						 
						
							2009-11-06 03:23:06 +00:00  
						
					 
				
					
						
							
							
								 
								Mike Stump
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Mike Stump
							
						 
						
							 
							
							
							
							
								
							
							
								b8da7a046d 
								
							 
						 
						
							
							
								
								Refine covariant return value adjustments for thunks when null  
							
							 
							
							... 
							
							
							
							pointers are returned.
llvm-svn: 86120 
							
						 
						
							2009-11-05 06:12:26 +00:00  
						
					 
				
					
						
							
							
								 
								Fariborz Jahanian
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Douglas Gregor
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Mike Stump
							
						 
						
							 
							
							
							
							
								
							
							
								b9c9b351e9 
								
							 
						 
						
							
							
								
								Fix 80-col violations.  
							
							 
							
							... 
							
							
							
							llvm-svn: 85990 
							
						 
						
							2009-11-04 01:11:15 +00:00  
						
					 
				
					
						
							
							
								 
								Mike Stump
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Mike Stump
							
						 
						
							 
							
							
							
							
								
							
							
								8117848174 
								
							 
						 
						
							
							
								
								Misc cleanups.  
							
							 
							
							... 
							
							
							
							llvm-svn: 85978 
							
						 
						
							2009-11-03 23:50:34 +00:00  
						
					 
				
					
						
							
							
								 
								Mike Stump
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Mike Stump
							
						 
						
							 
							
							
							
							
								
							
							
								77738205e6 
								
							 
						 
						
							
							
								
								Refine return value adjustments for thunks.  
							
							 
							
							... 
							
							
							
							llvm-svn: 85905 
							
						 
						
							2009-11-03 16:59:27 +00:00  
						
					 
				
					
						
							
							
								 
								Mike Stump
							
						 
						
							 
							
							
							
							
								
							
							
								92e5f8cb39 
								
							 
						 
						
							
							
								
								Refine codegen for non-virtual this adjustments for thunks.  
							
							 
							
							... 
							
							
							
							llvm-svn: 85856 
							
						 
						
							2009-11-03 03:16:46 +00:00  
						
					 
				
					
						
							
							
								 
								Mike Stump
							
						 
						
							 
							
							
							
							
								
							
							
								f358972fdc 
								
							 
						 
						
							
							
								
								Add virtual adjustments for this for thunks.  
							
							 
							
							... 
							
							
							
							llvm-svn: 85852 
							
						 
						
							2009-11-03 02:12:59 +00:00  
						
					 
				
					
						
							
							
								 
								Mike Stump
							
						 
						
							 
							
							
							
							
								
							
							
								31e1d43729 
								
							 
						 
						
							
							
								
								Add basic codegen for thunks that return values.  
							
							 
							
							... 
							
							
							
							llvm-svn: 85842 
							
						 
						
							2009-11-02 23:47:45 +00:00  
						
					 
				
					
						
							
							
								 
								Mike Stump
							
						 
						
							 
							
							
							
							
								
							
							
								33ccd9e354 
								
							 
						 
						
							
							
								
								Refine codegen for thunks.  
							
							 
							
							... 
							
							
							
							llvm-svn: 85839 
							
						 
						
							2009-11-02 23:22:01 +00:00  
						
					 
				
					
						
							
							
								 
								Fariborz Jahanian
							
						 
						
							 
							
							
							
							
								
							
							
								29baa2b1ba 
								
							 
						 
						
							
							
								
								Minor cleanup.  
							
							 
							
							... 
							
							
							
							llvm-svn: 85434 
							
						 
						
							2009-10-28 21:07:28 +00:00