Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								6668fc60be 
								
							 
						 
						
							
							
								
								Use a cache in TypedefDecl to make ASTContext::getTypedefType trivial.  
							
							 
							
							... 
							
							
							
							This speeds up parsing carbon.h from 16.0s to 11.3s, reducing slow
lookups from 63K to 32K.
llvm-svn: 39308 
							
						 
						
							2007-01-26 02:07:07 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								32d920b8dc 
								
							 
						 
						
							
							
								
								rename some classes, no functionality changes.  
							
							 
							
							... 
							
							
							
							llvm-svn: 39307 
							
						 
						
							2007-01-26 02:01:53 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								733067d20a 
								
							 
						 
						
							
							
								
								TagDecl now holds a cache for the type corresponding to it.  This speeds up  
							
							 
							
							... 
							
							
							
							ASTContext::getTagDeclType by not having to do a linear search.  With this,
parse time for carbon.h drops from 21.8s to 16.0s and # slow lookups drop from
83K to 63K.
llvm-svn: 39306 
							
						 
						
							2007-01-26 01:42:24 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								4eb445d2a1 
								
							 
						 
						
							
							
								
								start gather stats on types processed.  carbon.h currently yields:  
							
							 
							
							... 
							
							
							
							*** AST Context Stats:
  30594 types total.
    19 builtin types
    3929 pointer types
    308 array types
    18883 function types with proto
    8 function types with no proto
    2988 typename (typedef) types
    4459 tagged types
      1476 struct types
      80 union types
      0 class types
      2903 enum types
  83298 slow type lookups
Next up, making type canonicalization not trivially silly.
llvm-svn: 39305 
							
						 
						
							2007-01-26 01:27:23 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								fb072463e5 
								
							 
						 
						
							
							
								
								Add TaggedType, which represents tagged decls as types.  Create these when  
							
							 
							
							... 
							
							
							
							converting a declspec with TST = struct/union.  Pretty print as well.
llvm-svn: 39284 
							
						 
						
							2007-01-23 05:45:31 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								d0ee402a43 
								
							 
						 
						
							
							
								
								Make name lookup properly obey C namespaces, simplify decl construction byeliminating the 'next' pointer from the ctor, and add initial support forparsing struct/union tags.  
							
							 
							
							... 
							
							
							
							llvm-svn: 39266 
							
						 
						
							2007-01-22 07:39:30 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								726f97b435 
								
							 
						 
						
							
							
								
								implement a fixme: make BuiltinType have an enum, specifying which type it is,  
							
							 
							
							... 
							
							
							
							instead of having a string.
llvm-svn: 39237 
							
						 
						
							2006-12-03 02:57:32 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								c6ad8131dd 
								
							 
						 
						
							
							
								
								implement AST representation for function types with and without a prototype.  
							
							 
							
							... 
							
							
							
							This lets us pretty print stuff like this:
void foo() {
  int X;
  X = sizeof(void (*(*)())());
  X = sizeof(int(*)(int, float, ...));
  X = sizeof(void (*(int arga, void (*argb)(double Y)))(void* Z));
as:
  X = sizeof(void (*(*)())())
  X = sizeof(int (*)(int, float, ...))
  X = sizeof(void (*(int, void (*)(double)))(void *))
Ah the wonders of 'modern' C syntax!
llvm-svn: 39232 
							
						 
						
							2006-12-02 07:52:18 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								d0342e5989 
								
							 
						 
						
							
							
								
								Create a new TypeNameType class, which represents typedefs as types.  This  
							
							 
							
							... 
							
							
							
							allows us to handle stuff like:
typedef int G;
 ..
  X = sizeof(G);
llvm-svn: 39189 
							
						 
						
							2006-11-20 04:02:15 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								7ccecb90d4 
								
							 
						 
						
							
							
								
								Implement parsing, printing and AST'ing of array types (except for the bounds).  
							
							 
							
							... 
							
							
							
							This allows us to handle:
int (*A)[restrict static 4][6];
for example.
llvm-svn: 39176 
							
						 
						
							2006-11-12 08:50:50 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								47814666e1 
								
							 
						 
						
							
							
								
								Implement and use isa/dyncast/cast etc for Type classes.  
							
							 
							
							... 
							
							
							
							llvm-svn: 39175 
							
						 
						
							2006-11-12 00:56:20 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								d5973ebbe2 
								
							 
						 
						
							
							
								
								Teach ASTContext to delete all created types in its dtor.  
							
							 
							
							... 
							
							
							
							Teach getPointerType to (stupidly) memoize all created pointers.
Give types an enum so we can implement classof.
llvm-svn: 39174 
							
						 
						
							2006-11-12 00:53:46 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								970e54e3ac 
								
							 
						 
						
							
							
								
								Build ASTs for the pointer qualifiers on declarators.  This allows us to  
							
							 
							
							... 
							
							
							
							parse (and print) things like:
int* const* restrict* const volatile***
etc.
llvm-svn: 39173 
							
						 
						
							2006-11-12 00:37:36 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								f84a79c4e9 
								
							 
						 
						
							
							
								
								restructure code to build the framework for creating types from declarators.  
							
							 
							
							... 
							
							
							
							llvm-svn: 39166 
							
						 
						
							2006-11-11 22:59:23 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								ef51c20065 
								
							 
						 
						
							
							
								
								add the builtin types  
							
							 
							
							... 
							
							
							
							llvm-svn: 39164 
							
						 
						
							2006-11-10 07:17:23 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								ddc135e593 
								
							 
						 
						
							
							
								
								Let ASTContext hold target info, since it's useful  
							
							 
							
							... 
							
							
							
							llvm-svn: 39162 
							
						 
						
							2006-11-10 06:34:16 +00:00