146762e7a4 
								
							 
						 
						
							
							
								
								At one point there were going to be lexer and parser tokens.  
							
							... 
							
							
							
							Since that point is now long gone, we should rename LexerToken to
Token, as it is the only kind of token we have.
llvm-svn: 40105 
							
						 
						
							2007-07-20 16:59:19 +00:00  
				
					
						
							
							
								 
						
							
								77e9de50a1 
								
							 
						 
						
							
							
								
								simplify the lexer ctor to take a SLoc instead of a sloc and a redundant buffer*.  
							
							... 
							
							
							
							llvm-svn: 40104 
							
						 
						
							2007-07-20 16:52:03 +00:00  
				
					
						
							
							
								 
						
							
								dc5c055fd1 
								
							 
						 
						
							
							
								
								Reimplement SourceLocation.  Instead of having a  
							
							... 
							
							
							
							fileid/offset pair, it now contains a bit discriminating between
mapped locations and file locations.  This separates the tables for
macros and files in SourceManager, and allows better separation of
concepts in the rest of the compiler.  This allows us to have *many*
macro instantiations before running out of 'addressing space'.
This is also more efficient, because testing whether something is a
macro expansion is now a bit test instead of a table lookup (which
also used to require having a srcmgr around, now it doesn't).
This is fully functional, but there are several refinements and
optimizations left.
llvm-svn: 40103 
							
						 
						
							2007-07-20 16:37:10 +00:00  
				
					
						
							
							
								 
						
							
								24dbee71ab 
								
							 
						 
						
							
							
								
								Fix a stringizing bug that Neil noticed.  We should preprocess this:  
							
							... 
							
							
							
							#define t(x) #x
t(a
c)
to "a c", not "ac".
llvm-svn: 40060 
							
						 
						
							2007-07-19 16:11:58 +00:00  
				
					
						
							
							
								 
						
							
								5c98379b1c 
								
							 
						 
						
							
							
								
								Correctly respect C99 5.1.1.2p4 when searching for the first '(' of  
							
							... 
							
							
							
							a function-like macro invocation.  Patch contributed by Neil Booth.
llvm-svn: 40026 
							
						 
						
							2007-07-19 00:07:36 +00:00  
				
					
						
							
							
								 
						
							
								8a7003cd9f 
								
							 
						 
						
							
							
								
								Add a new Preprocessor::AdvanceToTokenCharacter method which, given a sloc  
							
							... 
							
							
							
							specifying the start of a token and a logical (phase 3) character number,
returns a sloc representing the input character corresponding to it.
llvm-svn: 39905 
							
						 
						
							2007-07-16 06:48:38 +00:00  
				
					
						
							
							
								 
						
							
								c02c4abe5b 
								
							 
						 
						
							
							
								
								Cache macro expander objects to avoid thrashing malloc in heavy expansion situations.  
							
							... 
							
							
							
							This doesn't significantly improve carbon.h, but it does speed up
INPUTS/macro_pounder_obj.c by 48%
llvm-svn: 39864 
							
						 
						
							2007-07-15 00:25:26 +00:00  
				
					
						
							
							
								 
						
							
								564f478595 
								
							 
						 
						
							
							
								
								switch function-like macros from using a vector for their arguments to an  
							
							... 
							
							
							
							explicitly new'd array.  The array never mutates once created, so a vector
is overkill.
llvm-svn: 39862 
							
						 
						
							2007-07-14 22:46:43 +00:00  
				
					
						
							
							
								 
						
							
								f40fe99118 
								
							 
						 
						
							
							
								
								expose an iterator interface to getReplacementTokens instead of the datastructure itself.  
							
							... 
							
							
							
							llvm-svn: 39860 
							
						 
						
							2007-07-14 22:11:41 +00:00  
				
					
						
							
							
								 
						
							
								a3834341c5 
								
							 
						 
						
							
							
								
								split function-like and object-like macro body parsing to make the  
							
							... 
							
							
							
							code more obvious.
llvm-svn: 39859 
							
						 
						
							2007-07-14 21:54:03 +00:00  
				
					
						
							
							
								 
						
							
								f9aba2c2b4 
								
							 
						 
						
							
							
								
								remove use of alloca.  
							
							... 
							
							
							
							llvm-svn: 39815 
							
						 
						
							2007-07-13 17:10:38 +00:00  
				
					
						
							
							
								 
						
							
								441b3d47be 
								
							 
						 
						
							
							
								
								Solaris needs an included header for alloca  
							
							... 
							
							
							
							llvm-svn: 39797 
							
						 
						
							2007-07-13 08:21:39 +00:00  
				
					
						
							
							
								 
						
							
								23b7eb677d 
								
							 
						 
						
							
							
								
								Finally bite the bullet and make the major change: split the clang namespace  
							
							... 
							
							
							
							out of the llvm namespace.  This makes the clang namespace be a sibling of
llvm instead of being a child.
The good thing about this is that it makes many things unambiguous.  The
bad things is that many things in the llvm namespace (notably data structures
like smallvector) now require an llvm:: qualifier.  IMO, libsystem and libsupport
should be split out of llvm into their own namespace in the future, which will fix
this issue.
llvm-svn: 39659 
							
						 
						
							2007-06-15 23:05:46 +00:00  
				
					
						
							
							
								 
						
							
								53621a535d 
								
							 
						 
						
							
							
								
								Implement support for formal arguments.  We can now compile this:  
							
							... 
							
							
							
							int test(int X, short Y, float Z) {
  return (int)(X*Y+Z);
}
to:
define i32 @test(i32 %X, i16 %Y, float %Z) {
entry:
        %promote = sext i16 %Y to i32           ; <i32> [#uses=1]
        %mul = mul i32 %promote, %X             ; <i32> [#uses=1]
        %promote3 = sitofp i32 %mul to float            ; <float> [#uses=1]
        %add = add float %promote3, %Z          ; <float> [#uses=1]
        %conv = fptosi float %add to i32                ; <i32> [#uses=1]
        ret i32 %conv
}
with:
$ clang -emit-llvm t.c | llvm-as | opt -std-compile-opts | llvm-dis
llvm-svn: 39652 
							
						 
						
							2007-06-13 20:44:40 +00:00  
				
					
						
							
							
								 
						
							
								a8fd973aa0 
								
							 
						 
						
							
							
								
								Bug #:  
							
							... 
							
							
							
							Submitted by:
Reviewed by:
Implement semantic analysis for vector_size attribute!
We now produce the following diagnostics...
[administrators-powerbook59:~/llvm/tools/clang] admin% ../../Debug/bin/clang vector.c
vector.c:2:29: error: attribute requires precisely 1 argument
typedef int __attribute__(( vector_size )) tVecp;
                            ^
vector.c:7:32: error: attribute requires precisely 1 argument
extern int foo __attribute__(( vector_size ));
                               ^
vector.c:8:34: error: attribute requires precisely 1 argument
extern float bar __attribute__(( vector_size(16,18) ));
                                 ^
vector.c:11:34: error: vector_size requires integer constant (attribute ignored)
extern char foo2 __attribute__(( vector_size(16.2) ));
                                 ^           ~~~~
vector.c:21:47: error: invalid vector type 'struct s'
struct s { int a; } structVar __attribute__(( vector_size(16) ));
llvm-svn: 39643 
							
						 
						
							2007-06-11 00:35:03 +00:00  
				
					
						
							
							
								 
						
							
								36982e4367 
								
							 
						 
						
							
							
								
								Add support for inserting up to 10 strings in a diagnostic, with %0, %1, %2,  
							
							... 
							
							
							
							etc.
llvm-svn: 39447 
							
						 
						
							2007-05-16 17:49:37 +00:00  
				
					
						
							
							
								 
						
							
								739e739b81 
								
							 
						 
						
							
							
								
								Remove the clang::SourceBuffer class, switch to the llvm::MemoryBuffer class.  
							
							... 
							
							
							
							llvm-svn: 39426 
							
						 
						
							2007-04-29 07:12:06 +00:00  
				
					
						
							
							
								 
						
							
								7c718bd5a4 
								
							 
						 
						
							
							
								
								Include the filename being looked up in an error message.  This gives us stuff  
							
							... 
							
							
							
							like this:
t3.c:5:10: error: 'vers2.h' file not found
#include xstr(INCFILE(2).h)
         ^
instead of:
t3.c:5:10: error: file not found
#include xstr(INCFILE(2).h)
         ^
which is useful if the #include name is generated through macro expansion.
llvm-svn: 39398 
							
						 
						
							2007-04-10 06:02:46 +00:00  
				
					
						
							
							
								 
						
							
								b055f2ddfc 
								
							 
						 
						
							
							
								
								switch to using iterators instead of stringmap visitors.  
							
							... 
							
							
							
							llvm-svn: 39336 
							
						 
						
							2007-02-11 08:19:57 +00:00  
				
					
						
							
							
								 
						
							
								54d032bb76 
								
							 
						 
						
							
							
								
								CStringMap -> StringMap.  
							
							... 
							
							
							
							llvm-svn: 39334 
							
						 
						
							2007-02-08 19:24:25 +00:00  
				
					
						
							
							
								 
						
							
								34d1f5a8de 
								
							 
						 
						
							
							
								
								adjust to CStringMap interface change.  
							
							... 
							
							
							
							llvm-svn: 39333 
							
						 
						
							2007-02-08 19:08:49 +00:00  
				
					
						
							
							
								 
						
							
								652c16924e 
								
							 
						 
						
							
							
								
								Produce a nice error message for '#define and' in C++.  Patch by Bill!  
							
							... 
							
							
							
							llvm-svn: 39218 
							
						 
						
							2006-11-21 23:47:30 +00:00  
				
					
						
							
							
								 
						
							
								2bb8a95389 
								
							 
						 
						
							
							
								
								eliminate string compares when checking for the 'defined' token.  
							
							... 
							
							
							
							llvm-svn: 39216 
							
						 
						
							2006-11-21 22:24:17 +00:00  
				
					
						
							
							
								 
						
							
								5b9f4891d7 
								
							 
						 
						
							
							
								
								Add support for C++ operator keywords.  Patch by Bill Wendling.  
							
							... 
							
							
							
							llvm-svn: 39214 
							
						 
						
							2006-11-21 17:23:33 +00:00  
				
					
						
							
							
								 
						
							
								b352e3edb5 
								
							 
						 
						
							
							
								
								Change KeepComments/KeepMacroComments modes to be facets of the preprocessor  
							
							... 
							
							
							
							state, not aspects of the language standard being parsed.
llvm-svn: 39209 
							
						 
						
							2006-11-21 06:17:10 +00:00  
				
					
						
							
							
								 
						
							
								ad7cdd37b3 
								
							 
						 
						
							
							
								
								simplify the Preprocessor ctor.  
							
							... 
							
							
							
							llvm-svn: 39208 
							
						 
						
							2006-11-21 06:08:20 +00:00  
				
					
						
							
							
								 
						
							
								b8d6d5a81d 
								
							 
						 
						
							
							
								
								Formalize preprocessor callbacks together into a PPCallbacks structure, instead  
							
							... 
							
							
							
							of having a loose collection of function pointers.  This also allows clients to
maintain state, and reduces the size of the Preprocessor.h interface.
llvm-svn: 39203 
							
						 
						
							2006-11-21 04:09:30 +00:00  
				
					
						
							
							
								 
						
							
								cf6bc66421 
								
							 
						 
						
							
							
								
								silence some warnings when asserts are disabled.  
							
							... 
							
							
							
							llvm-svn: 39127 
							
						 
						
							2006-11-05 07:59:08 +00:00  
				
					
						
							
							
								 
						
							
								c07ba1fe2f 
								
							 
						 
						
							
							
								
								Refactor the paths used for checking and getting the spelling of #include  
							
							... 
							
							
							
							filenames (and also '#pragma GCC dependency' of course).  Now, assuming
no cleaning is needed, we can go all the way from lexing the filename to
doing filename lookups with no mallocs.  This speeds up user PP time from
0.077 to 0.075s for Cocoa.h (2.6%).
llvm-svn: 39092 
							
						 
						
							2006-10-30 05:58:32 +00:00  
				
					
						
							
							
								 
						
							
								b8b94f1e9b 
								
							 
						 
						
							
							
								
								Make Preprocessor::LookupFile take a character range instead of a string.  
							
							... 
							
							
							
							This avoids some copying in its clients.
llvm-svn: 39091 
							
						 
						
							2006-10-30 05:38:06 +00:00  
				
					
						
							
							
								 
						
							
								7cdbad945d 
								
							 
						 
						
							
							
								
								Push strings out of the HeaderSearch interface, it now deals solely with  
							
							... 
							
							
							
							character ranges.
llvm-svn: 39090 
							
						 
						
							2006-10-30 05:33:15 +00:00  
				
					
						
							
							
								 
						
							
								2b9e19be87 
								
							 
						 
						
							
							
								
								Pull the string hashtable out of the IdentifierTable, moving into LLVM's  
							
							... 
							
							
							
							libsupport.  Now it can be used for other things besides identifier hashing.
llvm-svn: 39079 
							
						 
						
							2006-10-29 23:43:13 +00:00  
				
					
						
							
							
								 
						
							
								bcb416bbd5 
								
							 
						 
						
							
							
								
								Implement test/Preprocessor/comment_save_if.c  
							
							... 
							
							
							
							llvm-svn: 39069 
							
						 
						
							2006-10-27 05:43:50 +00:00  
				
					
						
							
							
								 
						
							
								07b019a1bc 
								
							 
						 
						
							
							
								
								add #include  
							
							... 
							
							
							
							llvm-svn: 39034 
							
						 
						
							2006-10-22 07:28:56 +00:00  
				
					
						
							
							
								 
						
							
								5c683b2b4b 
								
							 
						 
						
							
							
								
								Fix a regression introduced when adding subframework support  
							
							... 
							
							
							
							llvm-svn: 39022 
							
						 
						
							2006-10-20 05:12:14 +00:00  
				
					
						
							
							
								 
						
							
								62aa0d4c9f 
								
							 
						 
						
							
							
								
								Implement test/Preprocessor/macro_arg_keyword.c  
							
							... 
							
							
							
							llvm-svn: 39021 
							
						 
						
							2006-10-20 05:08:24 +00:00  
				
					
						
							
							
								 
						
							
								63dd32b656 
								
							 
						 
						
							
							
								
								Implement subframework lookup  
							
							... 
							
							
							
							llvm-svn: 39015 
							
						 
						
							2006-10-20 04:42:40 +00:00  
				
					
						
							
							
								 
						
							
								25e0d54a0e 
								
							 
						 
						
							
							
								
								Move keyword setup from the preprocessor into the IdentifierTable class.  
							
							... 
							
							
							
							llvm-svn: 39014 
							
						 
						
							2006-10-18 06:07:05 +00:00  
				
					
						
							
							
								 
						
							
								59a9ebdb17 
								
							 
						 
						
							
							
								
								refactor header searching stuff out of the main Preprocessor object into  
							
							... 
							
							
							
							it's own HeaderSearch object.  This makes Preprocessor simpler and easier
to understand.
llvm-svn: 39012 
							
						 
						
							2006-10-18 05:34:33 +00:00  
				
					
						
							
							
								 
						
							
								ff777c38dc 
								
							 
						 
						
							
							
								
								silence warning, add hacky patch for framework lookup  
							
							... 
							
							
							
							llvm-svn: 39011 
							
						 
						
							2006-10-18 04:03:13 +00:00  
				
					
						
							
							
								 
						
							
								720f2700b1 
								
							 
						 
						
							
							
								
								Make the identifier table track objc keywords  
							
							... 
							
							
							
							llvm-svn: 39003 
							
						 
						
							2006-10-17 04:03:44 +00:00  
				
					
						
							
							
								 
						
							
								87d3bec423 
								
							 
						 
						
							
							
								
								Make preprocessor keywords like 'define' first class citizens in the  
							
							... 
							
							
							
							IdentifierTable, instead of making them resort to strcmp'ing.
llvm-svn: 39002 
							
						 
						
							2006-10-17 03:44:32 +00:00  
				
					
						
							
							
								 
						
							
								6e5b2a084e 
								
							 
						 
						
							
							
								
								ignore '#line' and '# 123' for now.  
							
							... 
							
							
							
							llvm-svn: 38997 
							
						 
						
							2006-10-17 02:53:32 +00:00  
				
					
						
							
							
								 
						
							
								063400e46e 
								
							 
						 
						
							
							
								
								Implement the #define_other_target directive.  
							
							... 
							
							
							
							llvm-svn: 38984 
							
						 
						
							2006-10-14 19:54:15 +00:00  
				
					
						
							
							
								 
						
							
								81278c6356 
								
							 
						 
						
							
							
								
								Implement the #define_target preprocessor directive.  
							
							... 
							
							
							
							llvm-svn: 38980 
							
						 
						
							2006-10-14 19:03:49 +00:00  
				
					
						
							
							
								 
						
							
								02dffbda3b 
								
							 
						 
						
							
							
								
								Write up TargetInfo so that use of wchar_t strings results in a warning if  
							
							... 
							
							
							
							used in a target set where the size is not identical.
llvm-svn: 38975 
							
						 
						
							2006-10-14 07:50:21 +00:00  
				
					
						
							
							
								 
						
							
								8c2048710d 
								
							 
						 
						
							
							
								
								Rename LexerToken methods to be more consistent.  
							
							... 
							
							
							
							llvm-svn: 38969 
							
						 
						
							2006-10-14 05:19:21 +00:00  
				
					
						
							
							
								 
						
							
								d3e9895b9a 
								
							 
						 
						
							
							
								
								Initial support for semantic analysis and AST building for StringExpr nodes.  
							
							... 
							
							
							
							llvm-svn: 38960 
							
						 
						
							2006-10-06 05:22:26 +00:00  
				
					
						
							
							
								 
						
							
								6d998556de 
								
							 
						 
						
							
							
								
								Fix precedence problem  
							
							... 
							
							
							
							llvm-svn: 38809 
							
						 
						
							2006-08-04 06:11:48 +00:00  
				
					
						
							
							
								 
						
							
								95a06b34f7 
								
							 
						 
						
							
							
								
								Simplify implementation of varargs macros by adding the __VA_ARGS__ token  
							
							... 
							
							
							
							to the formal argument list of a C99 varargs macro.
llvm-svn: 38800 
							
						 
						
							2006-07-30 08:40:43 +00:00  
				
					
						
							
							
								 
						
							
								273ddd5c57 
								
							 
						 
						
							
							
								
								The optimized case has to treat __VA_ARGS__ as an argument.  This fixes  
							
							... 
							
							
							
							test/Preprocessor/macro_rescan_varargs.c
llvm-svn: 38795 
							
						 
						
							2006-07-29 07:33:01 +00:00  
				
					
						
							
							
								 
						
							
								f76e62ecad 
								
							 
						 
						
							
							
								
								Implement support for #__VA_ARGS__  
							
							... 
							
							
							
							llvm-svn: 38791 
							
						 
						
							2006-07-29 07:14:41 +00:00  
				
					
						
							
							
								 
						
							
								457fc15bc5 
								
							 
						 
						
							
							
								
								Implement comment saving mode: the -C and -CC options.  
							
							... 
							
							
							
							llvm-svn: 38783 
							
						 
						
							2006-07-29 06:30:25 +00:00  
				
					
						
							
							
								 
						
							
								775d832110 
								
							 
						 
						
							
							
								
								Implement the GNU comma swallowing extension.  This implements  
							
							... 
							
							
							
							test/Preprocessor/macro_fn_comma_swallow.c
llvm-svn: 38780 
							
						 
						
							2006-07-29 04:39:41 +00:00  
				
					
						
							
							
								 
						
							
								02f1f4f28b 
								
							 
						 
						
							
							
								
								Fix a bug in previous commit  
							
							... 
							
							
							
							llvm-svn: 38774 
							
						 
						
							2006-07-29 03:52:46 +00:00  
				
					
						
							
							
								 
						
							
								6d9f8ed3b6 
								
							 
						 
						
							
							
								
								No need for explicit underscore anymore.  
							
							... 
							
							
							
							llvm-svn: 38773 
							
						 
						
							2006-07-29 03:52:06 +00:00  
				
					
						
							
							
								 
						
							
								7e37483f14 
								
							 
						 
						
							
							
								
								Poison and unpoison __VA_ARGS__ when appropriate  
							
							... 
							
							
							
							llvm-svn: 38770 
							
						 
						
							2006-07-29 03:46:57 +00:00  
				
					
						
							
							
								 
						
							
								e7a5130dff 
								
							 
						 
						
							
							
								
								If the varargs token is missing, add an empty argument to represent it.  This  
							
							... 
							
							
							
							fixes Preprocessor/macro_fn_varargs_named.c
llvm-svn: 38769 
							
						 
						
							2006-07-29 01:25:12 +00:00  
				
					
						
							
							
								 
						
							
								6e4bf523e6 
								
							 
						 
						
							
							
								
								Implement C99 6.10.3.4p2, testcase here: Preprocessor/macro_disable3.c.  
							
							... 
							
							
							
							llvm-svn: 38760 
							
						 
						
							2006-07-27 06:59:25 +00:00  
				
					
						
							
							
								 
						
							
								7a4af3b73d 
								
							 
						 
						
							
							
								
								Change Preprocessor::ReadFunctionLikeMacroArgs to use a SmallVector to lex  
							
							... 
							
							
							
							argument tokens into instead of a real vector.  This avoids some malloc
traffic in common cases.  In an "abusive macro expansion" testcase, this
reduced -Eonly time by 25%.
llvm-svn: 38757 
							
						 
						
							2006-07-26 06:26:52 +00:00  
				
					
						
							
							
								 
						
							
								c1410dc1e6 
								
							 
						 
						
							
							
								
								Change MacroArgs to allocate space for the unexpanded tokens immediately after  
							
							... 
							
							
							
							the MacroArgs object itself.  This is a bit more efficient and will be even more
so shortly.
llvm-svn: 38756 
							
						 
						
							2006-07-26 05:22:49 +00:00  
				
					
						
							
							
								 
						
							
								7021657a0f 
								
							 
						 
						
							
							
								
								Implement a FIXME: don't copy token array into a token vector, instead, macroexpander should expand from an array directly.  
							
							... 
							
							
							
							llvm-svn: 38754 
							
						 
						
							2006-07-26 03:50:40 +00:00  
				
					
						
							
							
								 
						
							
								36b6e8134e 
								
							 
						 
						
							
							
								
								speed up a brutal macro-expansion torture test by about 30% (1.5 -> 1.0s)  
							
							... 
							
							
							
							by turning vectors of vectors into a single vector, reducing pressure on
malloc.  This can still be improved.
llvm-svn: 38753 
							
						 
						
							2006-07-21 06:38:30 +00:00  
				
					
						
							
							
								 
						
							
								510ab61fd3 
								
							 
						 
						
							
							
								
								Add optimization for identifier##identifier -> identifier, the most common case of token pasting.  
							
							... 
							
							
							
							llvm-svn: 38747 
							
						 
						
							2006-07-20 04:47:30 +00:00  
				
					
						
							
							
								 
						
							
								538d7f3c27 
								
							 
						 
						
							
							
								
								Simplify "raw lexing mode" even further.  Now the preprocessor is only called  
							
							... 
							
							
							
							into when a hard error is found.  This simplifies logic and eliminates the need
for the preprocessor to know about raw mode.
llvm-svn: 38746 
							
						 
						
							2006-07-20 04:31:52 +00:00  
				
					
						
							
							
								 
						
							
								0f1f50517b 
								
							 
						 
						
							
							
								
								Simplify identifier lookup in raw mode, implementing Preprocessor/macro_fn_lparen_scan2.c.  
							
							... 
							
							
							
							llvm-svn: 38744 
							
						 
						
							2006-07-20 04:16:23 +00:00  
				
					
						
							
							
								 
						
							
								30a2fa14ae 
								
							 
						 
						
							
							
								
								Move LexingRawMode handling of file EOF out of the preprocessor into the  
							
							... 
							
							
							
							lexer.  This makes more logical sense and also unbreaks the case when the
lexer hasn't been pushed onto the PP include stack.  This is the case when
pasting identifiers.  This patch implements macro_paste_bcpl_comment.c.
llvm-svn: 38736 
							
						 
						
							2006-07-19 06:31:49 +00:00  
				
					
						
							
							
								 
						
							
								2183a6e8f4 
								
							 
						 
						
							
							
								
								Make end-of-file handling much less recursive.  This reduces the worst case  
							
							... 
							
							
							
							stack depth sampled by shark from ~34 to ~17 frames when preprocessing <iostream>.
llvm-svn: 38726 
							
						 
						
							2006-07-18 06:36:12 +00:00  
				
					
						
							
							
								 
						
							
								7667d0d942 
								
							 
						 
						
							
							
								
								Implement support for lexing from a pre-constructed token stream.  
							
							... 
							
							
							
							Use this support to implement function-like macro argument preexpansion.
This implements test/Preprocessor/macro_fn_preexpand.c
llvm-svn: 38724 
							
						 
						
							2006-07-16 18:16:58 +00:00  
				
					
						
							
							
								 
						
							
								2ada5d3890 
								
							 
						 
						
							
							
								
								More changes from formals -> actuals.  
							
							... 
							
							
							
							llvm-svn: 38717 
							
						 
						
							2006-07-15 07:51:24 +00:00  
				
					
						
							
							
								 
						
							
								ee8760b21b 
								
							 
						 
						
							
							
								
								Rename macroformalargs -> MacroArgs, as it represents the actual arguments,  
							
							... 
							
							
							
							not the formal arguments, to a macro.
llvm-svn: 38716 
							
						 
						
							2006-07-15 07:42:55 +00:00  
				
					
						
							
							
								 
						
							
								c653246bfb 
								
							 
						 
						
							
							
								
								Eliminate the IdentifierInfo::IsMacroArg flag.  
							
							... 
							
							
							
							llvm-svn: 38715 
							
						 
						
							2006-07-15 06:55:18 +00:00  
				
					
						
							
							
								 
						
							
								ecc39e9325 
								
							 
						 
						
							
							
								
								Change Lexer::Stringify to not add ""'s around the string.  
							
							... 
							
							
							
							llvm-svn: 38708 
							
						 
						
							2006-07-15 05:23:31 +00:00  
				
					
						
							
							
								 
						
							
								b94ec7b668 
								
							 
						 
						
							
							
								
								Add an API so that external clients can create strings in the scratch buffer.  
							
							... 
							
							
							
							llvm-svn: 38706 
							
						 
						
							2006-07-14 06:54:10 +00:00  
				
					
						
							
							
								 
						
							
								678c880a69 
								
							 
						 
						
							
							
								
								Move Preprocessor::isNextPPTokenLParen to Lexer::isNextPPTokenLParen, where  
							
							... 
							
							
							
							it more rightly belongs.
llvm-svn: 38702 
							
						 
						
							2006-07-11 05:46:12 +00:00  
				
					
						
							
							
								 
						
							
								3ebcf4e2cd 
								
							 
						 
						
							
							
								
								Change Preprocessor::SkippingContents into Lexer::LexingRawMode.  Raw mode  
							
							... 
							
							
							
							is an intra-lexer property, not a inter-lexer property, so it makes sense
for it to be define here.  It also makes no sense for macros, and allows us
to define it more carefully in the header.
While I'm at it, improve comments and structuring in Lexer.h
llvm-svn: 38701 
							
						 
						
							2006-07-11 05:39:23 +00:00  
				
					
						
							
							
								 
						
							
								69f88b883d 
								
							 
						 
						
							
							
								
								Fix a regression on Preprocessor/hash_space.c  
							
							... 
							
							
							
							llvm-svn: 38700 
							
						 
						
							2006-07-11 05:07:29 +00:00  
				
					
						
							
							
								 
						
							
								d8aee0e81b 
								
							 
						 
						
							
							
								
								Implement "lparen scanning" for lexer buffers, by making "skipping lexing"  
							
							... 
							
							
							
							completely reversible.  This implements tests 3/4 of
test/Preprocessor/macro_fn_lparen_scan.c
llvm-svn: 38699 
							
						 
						
							2006-07-11 05:04:55 +00:00  
				
					
						
							
							
								 
						
							
								a12dd15b56 
								
							 
						 
						
							
							
								
								ext-warn on empty macro arguments if in pre-c99 mode  
							
							... 
							
							
							
							llvm-svn: 38697 
							
						 
						
							2006-07-11 04:09:02 +00:00  
				
					
						
							
							
								 
						
							
								afe603fa7d 
								
							 
						 
						
							
							
								
								Implement scanning-for-( more correctly.  This implements  
							
							... 
							
							
							
							test/Preprocessor/macro_fn_lparen_scan.c, but is not yet complete.
Add some FIXME's about missing diagnostics on empty macro args.  Improve some
comments.
llvm-svn: 38694 
							
						 
						
							2006-07-11 04:02:46 +00:00  
				
					
						
							
							
								 
						
							
								03f83485bd 
								
							 
						 
						
							
							
								
								Only do an expensive walk over the entire identifier table if the diagnostic  
							
							... 
							
							
							
							that needs it is enabled.
llvm-svn: 38690 
							
						 
						
							2006-07-10 06:16:26 +00:00  
				
					
						
							
							
								 
						
							
								3ce1d1aac9 
								
							 
						 
						
							
							
								
								Trivially expand macros like:  
							
							... 
							
							
							
							#define ENOMEMORYFORYOU ENOMEMORYFORYOU
llvm-svn: 38687 
							
						 
						
							2006-07-09 01:00:18 +00:00  
				
					
						
							
							
								 
						
							
								c239583433 
								
							 
						 
						
							
							
								
								Make trivial expansion detection more aggressive.  Trivially expand macros  
							
							... 
							
							
							
							like:  #define IS_BLAH() 1
llvm-svn: 38686 
							
						 
						
							2006-07-09 00:57:04 +00:00  
				
					
						
							
							
								 
						
							
								7818605f83 
								
							 
						 
						
							
							
								
								Read, remember, and validate the arguments provided the a function-style  
							
							... 
							
							
							
							macro invocation.
llvm-svn: 38685 
							
						 
						
							2006-07-09 00:45:31 +00:00  
				
					
						
							
							
								 
						
							
								815a1f97f6 
								
							 
						 
						
							
							
								
								Diagnose C99 6.10.3.2p1  
							
							... 
							
							
							
							llvm-svn: 38683 
							
						 
						
							2006-07-08 20:48:04 +00:00  
				
					
						
							
							
								 
						
							
								6e0d42c6f8 
								
							 
						 
						
							
							
								
								Add identifiers for macro arguments to MacroInfo, check for duplicates,  
							
							... 
							
							
							
							enhance macro equality testing to verify argument lists match.
llvm-svn: 38682 
							
						 
						
							2006-07-08 20:32:52 +00:00  
				
					
						
							
							
								 
						
							
								cefc768f5b 
								
							 
						 
						
							
							
								
								Start reading/validating the argument list for a function-like macro.  
							
							... 
							
							
							
							llvm-svn: 38681 
							
						 
						
							2006-07-08 08:28:12 +00:00  
				
					
						
							
							
								 
						
							
								21284dfdd1 
								
							 
						 
						
							
							
								
								Implement checking for macro equality, C99 6.10.3.2  
							
							... 
							
							
							
							llvm-svn: 38680 
							
						 
						
							2006-07-08 07:16:08 +00:00  
				
					
						
							
							
								 
						
							
								e8eef3207b 
								
							 
						 
						
							
							
								
								add infrastructure for warning if redef'd macro bodies differ, but don't  
							
							... 
							
							
							
							fully implement it.
Fix warning on #define __LINE__ to warn about redefinition, not #undef.
llvm-svn: 38679 
							
						 
						
							2006-07-08 07:01:00 +00:00  
				
					
						
							
							
								 
						
							
								8ff7199e4b 
								
							 
						 
						
							
							
								
								Warn about __VA_ARGS__ when used outside of a macro expansion  
							
							... 
							
							
							
							llvm-svn: 38678 
							
						 
						
							2006-07-06 05:17:39 +00:00  
				
					
						
							
							
								 
						
							
								bff18d5649 
								
							 
						 
						
							
							
								
								Diagnose erroneous macro definitions where a ## operator is at the start/end of the macro  
							
							... 
							
							
							
							llvm-svn: 38677 
							
						 
						
							2006-07-06 04:49:18 +00:00  
				
					
						
							
							
								 
						
							
								d3a15f7f4e 
								
							 
						 
						
							
							
								
								Add a fast-path in getSpelling for identifiers.  
							
							... 
							
							
							
							llvm-svn: 38672 
							
						 
						
							2006-07-04 23:01:03 +00:00  
				
					
						
							
							
								 
						
							
								ef9eae1c44 
								
							 
						 
						
							
							
								
								Change the Preprocessor::getSpelling interface to let it be zero-copy in  
							
							... 
							
							
							
							the common case.
llvm-svn: 38671 
							
						 
						
							2006-07-04 22:33:12 +00:00  
				
					
						
							
							
								 
						
							
								c79f6fb108 
								
							 
						 
						
							
							
								
								Rename IdentifierTokenInfo -> IdentifierInfo.  
							
							... 
							
							
							
							llvm-svn: 38650 
							
						 
						
							2006-07-04 17:53:21 +00:00  
				
					
						
							
							
								 
						
							
								a8654ca2cf 
								
							 
						 
						
							
							
								
								Eliminate MultipleIncludeOpt::ReadDirective and all calls to it.  Any directives  
							
							... 
							
							
							
							that are lexed are made up of tokens, so the calls are just ugly and redundant.
Hook up the MIOpt for the #if case.  PPCExpressions doesn't currently implement
the hook though, so we still don't handle #if !defined(X) with the MIOpt.
llvm-svn: 38649 
							
						 
						
							2006-07-04 17:42:08 +00:00  
				
					
						
							
							
								 
						
							
								3665f161ca 
								
							 
						 
						
							
							
								
								Implement the multiple-include file optimization.  
							
							... 
							
							
							
							llvm-svn: 38647 
							
						 
						
							2006-07-04 07:26:10 +00:00  
				
					
						
							
							
								 
						
							
								371ac8a9b7 
								
							 
						 
						
							
							
								
								Implement the automaton for recognizing files with controlling macros.  
							
							... 
							
							
							
							llvm-svn: 38646 
							
						 
						
							2006-07-04 07:11:10 +00:00  
				
					
						
							
							
								 
						
							
								d7dfa57efd 
								
							 
						 
						
							
							
								
								cleanup fixme's  
							
							... 
							
							
							
							llvm-svn: 38645 
							
						 
						
							2006-07-04 04:50:35 +00:00  
				
					
						
							
							
								 
						
							
								01d66cc891 
								
							 
						 
						
							
							
								
								Implement #ident and #sccs  
							
							... 
							
							
							
							llvm-svn: 38643 
							
						 
						
							2006-07-03 22:16:27 +00:00  
				
					
						
							
							
								 
						
							
								d7de629c32 
								
							 
						 
						
							
							
								
								Move a method inline  
							
							... 
							
							
							
							llvm-svn: 38639 
							
						 
						
							2006-07-03 06:05:41 +00:00