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  
				
					
						
							
							
								 
						
							
								a78a97e82f 
								
							 
						 
						
							
							
								
								#ifdef X, #ifndef X, and #if defined(X) all mark X as used.  
							
							... 
							
							
							
							llvm-svn: 38638 
							
						 
						
							2006-07-03 05:42:18 +00:00  
				
					
						
							
							
								 
						
							
								83913dde23 
								
							 
						 
						
							
							
								
								remove dead var  
							
							... 
							
							
							
							llvm-svn: 38635 
							
						 
						
							2006-07-03 05:31:31 +00:00  
				
					
						
							
							
								 
						
							
								f88c53a02f 
								
							 
						 
						
							
							
								
								Fix test/Preprocessor/_Pragma-syshdr2.c.  
							
							... 
							
							
							
							llvm-svn: 38634 
							
						 
						
							2006-07-03 05:26:05 +00:00  
				
					
						
							
							
								 
						
							
								13044d942d 
								
							 
						 
						
							
							
								
								Implement -Wunused-macros functionality.  
							
							... 
							
							
							
							llvm-svn: 38632 
							
						 
						
							2006-07-03 05:16:44 +00:00  
				
					
						
							
							
								 
						
							
								44f8a66bcc 
								
							 
						 
						
							
							
								
								Fix test/Preprocessor/macro_defined.c, factor some code.  
							
							... 
							
							
							
							llvm-svn: 38627 
							
						 
						
							2006-07-03 01:27:27 +00:00  
				
					
						
							
							
								 
						
							
								aaf09115c4 
								
							 
						 
						
							
							
								
								Implement a FIXME: reject '#define defined'.  
							
							... 
							
							
							
							llvm-svn: 38625 
							
						 
						
							2006-07-03 01:17:59 +00:00  
				
					
						
							
							
								 
						
							
								e3e81ea8aa 
								
							 
						 
						
							
							
								
								Refactor some code into a new Lexer::Stringify method.  
							
							... 
							
							
							
							llvm-svn: 38624 
							
						 
						
							2006-07-03 01:13:26 +00:00  
				
					
						
							
							
								 
						
							
								0766e592ce 
								
							 
						 
						
							
							
								
								Implement a FIXME: correctly stringify filenames generated by __LINE__.  
							
							... 
							
							
							
							llvm-svn: 38622 
							
						 
						
							2006-07-03 01:07:01 +00:00  
				
					
						
							
							
								 
						
							
								4d5e1a72f4 
								
							 
						 
						
							
							
								
								Classify fixme's  
							
							... 
							
							
							
							llvm-svn: 38621 
							
						 
						
							2006-07-03 01:01:29 +00:00  
				
					
						
							
							
								 
						
							
								98a5312478 
								
							 
						 
						
							
							
								
								Give tokens expanded from _Pragma directives correct source locations.  
							
							... 
							
							
							
							This implements test/Preprocessor/_Pragma-location.c
llvm-svn: 38619 
							
						 
						
							2006-07-02 23:00:20 +00:00  
				
					
						
							
							
								 
						
							
								a37664b3fb 
								
							 
						 
						
							
							
								
								Move a virtual method out-of-line  
							
							... 
							
							
							
							llvm-svn: 38617 
							
						 
						
							2006-07-02 22:45:51 +00:00  
				
					
						
							
							
								 
						
							
								b694ba7b40 
								
							 
						 
						
							
							
								
								Move some Pragma-related methods from Preprocessor.cpp to Pragma.cpp  
							
							... 
							
							
							
							llvm-svn: 38616 
							
						 
						
							2006-07-02 22:41:36 +00:00  
				
					
						
							
							
								 
						
							
								1840e491dc 
								
							 
						 
						
							
							
								
								Remove Lexer::BufferStart, an unneeded instance var.  
							
							... 
							
							
							
							llvm-svn: 38615 
							
						 
						
							2006-07-02 22:30:01 +00:00  
				
					
						
							
							
								 
						
							
								e4af3ac6b4 
								
							 
						 
						
							
							
								
								Fix some minor issues with _Pragma  
							
							... 
							
							
							
							llvm-svn: 38610 
							
						 
						
							2006-07-02 21:32:47 +00:00  
				
					
						
							
							
								 
						
							
								ecfeafe3ba 
								
							 
						 
						
							
							
								
								Fix some minor bugs handling _Pragma, including  
							
							... 
							
							
							
							test/Preprocessor/_Pragma_syshdr.c
llvm-svn: 38609 
							
						 
						
							2006-07-02 21:26:45 +00:00  
				
					
						
							
							
								 
						
							
								69772b026e 
								
							 
						 
						
							
							
								
								Implement the _Pragma-style of pragma handling, implementing  
							
							... 
							
							
							
							test/Preprocessor/_Pragma-poison.c.
