586ca163b4 
								
							 
						 
						
							
							
								
								Did not intend to check this in.  
							
							... 
							
							
							
							llvm-svn: 96486 
							
						 
						
							2010-02-17 18:11:55 +00:00  
				
					
						
							
							
								 
						
							
								c0309cd3d1 
								
							 
						 
						
							
							
								
								Use proper lexcial context for newly added ivars.  
							
							... 
							
							
							
							llvm-svn: 96484 
							
						 
						
							2010-02-17 18:10:54 +00:00  
				
					
						
							
							
								 
						
							
								989908fbac 
								
							 
						 
						
							
							
								
								Generate the objc_read_weak API when calling  
							
							... 
							
							
							
							a __weak block. Fixes radar 7628591.
llvm-svn: 95822 
							
						 
						
							2010-02-10 23:34:57 +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  
				
					
						
							
							
								 
						
							
								160146eba2 
								
							 
						 
						
							
							
								
								Change the return type of ASTContext::getDeclAlignInBytes() to CharUnits and,  
							
							... 
							
							
							
							now that the "InBytes" part of the name is implied by the return type, rename
it to getDeclAlign().
llvm-svn: 94681 
							
						 
						
							2010-01-27 17:10:57 +00:00  
				
					
						
							
							
								 
						
							
								5262b11962 
								
							 
						 
						
							
							
								
								Use CharUnits for alignments in character units.  
							
							... 
							
							
							
							llvm-svn: 94571 
							
						 
						
							2010-01-26 19:13:33 +00:00  
				
					
						
							
							
								 
						
							
								98ca79435a 
								
							 
						 
						
							
							
								
								Introduce CodeGenModule::GetTargetTypeStoreSize() to calculate the store size  
							
							... 
							
							
							
							of LLVM types in character units.
llvm-svn: 94542 
							
						 
						
							2010-01-26 13:48:07 +00:00  
				
					
						
							
							
								 
						
							
								bf78478d35 
								
							 
						 
						
							
							
								
								simplify code.  
							
							... 
							
							
							
							llvm-svn: 94401 
							
						 
						
							2010-01-25 03:29:35 +00:00  
				
					
						
							
							
								 
						
							
								d6b28fc6ad 
								
							 
						 
						
							
							
								
								Simplify code.  
							
							... 
							
							
							
							llvm-svn: 94175 
							
						 
						
							2010-01-22 13:59:13 +00:00  
				
					
						
							
							
								 
						
							
								40775003e6 
								
							 
						 
						
							
							
								
								Roll out ASTContext::getTypeSizeInChars(), replacing instances of  
							
							... 
							
							
							
							"ASTContext::getTypeSize() / 8". Replace [u]int64_t variables with CharUnits
ones as appropriate. 
Also rename RawType, fromRaw(), and getRaw() in CharUnits to QuantityType, 
fromQuantity(), and getQuantity() for clarity.
llvm-svn: 93153 
							
						 
						
							2010-01-11 17:06:35 +00:00  
				
					
						
							
							
								 
						
							
								bfb3671b25 
								
							 
						 
						
							
							
								
								Pass the return value slot to all call exprs.  
							
							... 
							
							
							
							llvm-svn: 92145 
							
						 
						
							2009-12-24 21:13:40 +00:00  
				
					
						
							
							
								 
						
							
								61a401caec 
								
							 
						 
						
							
							
								
								Pass ReturnValueSlot to EmitCall. No functionality change yet.  
							
							... 
							
							
							
							llvm-svn: 92138 
							
						 
						
							2009-12-24 19:25:24 +00:00  
				
					
						
							
							
								 
						
							
								ce54657e95 
								
							 
						 
						
							
							
								
								DeclRefExpr stores a ValueDecl internally.  
							
							... 
							
							
							
							Template instantiation can re-use DeclRefExprs.
llvm-svn: 90848 
							
						 
						
							2009-12-08 09:08:17 +00:00  
				
					
						
							
							
								 
						
							
								e08ea7874a 
								
							 
						 
						
							
							
								
								various cleanups.  
							
							... 
							
							
							
							llvm-svn: 90657 
							
						 
						
							2009-12-05 08:21:30 +00:00  
				
					
						
							
							
								 
						
							
								c76493a65d 
								
							 
						 
						
							
							
								
								Don't pass false (default) for isVolatile parameter to CreateLoad.  
							
							... 
							
							
							
							llvm-svn: 90098 
							
						 
						
							2009-11-29 21:23:36 +00:00  
				
					
						
							
							
								 
						
							
								ed6c744091 
								
							 
						 
						
							
							
								
								Centralize and complete the computation of value- and type-dependence for DeclRefExprs  
							
							... 
							
							
							
							llvm-svn: 89649 
							
						 
						
							2009-11-23 11:41:28 +00:00  
				
					
						
							
							
								 
						
							
								950a9518b1 
								
							 
						 
						
							
							
								
								Added block type introspection support.  
							
							... 
							
							
							
							As per Fariborz's suggestion, committed now but can be reverted later if the used flag is problematic for Apple.
llvm-svn: 89134 
							
						 
						
							2009-11-17 19:33:30 +00:00  
				
					
						
							
							
								 
						
							
								c9f1efe6b3 
								
							 
						 
						
							
							
								
								Remove some misguided code.  
							
							... 
							
							
							
							llvm-svn: 84823 
							
						 
						
							2009-10-22 01:31:24 +00:00  
				
					
						
							
							
								 
						
							
								e1b19ba05b 
								
							 
						 
						
							
							
								
								Extend out the block descriptor structure for debug information with  
							
							... 
							
							
							
							the copy/dispose helpers as appropriate.
