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
Chris Lattner
b9d90f709e
Detect expressions semantically equivalent to !defined(X) for the multiple-include
...
optimization.
llvm-svn: 38654
2006-07-04 18:32:03 +00:00
Chris Lattner
3153ed6bc4
This is implemented.
...
llvm-svn: 38653
2006-07-04 18:31:48 +00:00
Chris Lattner
e3519cc948
Change EvaluateValue/EvaluateDirectiveSubExpr to be static functions in
...
PPExpressions.cpp instead of methods.
llvm-svn: 38652
2006-07-04 18:11:39 +00:00