This unifies the MacroStack and IncludeStack together into IncludeMacroStack.
llvm-svn: 38606 
							
						 
						
							2006-07-02 20:34:39 +00:00  
				
					
						
							
							
								 
						
							
								847e0e4552 
								
							 
						 
						
							
							
								
								Implement __TIMESTAMP__  
							
							... 
							
							
							
							llvm-svn: 38602 
							
						 
						
							2006-07-01 23:49:16 +00:00  
				
					
						
							
							
								 
						
							
								c1283b90a0 
								
							 
						 
						
							
							
								
								Implement __INCLUDE_LEVEL__ and __BASE_FILE__  
							
							... 
							
							
							
							llvm-svn: 38601 
							
						 
						
							2006-07-01 23:16:30 +00:00  
				
					
						
							
							
								 
						
							
								630b33c39e 
								
							 
						 
						
							
							
								
								Implement __FILE__  
							
							... 
							
							
							
							llvm-svn: 38600 
							
						 
						
							2006-07-01 22:46:53 +00:00  
				
					
						
							
							
								 
						
							
								c673f905d8 
								
							 
						 
						
							
							
								
								Implement the __TIME__ and __DATE__ builtin macros.  
							
							... 
							
							
							
							llvm-svn: 38597 
							
						 
						
							2006-06-30 06:10:41 +00:00  
				
					
						
							
							
								 
						
							
								4fb517bea8 
								
							 
						 
						
							
							
								
								Give tokens from the scratch buffer correct source locations.  
							
							... 
							
							
							
							llvm-svn: 38591 
							
						 
						
							2006-06-29 06:34:53 +00:00  
				
					
						
							
							
								 
						
							
								0b8cfc2e69 
								
							 
						 
						
							
							
								
								Implement the __LINE__ builtin macro.  
							
							... 
							
							
							
							llvm-svn: 38589 
							
						 
						
							2006-06-28 06:49:17 +00:00  
				
					
						
							
							
								 
						
							
								677757a2c0 
								
							 
						 
						
							
							
								
								Remove dead variables.  
							
							... 
							
							
							
							Add initial support for builtin macros, including warning if they are defined or undefined.
Register __LINE__ as a builtin macro.
llvm-svn: 38586 
							
						 
						
							2006-06-28 05:26:32 +00:00  
				
					
						
							
							
								 
						
							
								f373a4af56 
								
							 
						 
						
							
							
								
								Refactor HandleIdentifier to pull macro expansion into its own method.  
							
							... 
							
							
							
							llvm-svn: 38583 
							
						 
						
							2006-06-26 06:16:29 +00:00  
				
					
						
							
							
								 
						
							
								f4449e5da3 
								
							 
						 
						
							
							
								
								Allow expansion to single token identifiers if they are not macros  
							
							... 
							
							
							
							llvm-svn: 38581 
							
						 
						
							2006-06-26 04:55:25 +00:00  
				
					
						
							
							
								 
						
							
								67b07cb6fe 
								
							 
						 
						
							
							
								
								Implement Preprocessor/macro_expandloc.c by giving the optimized macro  
							
							... 
							
							
							
							expansion case a correct source location.
llvm-svn: 38580 
							
						 
						
							2006-06-26 02:03:42 +00:00  
				
					
						
							
							
								 
						
							
								236ed5200b 
								
							 
						 
						
							
							
								
								Add a note  
							
							... 
							
							
							
							llvm-svn: 38578 
							
						 
						
							2006-06-26 01:36:29 +00:00  
				
					
						
							
							
								 
						
							
								269c232e67 
								
							 
						 
						
							
							
								
								implement #pragma GCC dependency  
							
							... 
							
							
							
							llvm-svn: 38574 
							
						 
						
							2006-06-25 06:23:00 +00:00  
				
					
						
							
							
								 
						
							
								ba6df9122f 
								
							 
						 
						
							
							
								
								Fix Preprocessor/poison_expansion.c  
							
							... 
							
							
							
							llvm-svn: 38573 
							
						 
						
							2006-06-25 05:41:00 +00:00  
				
					
						
							
							
								 
						
							
								55a60954f9 
								
							 
						 
						
							
							
								
								Implement #pragma GCC system_header  
							
							... 
							
							
							
							llvm-svn: 38569 
							
						 
						
							2006-06-25 04:20:34 +00:00  
				
					
						
							
							
								 
						
							
								1786217e0b 
								
							 
						 
						
							
							
								
								Finish implementation of #pragma once.  Implement #pragma GCC poison.  
							
							... 
							
							
							
							llvm-svn: 38568 
							
						 
						
							2006-06-24 22:12:56 +00:00  
				
					
						
							
							
								 
						
							
								b876183219 
								
							 
						 
						
							
							
								
								implement the pragma handling infrastructure.  The only pragma so far is  
							
							... 
							
							
							
							#pragma once, and it is not completely implemented.