llvm-svn: 84817 
							
						 
						
							2009-10-22 00:49:09 +00:00  
				
					
						
							
							
								 
						
							
								f23b0ead3d 
								
							 
						 
						
							
							
								
								Turn on the preallocation of all BlockDeclRefExprs.  
							
							... 
							
							
							
							llvm-svn: 84789 
							
						 
						
							2009-10-21 22:02:08 +00:00  
				
					
						
							
							
								 
						
							
								066b616684 
								
							 
						 
						
							
							
								
								Refine collection of BlockDeclRefExprs.  WIP.  
							
							... 
							
							
							
							llvm-svn: 84787 
							
						 
						
							2009-10-21 22:01:24 +00:00  
				
					
						
							
							
								 
						
							
								945fec05dd 
								
							 
						 
						
							
							
								
								Fix typo.  
							
							... 
							
							
							
							llvm-svn: 84770 
							
						 
						
							2009-10-21 18:24:18 +00:00  
				
					
						
							
							
								 
						
							
								41eb02d496 
								
							 
						 
						
							
							
								
								Refactor.  
							
							... 
							
							
							
							llvm-svn: 84769 
							
						 
						
							2009-10-21 18:23:01 +00:00  
				
					
						
							
							
								 
						
							
								7fe9cc1dd5 
								
							 
						 
						
							
							
								
								Prep work to always preallocate BlockDeclRefExprs so that we can  
							
							... 
							
							
							
							generate the debug information for the first parameter to the block
invoke functions.  WIP.
llvm-svn: 84737 
							
						 
						
							2009-10-21 03:49:08 +00:00  
				
					
						
							
							
								 
						
							
								38382028c7 
								
							 
						 
						
							
							
								
								For now, we need to have the llvm type of the block pointer remain as  
							
							... 
							
							
							
							it was.  Fixes codegen bug introduced yesterday.
llvm-svn: 84668 
							
						 
						
							2009-10-20 20:30:01 +00:00  
				
					
						
							
							
								 
						
							
								d015328f15 
								
							 
						 
						
							
							
								
								Refine the type of the first parameter to block invoke functions.  
							
							... 
							
							
							
							WIP.  I have yet to find the magic incantation to get the structure
type to be defined.  If someone has a pointer, love to hear it.
llvm-svn: 84590 
							
						 
						
							2009-10-20 02:12:22 +00:00  
				
					
						
							
							
								 
						
							
								abd5b90e4c 
								
							 
						 
						
							
							
								
								Simplify pointer creation with the new Type::getInt*Ptr methods.  
							
							... 
							
							
							
							llvm-svn: 83964 
							
						 
						
							2009-10-13 10:07:13 +00:00  
				
					
						
							
							
								 
						
							
								017460ab6c 
								
							 
						 
						
							
							
								
								Implement a FIXME.  This improves codegen just a tad.  
							
							... 
							
							
							
							llvm-svn: 83221 
							
						 
						
							2009-10-01 22:29:41 +00:00  
				
					
						
							
							
								 
						
							
								7d69911a1f 
								
							 
						 
						
							
							
								
								A couple of refinements for laying out debug information for  
							
							... 
							
							
							
							BlockDeclRefDecls.
llvm-svn: 83185 
							
						 
						
							2009-10-01 00:27:30 +00:00  
				
					
						
							
							
								 
						
							
								2e722b915c 
								
							 
						 
						
							
							
								
								Improve debugging information for BlockDeclRefExpr.  WIP.  Given this  
							
							... 
							
							
							
							scheme, we can switch the previous scheme over to using this code
path.  There's a bit of simplifications yet to do as well.
llvm-svn: 83138 
							
						 
						
							2009-09-30 02:43:10 +00:00  
				
					
						
							
							
								 
						
							
								d2a3e61798 
								
							 
						 
						
							
							
								
								Fix 80-col violation.  
							
							... 
							
							
							
							llvm-svn: 82725 
							
						 
						
							2009-09-24 22:31:14 +00:00  
				
					
						
							
							
								 
						
							
								2114d7c299 
								
							 
						 
						
							
							
								
								Improve debug info generation for __block variables.  
							
							... 
							
							
							
							llvm-svn: 82508 
							
						 
						
							2009-09-22 02:12:52 +00:00  
				
					
						
							
							
								 
						
							
								9dd450bb78 
								
							 
						 
						
							
							
								
								Change all the Type::getAsFoo() methods to specializations of Type::getAs().  
							
							... 
							
							
							
							Several of the existing methods were identical to their respective
