Commit Graph

33569 Commits

Author SHA1 Message Date
Chris Lattner f69f835398 new testcase
llvm-svn: 38704
2006-07-11 05:53:01 +00:00
Chris Lattner 041bef8b32 The lexer should not warn about stray characters, it should just return
tok::unknown tokens.  This fixes test/Lexer/unknown-char.c

llvm-svn: 38703
2006-07-11 05:52:53 +00:00
Chris Lattner 678c880a69 Move Preprocessor::isNextPPTokenLParen to Lexer::isNextPPTokenLParen, where
it more rightly belongs.

llvm-svn: 38702
2006-07-11 05:46:12 +00:00
Chris Lattner 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
Chris Lattner 69f88b883d Fix a regression on Preprocessor/hash_space.c
llvm-svn: 38700
2006-07-11 05:07:29 +00:00
Chris Lattner 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
Chris Lattner b63d9de243 new tests
llvm-svn: 38698
2006-07-11 05:03:43 +00:00
Chris Lattner a12dd15b56 ext-warn on empty macro arguments if in pre-c99 mode
llvm-svn: 38697
2006-07-11 04:09:02 +00:00
Chris Lattner 370c135dce improve comment
llvm-svn: 38696
2006-07-11 04:03:32 +00:00
Chris Lattner 2acdac4200 Implement scanning-for-( more correctly. This implements
test/Preprocessor/macro_fn_lparen_scan.c, but is not yet complete.

llvm-svn: 38695
2006-07-11 04:02:48 +00:00
Chris Lattner 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
Chris Lattner 53ede2a826 new testcase
llvm-svn: 38693
2006-07-11 04:00:23 +00:00
Chris Lattner db878cde8e Add an interesting observation :)
llvm-svn: 38692
2006-07-10 06:34:50 +00:00
Chris Lattner eb54b5973e Add simple optimization: check for (and skip) spaces and tabs immediately
before lexing a token.  This speeds the common case where tokens are
separated by small amount of whitespace.  This makes a slight but
reproducible positive effect lexing a preprocessed carbon.h.

llvm-svn: 38691
2006-07-10 06:34:27 +00:00
Chris Lattner 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
Chris Lattner d0a96ba38a Add a simple but useful optimization for identifier lookup. Each time we
query the hash table, when we look up an identifier that isn't at the head
of it's bucket's list, move it there.  This reduces the number of list
traversals in the common case where identifiers are used in bursts.

llvm-svn: 38689
2006-07-10 06:10:51 +00:00
Chris Lattner 9e220173e6 add some notes about MS extensions
llvm-svn: 38688
2006-07-10 02:49:22 +00:00
Chris Lattner 3ce1d1aac9 Trivially expand macros like:
#define ENOMEMORYFORYOU ENOMEMORYFORYOU

llvm-svn: 38687
2006-07-09 01:00:18 +00:00
Chris Lattner 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
Chris Lattner 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
Chris Lattner 8eede3e6c0 Remove pointless comments.
llvm-svn: 38684
2006-07-08 23:24:05 +00:00
Chris Lattner 815a1f97f6 Diagnose C99 6.10.3.2p1
llvm-svn: 38683
2006-07-08 20:48:04 +00:00
Chris Lattner 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
Chris Lattner cefc768f5b Start reading/validating the argument list for a function-like macro.
llvm-svn: 38681
2006-07-08 08:28:12 +00:00
Chris Lattner 21284dfdd1 Implement checking for macro equality, C99 6.10.3.2
llvm-svn: 38680
2006-07-08 07:16:08 +00:00
Chris Lattner 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
Chris Lattner 8ff7199e4b Warn about __VA_ARGS__ when used outside of a macro expansion
llvm-svn: 38678
2006-07-06 05:17:39 +00:00
Chris Lattner 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
Chris Lattner ae41157ee5 Implement support for arbitrarily mapping non-error diagnostics to be either
ignored, warned about, or error'd.  Use this to implement the -Wunused_macros
command line option.

llvm-svn: 38676
2006-07-05 00:55:08 +00:00
Chris Lattner ecbf7b4bb0 add newline to end of file
llvm-svn: 38675
2006-07-05 00:08:00 +00:00
Chris Lattner 27746e476a Fix Preprocessor/macro_space.c, which failed because the ! token had
identifier info incorrectly set.

llvm-svn: 38674
2006-07-05 00:07:54 +00:00
Chris Lattner 67c3848e4e Cleanup some obsolete comments.
llvm-svn: 38673
2006-07-04 23:24:26 +00:00
Chris Lattner d3a15f7f4e Add a fast-path in getSpelling for identifiers.
llvm-svn: 38672
2006-07-04 23:01:03 +00:00
Chris Lattner 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
Chris Lattner a3f827e0a6 add a comment explaining why this is written funny
llvm-svn: 38670
2006-07-04 22:22:45 +00:00
Chris Lattner f46be6cb02 Switch to using unix "write" when available, instead of stdio. This speeds up
-E -P mode by 10% (i.e. takes away almost all i/o time).

llvm-svn: 38669
2006-07-04 22:19:33 +00:00
Chris Lattner 728b4dc26a improve comments
llvm-svn: 38668
2006-07-04 21:28:37 +00:00
Chris Lattner ff3f5f4b77 fix compile error
llvm-svn: 38667
2006-07-04 21:25:59 +00:00
Chris Lattner 03cbe1fc02 Minor code cleanup
llvm-svn: 38666
2006-07-04 21:24:33 +00:00
Chris Lattner 3338ba87d5 Make -P mode faster and closer to GCC output by not emitting newlines at all.
This allows the SourceManager to not compute line number information for each buffer.

llvm-svn: 38665
2006-07-04 21:19:39 +00:00
Chris Lattner d5da3ea58d This matters for -E.
llvm-svn: 38664
2006-07-04 21:11:41 +00:00
Chris Lattner 73b6a2f62d Match GCC behavior better in -P mode.
llvm-svn: 38663
2006-07-04 19:40:52 +00:00
Chris Lattner 3451f7da35 initial checkin of xcode project that I've been using for a while
llvm-svn: 38662
2006-07-04 19:30:23 +00:00
Chris Lattner ecc6fc583f add a place for random notes.
llvm-svn: 38661
2006-07-04 19:29:50 +00:00
Chris Lattner deb3701c23 Switch from using iostreams to using stdio for -E mode output. This speeds
up clang -E iostream by 30%.

llvm-svn: 38660
2006-07-04 19:24:06 +00:00
Chris Lattner 5de858cbdd minor cleanup
llvm-svn: 38659
2006-07-04 19:04:44 +00:00
Chris Lattner 09e3cdf9ef Split the -E mode printer out to a separate .cpp file.
llvm-svn: 38658
2006-07-04 19:04:05 +00:00
Chris Lattner 5f084fd5fc Add newline at end of file
llvm-svn: 38657
2006-07-04 19:03:36 +00:00
Chris Lattner 08e0035668 ignore cruft
llvm-svn: 38656
2006-07-04 19:03:05 +00:00
Chris Lattner 0e1cf1f588 Fix indentation
llvm-svn: 38655
2006-07-04 18:53:52 +00:00