llvm-svn: 38566 
							
						 
						
							2006-06-24 21:31:03 +00:00  
				
					
						
							
							
								 
						
							
								e60165fdb5 
								
							 
						 
						
							
							
								
								increase the performance of skipping (#if 0) by optimizing lookup of directive names.  
							
							... 
							
							
							
							llvm-svn: 38564 
							
						 
						
							2006-06-22 06:36:29 +00:00  
				
					
						
							
							
								 
						
							
								40931927af 
								
							 
						 
						
							
							
								
								Speed up directive matching by not using getSpelling(), and not copying std::strings  
							
							... 
							
							
							
							around.
llvm-svn: 38563 
							
						 
						
							2006-06-22 06:14:04 +00:00  
				
					
						
							
							
								 
						
							
								c899718274 
								
							 
						 
						
							
							
								
								Track which headers are system and non-C++-clean-system headers. Use this  
							
							... 
							
							
							
							information to print the 3/4 flags correctly on #line directives emitted
in -E mode.
llvm-svn: 38562 
							
						 
						
							2006-06-22 05:52:16 +00:00  
				
					
						
							
							
								 
						
							
								0c885f5581 
								
							 
						 
						
							
							
								
								Improve #line emission in -E mode to include file entry/exits.  This is  
							
							... 
							
							
							
							still pretty hacky because it doesn't compute the 3/4 markers correctly.
llvm-svn: 38561 
							
						 
						
							2006-06-21 06:50:18 +00:00  
				
					
						
							
							
								 
						
							
								30709b038d 
								
							 
						 
						
							
							
								
								Implement a new type of FileID: FileIDInfo::MacroExpansion.  For tokens that  
							
							... 
							
							
							
							came from a macro expansion, this allows us to keep track of both where the
character data came from and where the logical position of the token is (at
the expansion site).  This implements Preprocessor/indent_macro.c, and
reduces the number of cpp iostream -E diffs vs GCC from 2589 to 2297.
llvm-svn: 38557 
							
						 
						
							2006-06-21 03:01:55 +00:00  
				
					
						
							
							
								 
						
							
								50b497e072 
								
							 
						 
						
							
							
								
								Rename LexerToken::getSourceLocation -> getLocation  
							
							... 
							
							
							
							llvm-svn: 38553 
							
						 
						
							2006-06-18 16:32:35 +00:00  
				
					
						
							
							
								 
						
							
								d01e291332 
								
							 
						 
						
							
							
								
								Make a fundamental change to the way we represent the location of LexerToken's.  
							
							... 
							
							
							
							Now, instead of keeping a pointer to the start of the token in memory, we keep the
start of the token as a SourceLocation node.  This means that each LexerToken knows
the full include stack it was created with, and means that the LexerToken isn't
reliant on a "CurLexer" member to be around (lexer tokens would previously go out of
scope when their lexers were deallocated).
This simplifies several things, and forces good cleanup elsewhere.  Now the
Preprocessor is the one that knows how to dump tokens/macros and is the one that
knows how to get the spelling of a token (it has all the context).
llvm-svn: 38551 
							
						 
						
							2006-06-18 16:22:51 +00:00  
				
					
						
							
							
								 
						
							
								504f2ebb8b 
								
							 
						 
						
							
							
								
								Add missing return  
							
							... 
							
							
							
							llvm-svn: 38547 
							
						 
						
							2006-06-18 07:19:54 +00:00  
				
					
						
							
							
								 
						
							
								7966aafd9b 
								
							 
						 
						
							
							
								
								Simplify an API  
							
							... 
							
							
							
							llvm-svn: 38541 
							
						 
						
							2006-06-18 06:50:36 +00:00  
				
					
						
							
							
								 
						
							
								cb28334ea4 
								
							 
						 
						
							
							
								
								Remove manual conditional error handling code.  
							
							... 
							
							
							
							llvm-svn: 38540 
							
						 
						
							2006-06-18 06:48:37 +00:00  
				
					
						
							
							
								 
						
							
								22eb972f38 
								
							 
						 
						
							
							
								
								Initial checkin of c-language parser  
							
							... 
							
							
							
							llvm-svn: 38539 
							
						 
						
							2006-06-18 05:43:12 +00:00