specializations, and so have been removed entirely.  Several more 'leaf'
optimizations were introduced.
The getAsFoo() methods which imposed extra conditions, like
getAsObjCInterfacePointerType(), have been left in place.
llvm-svn: 82501 
							
						 
						
							2009-09-21 23:43:11 +00:00  
				
					
						
							
							
								 
						
							
								41eaf0ac57 
								
							 
						 
						
							
							
								
								Make clang stop relying on ConstantStruct::get's default value for isPacked  
							
							... 
							
							
							
							which will be going away (ie. it's becoming a required parameter) later today.
llvm-svn: 82323 
							
						 
						
							2009-09-19 20:00:52 +00:00  
				
					
						
							
							
								 
						
							
								f8e94f2008 
								
							 
						 
						
							
							
								
								Add support for __block variables with alignment greater than __alignof(void *).  
							
							... 
							
							
							
							llvm-svn: 81602 
							
						 
						
							2009-09-12 02:44:18 +00:00  
				
					
						
							
							
								 
						
							
								0168f4b202 
								
							 
						 
						
							
							
								
								For __block variables, cache the LLVM types as well as which LLVM field where the variable is stored.  
							
							... 
							
							
							
							llvm-svn: 81599 
							
						 
						
							2009-09-12 02:14:24 +00:00  
				
					
						
							
							
								 
						
							
								11289f4280 
								
							 
						 
						
							
							
								
								Remove tabs, and whitespace cleanups.  
							
							... 
							
							
							
							llvm-svn: 81346 
							
						 
						
							2009-09-09 15:08:12 +00:00  
				
					
						
							
							
								 
						
							
								4a3999fe90 
								
							 
						 
						
							
							
								
								Reflow comments and some minor whitespace fixups.  
							
							... 
							
							
							
							llvm-svn: 81337 
							
						 
						
							2009-09-09 13:00:44 +00:00  
				
					
						
							
							
								 
						
							
								71d1d92d37 
								
							 
						 
						
							
							
								
								Make BuildByRefType take a ValueDecl instead of a QualType and an alignment.  
							
							... 
							
							
							
							llvm-svn: 81315 
							
						 
						
							2009-09-09 02:51:03 +00:00  
				
					
						
							
							
								 
						
							
								db7149246f 
								
							 
						 
						
							
							
								
								Fix build of clang with gcc-4.4: #include <cstdio> was missing.  
							
							... 
							
							
							
							llvm-svn: 79916 
							
						 
						
							2009-08-24 13:25:12 +00:00  
				
					
						
							
							
								 
						
							
								6032ef1aa3 
								
							 
						 
						
							
							
								
								Remove TypeSpecStartLocation from VarDecl/FunctionDecl/FieldDecl, and use DeclaratorInfo to get this information.  
							
							... 
							
							
							
							llvm-svn: 79584 
							
						 
						
							2009-08-21 00:31:54 +00:00  
				
					
						
							
							
								 
						
							
								60ed560428 
								
							 
						 
						
							
							
								
								Introduce DeclaratorDecl and pass DeclaratorInfo through the Decl/Sema interfaces.  
							
							... 
							
							
							
							DeclaratorDecl contains a DeclaratorInfo* to keep type source info.
Subclasses of DeclaratorDecl are FieldDecl, FunctionDecl, and VarDecl.
EnumConstantDecl still inherits from ValueDecl since it has no need for DeclaratorInfo.
Decl/Sema interfaces accept a DeclaratorInfo as parameter but no DeclaratorInfo is created yet.
llvm-svn: 79392 
							
						 
						
							2009-08-19 01:27:57 +00:00  
				
					
						
							
							
								 
						
							
								41a750271b 
								
							 
						 
						
							
							
								
								Update for LLVM API change.  
							
							... 
							
							
							
							llvm-svn: 78946 
							
						 
						
							2009-08-13 21:57:51 +00:00  
				
					
						
							
							
								 
						
							
								758428f4e3 
								
							 
						 
						
							
							
								
								Update for LLVM API change.  
							
							... 
							
							
							
							llvm-svn: 78259 
							
						 
						
							2009-08-05 23:18:46 +00:00  
				
					
						
							
							
								 
						
							
								0b75f23b94 
								
							 
						 
						
							
							
								
								Update for LLVM API change.  
							
							... 
							
							
							
							llvm-svn: 77722 
							
						 
						
							2009-07-31 20:28:54 +00:00  
				
					
						
							
							
								 
						
							
								f332516136 
								
							 
						 
						
							
							
								
								Fix spacing.  
							
							... 
							
							
							
							llvm-svn: 77688 
							
						 
						
							2009-07-31 17:46:44 +00:00  
				
					
						
							
							
								 
						
							
								658fe02d17 
								
							 
						 
						
							
							
								
								Canonicalize else spacing.  
							
							... 
							
							
							
							llvm-svn: 77629 
							
						 
						
							2009-07-30 22:28:39 +00:00  
				
					
						
							
							
								 
						
							
								9793f0e4d7 
								
							 
						 
						
							
							
								
								Update for LLVM API change.  
							
							... 
							
							
							
							llvm-svn: 77514 
							
						 
						
							2009-07-29 22:16:19 +00:00  
				
					
						
							
							
								 
						
							
								c23c7e6a51 
								
							 
						 
						
							
							
								
								Change uses of:  
							
							... 
							
							
							
							Type::getAsReferenceType() -> Type::getAs<ReferenceType>()
  Type::getAsRecordType() -> Type::getAs<RecordType>()
  Type::getAsPointerType() -> Type::getAs<PointerType>()
  Type::getAsBlockPointerType() -> Type::getAs<BlockPointerType>()
  Type::getAsLValueReferenceType() -> Type::getAs<LValueReferenceType>()
  Type::getAsRValueReferenceType() -> Type::getAs<RValueReferenceType>()
  Type::getAsMemberPointerType() -> Type::getAs<MemberPointerType>()
  Type::getAsReferenceType() -> Type::getAs<ReferenceType>()
  Type::getAsTagType() -> Type::getAs<TagType>()
  
And remove Type::getAsReferenceType(), etc.
This change is similar to one I made a couple weeks ago, but that was partly
reverted pending some additional design discussion. With Doug's pending smart
pointer changes for Types, it seemed natural to take this approach.
llvm-svn: 77510 
							
						 
						
							2009-07-29 21:53:49 +00:00  
				
					
						
							
							
								 
						
							
								ade90fd1ba 
								
							 
						 
						
							
							
								
								Update for LLVM API change.  
							
							... 
							
							
							
							llvm-svn: 77492 
							
						 
						
							2009-07-29 18:54:39 +00:00  
				
					
						
							
							
								 
						
							
								0e0189d64d 
								
							 
						 
						
							
							
								
								Update for LLVM API change.  
							
							... 
							
							
							
							llvm-svn: 77267 
							
						 
						
							2009-07-27 22:29:56 +00:00  
				
					
						
							
							
								 
						
							
								b7a2fe6f81 
								
							 
						 
						
							
							
								
								Update for LLVM API change.  
							
							... 
							
							
							
							llvm-svn: 77012 
							
						 
						
							2009-07-24 23:12:58 +00:00  
				
					
						
							
							
								 
						
							
								8a286fbdb9 
								
							 
						 
						
							
							
								
								Per offline discussion with Steve Naroff, add back Type::getAsXXXType() methods  
							
							... 
							
							
							
							until Doug Gregor's Type smart pointer code lands (or more discussion occurs).
These methods just call the new Type::getAs<XXX> methods, so we still have
reduced implementation redundancy. Having explicit getAsXXXType() methods makes
it easier to set breakpoints in the debugger.
llvm-svn: 76193 
							
						 
						
							2009-07-17 17:50:17 +00:00  
				
					
						
							
							
								 
						
							
								e3fb4b6524 
								
							 
						 
						
							
							
								
								Add member template 'Type::getAs<T>', which converts a Type* to a respective T*.  
							
							... 
							
							
							
							This method is intended to eventually replace the individual
Type::getAsXXXType<> methods.
The motivation behind this change is twofold:
1) Reduce redundant implementations of Type::getAsXXXType() methods. Most of
them are basically copy-and-paste.
2) By centralizing the implementation of the getAs<Type> logic we can more
smoothly move over to Doug Gregor's proposed canonical type smart pointer
scheme.
Along with this patch:
a) Removed 'Type::getAsPointerType()'; now clients use getAs<PointerType>.
b) Removed 'Type::getAsBlockPointerTypE()'; now clients use getAs<BlockPointerType>.
llvm-svn: 76098 
							
						 
						
							2009-07-16 19:58:26 +00:00  
				
					
						
							
							
								 
						
							
								170229f68d 
								
							 
						 
						
							
							
								
								Update for LLVM API change, and contextify a bunch of related stuff.  
							
							... 
							
							
							
							llvm-svn: 75705 
							
						 
						
							2009-07-14 23:10:40 +00:00  
				
					
						
							
							
								 
						
							
								ae86c19e68 
								
							 
						 
						
							
							
								
								Update for LLVM API change.  
							
							... 
							
							
							
							llvm-svn: 75446 
							
						 
						
							2009-07-13 04:10:07 +00:00  
				
					
						
							
							
								 
						
							
								c10c8d3e2b 
								
							 
						 
						
							
							
								
								Update for LLVM API change.  
							
							... 
							
							
							
							llvm-svn: 75028 
							
						 
						
							2009-07-08 19:05:04 +00:00  
				
					
						
							
							
								 
						
							
								9f211fb4fa 
								
							 
						 
						
							
							
								
								Update for LLVM API change.  
							
							... 
							
							
							
							llvm-svn: 74986 
							
						 
						
							2009-07-08 01:29:18 +00:00  
				
					
						
							
							
								 
						
							
								cbc2bcaf17 
								
							 
						 
						
							
							
								
								As an optimization, we maintain a cache of generated  
							
							... 
							
							
							
							___Block_byref_id_object_dispose and ___Block_byref_id_object_copy
functions so that we can simply reuse instead of creating a new one.
Additionally, add an assert to ensure no one yet tries to align a
__block variable beyond the alignment of a pointer as the codegen is
incomplete.
llvm-svn: 72974 
							
						 
						
							2009-06-05 23:26:36 +00:00  
				
					
						
							
							
								 
						
							
								18bb9284ff 
								
							 
						 
						
							
							
								
								Reflow some comments.  
							
							... 
							
							
							
							llvm-svn: 71937 
							
						 
						
							2009-05-16 07:57:57 +00:00  
				
					
						
							
							
								 
						
							
								46813bbfa2 
								
							 
						 
						
							
							
								
								Fix rdar://6880259 - invalid function name in block call (__NSConcreteGlobalBlock2)  
							
							... 
							
							
							
							by using the appropriate CGM interface instead of directly creating a global.
llvm-svn: 71617 
							
						 
						
							2009-05-13 02:50:56 +00:00  
				
					
						
							
							
								 
						
							
								d898026e8a 
								
							 
						 
						
							
							
								
								Don't assert when we think we need copy/dispose, but don't need them.  
							
							... 
							
							
							
							Radar 6838889
llvm-svn: 70525 
							
						 
						
							2009-05-01 01:31:57 +00:00  
				
					
						
							
							
								 
						
							
								324f80b12a 
								
							 
						 
						
							
							
								
								fix a problem producing debug info with global blocks.  
							
							... 
							
							
							
							llvm-svn: 69875 
							
						 
						
							2009-04-23 07:18:56 +00:00  
				
					
						
							
							
								 
						
							
								28ec0cf86c 
								
							 
						 
						
							
							
								
								the logic for computing __func__ and friends is really broken:  
							
							... 
							
							
							
							the type assigned by sema (and is visible with sizeof(__func__) for
example) has nothing to do with what codegen ends up producing.
We should eventually add a method on PredefinedExpr to handle this.
In the meantime, just set up some framework and add some fixme's.
llvm-svn: 69872 
							
						 
						
							2009-04-23 05:30:27 +00:00  
				
					
						
							
							
								 
						
							
								c3e7cff6d3 
								
							 
						 
						
							
							
								
								Attributes on block functions were not being set.  
							
							... 
							
							
							
							- <rdar://problem/6800351> clang not producing correct large struct
   return code for Blocks
llvm-svn: 69337 
							
						 
						
							2009-04-17 00:48:04 +00:00  
				
					
						
							
							
								 
						
							
								3b65ac2696 
								
							 
						 
						
							
							
								
								Fixup codegen for copy/dispose for block literals.  Radar 6791245  
							
							... 
							
							
							
							llvm-svn: 69232 
							
						 
						
							2009-04-15 22:11:36 +00:00  
				
					
						
							
							
								 
						
							
								9074ed8c6a 
								
							 
						 
						
							
							
								
								Set DebugInfo at the beginning of GenerateBlockFunction().  
							
							... 
							
							
							
							llvm-svn: 69228 
							
						 
						
							2009-04-15 21:51:44 +00:00  
				
					
						
							
							
								 
						
							
								0ca1660129 
								
							 
						 
						
							
							
								
								Audit __private_extern__ handling.  
							
							... 
							
							
							
							- Exposed quite a few Sema issues and a CodeGen crash.
 - See FIXMEs in test case, and in SemaDecl.cpp (PR3983).
I'm skeptical that __private_extern__ should actually be a storage
class value. I think that __private_extern__ basically amounts to
  extern A __attribute__((visibility("hidden")))
and would be better off handled (a) as that, or (b) with an extra bit
in the VarDecl.
llvm-svn: 69020 
							
						 
						
							2009-04-14 02:25:56 +00:00  
				
					
						
							
							
								 
						
							
								a4f6b6b180 
								
							 
						 
						
							
							
								
								Minor refactoring of my last patch.  
							
							... 
							
							
							
							llvm-svn: 68870 
							
						 
						
							2009-04-11 18:54:57 +00:00  
				
					
						
							
							
								 
						
							
								aae4349df9 
								
							 
						 
						
							
							
								
								Fixes a ir-gen crash for K&R style blocks.  
							
							... 
							
							
							
							llvm-svn: 68865 
							
						 
						
							2009-04-11 17:55:15 +00:00  
				
					
						
							
							
								 
						
							
								6764593098 
								
							 
						 
						
							
							
								
								Fixup codegen for nested blocks that use copy/dispose in the inner  
							
							... 
							
							
							
							blocks, so that the outer blocks use it as well.  Radar 6762279
llvm-svn: 68811 
							
						 
						
							2009-04-10 18:52:28 +00:00  
				
					
						
							
							
								 
						
							
								479e6fc7a7 
								
							 
						 
						
							
							
								
								Use the new EmitCallArgs function. No indented functionality change.  
							
							... 
							
							
							
							llvm-svn: 68652 
							
						 
						
							2009-04-08 23:13:16 +00:00  
				
					
						
							
							
								 
						
							
								a60cbcdfe6 
								
							 
						 
						
							
							
								
								Don't assume that a block always has a FunctionProtoType. Fixes rdar://6768379.  
							
							... 
							
							
							
							llvm-svn: 68583 
							
						 
						
							2009-04-08 02:55:55 +00:00  
				
					
						
							
							
								 
						
							
								5f50c651e9 
								
							 
						 
						
							
							
								
								Shuffle some call code around. No functionality change.  
							
							... 
							
							
							
							llvm-svn: 68557 
							
						 
						
							2009-04-07 22:10:22 +00:00  
				
					
						
							
							
								 
						
							
								350da60733 
								
							 
						 
						
							
							
								
								Use the new getFunctionInfo that takes a BlockPointerType parameter, and get rid of getBlockFunctionType from CGBlocks.cpp  
							
							... 
							
							
							
							llvm-svn: 68478 
							
						 
						
							2009-04-07 00:20:24 +00:00  
				
					
						
							
							
								 
						
							
								cafa0a9746 
								
							 
						 
						
							
							
								
								Fix block comparisons.  Radar 6732116.  
							
							... 
							
							
							
							llvm-svn: 68171 
							
						 
						
							2009-04-01 01:17:39 +00:00  
				
					
						
							
							
								 
						
							
								09a9b6e335 
								
							 
						 
						
							
							
								
								Move where block-related variables are initialized so that block  
							
							... 
							
							
							
							types don't get generated when blocks aren't used.
llvm-svn: 67898 
							
						 
						
							2009-03-28 03:24:54 +00:00  
				
					
						
							
							
								 
						
							
								871c1f6f88 
								
							 
						 
						
							
							
								
								Remove -f__block as codegen for __block variables should be solid.  
							
							... 
							
							
							
							llvm-svn: 67697 
							
						 
						
							2009-03-25 18:05:39 +00:00  
				
					
						
							
							
								 
						
							
								d2142cffbf 
								
							 
						 
						
							
							
								
								Fixup codegen for block literals that bleed copy/dispose information  
							
							... 
							
							
							
							from previous block literals.
llvm-svn: 67696 
							
						 
						
							2009-03-25 17:58:24 +00:00  
				
					
						
							
							
								 
						
							
								efd7caa825 
								
							 
						 
						
							
							
								
								Fixup codegen for nested block literals so that we generate  
							
							... 
							
							
							
							copy_helpers and dispose_helpers as necessary for them.
llvm-svn: 67453 
							
						 
						
							2009-03-21 21:00:35 +00:00  
				
					
						
							
							
								 
						
							
								692c6e3729 
								
							 
						 
						
							
							
								
								Fix codegen for support for super inside block literal expressions.  
							
							... 
							
							
							
							llvm-svn: 67406 
							
						 
						
							2009-03-20 21:53:12 +00:00  
				
					
						
							
							
								 
						
							
								5469f29aa9 
								
							 
						 
						
							
							
								
								Do up codegen for function static data and externs in functions in block  
							
							... 
							
							
							
							literals.
llvm-svn: 66984 
							
						 
						
							2009-03-13 23:34:28 +00:00  
				
					
						
							
							
								 
						
							
								f807ccc58e 
								
							 
						 
						
							
							
								
								Remove FIXME, issue has been resolved.  
							
							... 
							
							
							
							llvm-svn: 66931 
							
						 
						
							2009-03-13 19:38:54 +00:00  
				
					
						
							
							
								 
						
							
								c4b30e596c 
								
							 
						 
						
							
							
								
								Fix <rdar://problem/6675489> BlockDecl should not use llvm::smallvector.  
							
							... 
							
							
							
							Also changed BlockDecl API to be more consistent (wrt FunctionDecl).
llvm-svn: 66904 
							
						 
						
							2009-03-13 16:56:44 +00:00  
				
					
						
							
							
								 
						
							
								a61bb4d198 
								
							 
						 
						
							
							
								
								Fix uninitialized use in GetAddrOfGlobalBlock, reenable assert.  
							
							... 
							
							
							
							- Mike, please verify.
llvm-svn: 66762 
							
						 
						
							2009-03-12 03:07:24 +00:00  
				
					
						
							
							
								 
						
							
								de373a033f 
								
							 
						 
						
							
							
								
								If someone could figure out this is necessary, that would be good.  
							
							... 
							
							
							
							llvm-svn: 66341 
							
						 
						
							2009-03-07 16:32:25 +00:00  
				
					
						
							
							
								 
						
							
								d9728222a4 
								
							 
						 
						
							
							
								
								Fix typo, need parens.  
							
							... 
							
							
							
							llvm-svn: 66337 
							
						 
						
							2009-03-07 14:53:10 +00:00  
				
					
						
							
							
								 
						
							
								1ab20cae19 
								
							 
						 
						
							
							
								
								Remove last FIXME for block literal codegen that I know about and turn  
							
							... 
							
							
							
							on all the new code by default.  There is still plenty of testing to
do and issues I'm sure need resolving.  Let me know if you find
anything.
llvm-svn: 66323 
							
						 
						
							2009-03-07 06:16:52 +00:00  
				
					
						
							
							
								 
						
							
								90d8daf592 
								
							 
						 
						
							
							
								
								Remove some FIXMEs for block literals that should be close to working.  
							
							... 
							
							
							
							llvm-svn: 66322 
							
						 
						
							2009-03-07 06:04:31 +00:00  
				
					
						
							
							
								 
						
							
								6f7d9f8774 
								
							 
						 
						
							
							
								
								codegen support for dispose helpers for block literals.  
							
							... 
							
							
							
							llvm-svn: 66320 
							
						 
						
							2009-03-07 02:53:18 +00:00  
				
					
						
							
							
								 
						
							
								aeb0ffd56c 
								
							 
						 
						
							
							
								
								Codegen support for copy helpers for block literals.  
							
							... 
							
							
							
							llvm-svn: 66319 
							
						 
						
							2009-03-07 02:35:30 +00:00  
				
					
						
							
							
								 
						
							
								d6ef62f0bf 
								
							 
						 
						
							
							
								
								Pass the type of the block literal around to make required temporal ordering of code clearer.  
							
							... 
							
							
							
							llvm-svn: 66284 
							
						 
						
							2009-03-06 18:42:23 +00:00  
				
					
						
							
							
								 
						
							
								f89230d93b 
								
							 
						 
						
							
							
								
								Complete __Block_byref_id_object_copy cogegen for block literals.  
							
							... 
							
							
							
							llvm-svn: 66257 
							
						 
						
							2009-03-06 06:12:24 +00:00  
				
					
						
							
							
								 
						
							
								fbe25dd1e4 
								
							 
						 
						
							
							
								
								Finish off __Block_byref_id_object_dispose codegen for block literals.  
							
							... 
							
							
							
							llvm-svn: 66247 
							
						 
						
							2009-03-06 04:53:30 +00:00  
				
					
						
							
							
								 
						
							
								846bf9a797 
								
							 
						 
						
							
							
								
								Remove extra arg.  
							
							... 
							
							
							
							llvm-svn: 66243 
							
						 
						
							2009-03-06 02:45:21 +00:00  
				
					
						
							
							
								 
						
							
								ee2a5ee5f7 
								
							 
						 
						
							
							
								
								More codegen support for the copy/dispose helpers for block literals.  
							
							... 
							
							
							
							llvm-svn: 66241 
							
						 
						
							2009-03-06 02:29:21 +00:00  
				
					
						
							
							
								 
						
							
								0c74327715 
								
							 
						 
						
							
							
								
								Framework for codegen for copy/dispose helpers.  
							
							... 
							
							
							
							llvm-svn: 66231 
							
						 
						
							2009-03-06 01:33:24 +00:00  
				
					
						
							
							
								 
						
							
								4446dcf061 
								
							 
						 
						
							
							
								
								prep work for copy/destroy helpers for block literals.  
							
							... 
							
							
							
							llvm-svn: 66159 
							
						 
						
							2009-03-05 08:32:30 +00:00  
				
					
						
							
							
								 
						
							
								626aecc4be 
								
							 
						 
						
							
							
								
								Add codegen support for __block variables to call _Block_object_dispose as necessary.  
							
							... 
							
							
							
							llvm-svn: 66117 
							
						 
						
							2009-03-05 01:23:13 +00:00  
				
					
						
							
							
								 
						
							
								2d33d6300c 
								
							 
						 
						
							
							
								
								Fixup __block codegen in nested block literals.  
							
							... 
							
							
							
							llvm-svn: 66091 
							
						 
						
							2009-03-04 22:48:06 +00:00  
				
					
						
							
							
								 
						
							
								06acea8a69 
								
							 
						 
						
							
							
								
								Move some of the CodeGenFunction blocks code up and out.  No  
							
							... 
							
							
							
							functionality change.
llvm-svn: 66048 
							
						 
						
							2009-03-04 18:57:26 +00:00  
				
					
						
							
							
								 
						
							
								6c39666a77 
								
							 
						 
						
							
							
								
								Move more of the blocks code up and out.  
							
							... 
							
							
							
							llvm-svn: 66046 
							
						 
						
							2009-03-04 18:47:42 +00:00  
				
					
						
							
							
								 
						
							
								95435674f9 
								
							 
						 
						
							
							
								
								Move more of blocks codegen out of CodeGenModule and into the  
							
							... 
							
							
							
							BlockModule.  No functionality change.  This should help people that
don't want to know anything about blocks not be confused by the
overloaded use of the term block or nor want to see all the blocks
goop.
llvm-svn: 66042 
							
						 
						
							2009-03-04 18:17:45 +00:00  
				
					
						
							
							
								 
						
							
								0874160bd5 
								
							 
						 
						
							
							
								
								Add __block codegen testcase.  We introduce a temporary flag to enable  
							
							... 
							
							
							
							codegen, until such time as codegen is complete enough to turn on with
-fblocks.
llvm-svn: 66031 
							
						 
						
							2009-03-04 13:17:22 +00:00  
				
					
						
							
							
								 
						
							
								97d01d50d9 
								
							 
						 
						
							
							
								
								Improved ABI compliance for __block variables.  No testcases yet as we  
							
							... 
							
							
							
							still give an unsupported error for them due to the fact this is a
work in progress.
llvm-svn: 66007 
							
						 
						
							2009-03-04 03:23:46 +00:00  
				
					
						
							
							
								 
						
							
								dd9427133a 
								
							 
						 
						
							
							
								
								Avoid crash when child iterator gives null result.  
							
							... 
							
							
							
							llvm-svn: 65812 
							
						 
						
							2009-03-02 07:00:57 +00:00  
				
					
						
							
							
								 
						
							
								0e425b8200 
								
							 
						 
						
							
							
								
								Push checking down, also, give the user a hit as to which part of the  
							
							... 
							
							
							
							block literal is causing the problem, instead of the vague reference
to the entire block literal.
llvm-svn: 65798 
							
						 
						
							2009-03-02 03:04:42 +00:00  
				
					
						
							
							
								 
						
							
								5878c797b3 
								
							 
						 
						
							
							
								
								Add BLOCK_HAS_DESCRIPTOR to global blocks.  
							
							... 
							
							
							
							llvm-svn: 65788 
							
						 
						
							2009-03-01 21:09:29 +00:00  
				
					
						
							
							
								 
						
							
								3a139f3793 
								
							 
						 
						
							
							
								
								Be sure to mark blocks with no imports as being global.  
							
							... 
							
							
							
							llvm-svn: 65784 
							
						 
						
							2009-03-01 20:07:53 +00:00  
				
					
						
							
							
								 
						
							
								3113eedc8a 
								
							 
						 
						
							
							
								
								Remove debugging code.  
							
							... 
							
							
							
							llvm-svn: 65753 
							
						 
						
							2009-03-01 02:12:54 +00:00  
				
					
						
							
							
								 
						
							
								961763e35a 
								
							 
						 
						
							
							
								
								Emit errors about unsupported blocks features.  
							
							... 
							
							
							
							llvm-svn: 65751 
							
						 
						
							2009-03-01 01:45:25 +00:00  
				
					
						
							
							
								 
						
							
								ed5e69fe50 
								
							 
						 
						
							
							
								
								Do some blocks cleanup and simplification. Fix a crash, and add a test case.  
							
							... 
							
							
							
							llvm-svn: 65746 
							
						 
						
							2009-03-01 01:09:12 +00:00  
				
					
						
							
							
								 
						
							
								3385fe12ce 
								
							 
						 
						
							
							
								
								improve compatibility with the VC++'08 C++ compiler.  Patch by  
							
							... 
							
							
							
							Niklas Larsson!
llvm-svn: 65706 
							
						 
						
							2009-02-28 19:01:03 +00:00  
				
					
						
							
							
								 
						
							
								1db7d04b71 
								
							 
						 
						
							
							
								
								First cut CodeGen support for __block variables.  
							
							... 
							
							
							
							llvm-svn: 65688 
							
						 
						
							2009-02-28 09:07:16 +00:00  
				
					
						
							
							
								 
						
							
								deaad8cc34 
								
							 
						 
						
							
							
								
								Create a new TypeNodes.def file that enumerates all of the types,  
							
							... 
							
							
							
							giving them rough classifications (normal types, never-canonical
types, always-dependent types, abstract type representations) and
making it far easier to make sure that we've hit all of the cases when
decoding types. 
Switched some switch() statements on the type class over to using this
mechanism, and filtering out those things we don't care about. For
example, CodeGen should never see always-dependent or non-canonical
types, while debug info generation should never see always-dependent
types. More switch() statements on the type class need to be moved 
over to using this approach, so that we'll get warnings when we add a
new type then fail to account for it somewhere in the compiler.
As part of this, some types have been renamed:
  TypeOfExpr -> TypeOfExprType
  FunctionTypeProto -> FunctionProtoType
  FunctionTypeNoProto -> FunctionNoProtoType
There shouldn't be any functionality change...
llvm-svn: 65591 
							
						 
						
							2009-02-26 23:50:07 +00:00  
				
					
						
							
							
								 
						
							
								b750d928ce 
								
							 
						 
						
							
							
								
								CodeGen support for copied BlockDeclRefExprs.  
							
							... 
							
							
							
							llvm-svn: 65487 
							
						 
						
							2009-02-25 23:33:13 +00:00  
				
					
						
							
							
								 
						
							
								b9c9e1d16f 
								
							 
						 
						
							
							
								
								Pass the CodeGenModule object to GenerateBlockFunction, instead of *this (which will call the copy constructor).  
							
							... 
							
							
							
							Also, since we're creating a new CodeGenFunction object for each block function, we don't need to clear the BreakContinueStack.
llvm-svn: 65371 
							
						 
						
							2009-02-24 04:19:41 +00:00  
				
					
						
							
							
								 
						
							
								18e91257e4 
								
							 
						 
						
							
							
								
								Ensure that we can't break or continue out of a block.  
							
							... 
							
							
							
							llvm-svn: 65370 
							
						 
						
							2009-02-24 02:59:30 +00:00  
				
					
						
							
							
								 
						
							
								624497c29a 
								
							 
						 
						
							
							
								
								Cleanp code with some recent suggestions.  
							
							... 
							
							
							
							llvm-svn: 65285 
							
						 
						
							2009-02-22 13:27:11 +00:00  
				
					
						
							
							
								 
						
							
								2ac40a9ff8 
								
							 
						 
						
							
							
								
								The blocks ABI is wrong, add a FIXME.  
							
							... 
							
							
							
							llvm-svn: 65243 
							
						 
						
							2009-02-21 20:07:44 +00:00  
				
					
						
							
							
								 
						
							
								cb2fbcb0c9 
								
							 
						 
						
							
							
								
								Add CodeGen support for the helper for BlockDeclRefExprs.  The easier  
							
							... 
							
							
							
							stuff is mostly done.  Move BlockHasCopyDispose up.
llvm-svn: 65242 
							
						 
						
							2009-02-21 20:00:35 +00:00  
				
					
						
							
							
								 
						
							
								5d2534ada7 
								
							 
						 
						
							
							
								
								More codegen for blocks.  The type of block literals should be better.  
							
							... 
							
							
							
							The size calculation is improved.
llvm-svn: 64994 
							
						 
						
							2009-02-19 01:01:04 +00:00  
				
					
						
							
							
								 
						
							
								eecd39f2d7 
								
							 
						 
						
							
							
								
								Avoid getNameAsCString when the decl doesn't have a name.  
							
							... 
							
							
							
							Build of the parm list with the iterator, not end().
llvm-svn: 64851 
							
						 
						
							2009-02-17 23:25:52 +00:00  
				
					
						
							
							
								 
						
							
								03868f4ea0 
								
							 
						 
						
							
							
								
								Be sure to initialize Name.  
							
							... 
							
							
							
							llvm-svn: 64769 
							
						 
						
							2009-02-17 17:18:36 +00:00  
				
					
						
							
							
								 
						
							
								0e7d7b68c8 
								
							 
						 
						
							
							
								
								Use getNameAsCString instead of getNameAsString and reflow the type.  
							
							... 
							
							
							
							Thanks Anders.
llvm-svn: 64571 
							
						 
						
							2009-02-14 22:49:33 +00:00  
				
					
						
							
							
								 
						
							
								2d5a2878d4 
								
							 
						 
						
							
							
								
								Generate the helper function for blocks.  Now basic codegen is  
							
							... 
							
							
							
							starting to work for blocks.
llvm-svn: 64570 
							
						 
						
							2009-02-14 22:16:35 +00:00  
				
					
						
							
							
								 
						
							
								499ae7ec91 
								
							 
						 
						
							
							
								
								Let the backend unique these.  
							
							... 
							
							
							
							llvm-svn: 64486 
							
						 
						
							2009-02-13 20:17:16 +00:00  
				
					
						
							
							
								 
						
							
								52d9c49d88 
								
							 
						 
						
							
							
								
								Fix spelling.  
							
							... 
							
							
							
							llvm-svn: 64482 
							
						 
						
							2009-02-13 19:38:12 +00:00  
				
					
						
							
							
								 
						
							
								2c867aec40 
								
							 
						 
						
							
							
								
								Move DescriptorUniqueCount into CGM.  
							
							... 
							
							
							
							llvm-svn: 64481 
							
						 
						
							2009-02-13 19:36:03 +00:00  
				
					
						
							
							
								 
						
							
								7ab278db06 
								
							 
						 
						
							
							
								
								Move NSConcreteStackBlock into CGM.  
							
							... 
							
							
							
							llvm-svn: 64479 
							
						 
						
							2009-02-13 19:29:27 +00:00  
				
					
						
							
							
								 
						
							
								10a451cb36 
								
							 
						 
						
							
							
								
								Eliminate an unused variable  
							
							... 
							
							
							
							llvm-svn: 64476 
							
						 
						
							2009-02-13 19:13:32 +00:00  
				
					
						
							
							
								 
						
							
								9319db8a11 
								
							 
						 
						
							
							
								
								Move GlobalUniqueCount up into CGM.  
							
							... 
							
							
							
							llvm-svn: 64473 
							
						 
						
							2009-02-13 18:36:05 +00:00  
				
					
						
							
							
								 
						
							
								971f9b6619 
								
							 
						 
						
							
							
								
								Condense NSConcreteGlobalBlock handling.  
							
							... 
							
							
							
							llvm-svn: 64461 
							
						 
						
							2009-02-13 17:23:42 +00:00  
				
					
						
							
							
								 
						
							
								52197c7763 
								
							 
						 
						
							
							
								
								Calculate size correctly.  
							
							... 
							
							
							
							llvm-svn: 64459 
							
						 
						
							2009-02-13 17:03:17 +00:00  
				
					
						
							
							
								 
						
							
								c2c38331ca 
								
							 
						 
						
							
							
								
								Size should be unsigned.  
							
							... 
							
							
							
							llvm-svn: 64458 
							
						 
						
							2009-02-13 16:55:51 +00:00  
				
					
						
							
							
								 
						
							
								85284bacab 
								
							 
						 
						
							
							
								
								Condense all the blocks code into CGBlocks.cpp.  
							
							... 
							
							
							
							llvm-svn: 64457 
							
						 
						
							2009-02-13 16:19:19 +00:00  
				
					
						
							
							
								 
						
							
								92bbd6d435 
								
							 
						 
						
							
							
								
								Fixup types, the runtime uses int, not int32.  
							
							... 
							
							
							
							llvm-svn: 64456 
							
						 
						
							2009-02-13 16:01:35 +00:00  
				
					
						
							
							
								 
						
							
								b7074c0013 
								
							 
						 
						
							
							
								
								Fixup spacing a tad.  
							
							... 
							
							
							
							llvm-svn: 64454 
							
						 
						
							2009-02-13 15:32:32 +00:00  
				
					
						
							
							
								 
						
							
								005c9a62b5 
								
							 
						 
						
							
							
								
								Move GenericBlockLiteralType into CGM.  
							
							... 
							
							
							
							llvm-svn: 64452 
							
						 
						
							2009-02-13 15:25:34 +00:00  
				
					
						
							
							
								 
						
							
								650c932d80 
								
							 
						 
						
							
							
								
								Move BlockDescriptorType into CGM.  
							
							... 
							
							
							
							llvm-svn: 64451 
							
						 
						
							2009-02-13 15:16:56 +00:00  
				
					
						
							
							
								 
						
							
								6a60fa2428 
								
							 
						 
						
							
							
								
								Add a very basic implemenation of global blocks. This needs to be cleaned up.  
							
							... 
							
							
							
							llvm-svn: 64387 
							
						 
						
							2009-02-12 17:55:02 +00:00  
				
					
						
							
							
								 
						
							
								2437cbfa3b 
								
							 
						 
						
							
							
								
								Add support for generating block call expressions.  
							
							... 
							
							
							
							llvm-svn: 64346 
							
						 
						
							2009-02-12 00:39:25 +00:00