| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 44797
|
| |
|
|
| |
llvm-svn: 44635
|
| |
|
|
|
|
|
| |
Now sourcemanager deserializer automatically self-registers itself with
the deserializer.
llvm-svn: 44591
|
| |
|
|
| |
llvm-svn: 44590
|
| |
|
|
| |
llvm-svn: 44578
|
| |
|
|
| |
llvm-svn: 43969
|
| |
|
|
|
|
|
| |
whether the location is the start and/or end of an expansion.
These are currently not set or used by anything.
llvm-svn: 43968
|
| |
|
|
| |
llvm-svn: 43562
|
| |
|
|
|
|
|
|
| |
Disabled assignments for ContentCache.
Copy-ctor for ContentCache now has an assertion preventing it to
be copied from an object that already has an allocated buffer.
llvm-svn: 43526
|
| |
|
|
|
|
|
| |
single class: ContentCache. This simplifies the logic in
SourceManager and makes the ownership of MemoryBuffers clearer.
llvm-svn: 43518
|
| |
|
|
| |
llvm-svn: 43029
|
| |
|
|
|
|
|
| |
with x's for now. The APIs are all unimplemented, so it doesn't do
anything yet! :)
llvm-svn: 42868
|
| |
|
|
|
|
|
|
| |
hard coded paths in the llvm project files.
Changed windows detection to use LLVM pp constant.
llvm-svn: 41878
|
| |
|
|
|
|
| |
by Hartmut Kaiser!
llvm-svn: 41684
|
| |
|
|
| |
llvm-svn: 41600
|
| |
|
|
| |
llvm-svn: 40719
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
last one.
This is important in insane cases like the one dannyb sent me recently:
#define F0(a) void a(){}
#define F1(a) F0(a##0) F0(a##1) F0(a##2) F0(a##3) F0(a##4) F0(a##5) F0(a##6) F0(a##7)
#define F2(a) F1(a##0) F1(a##1) F1(a##2) F1(a##3) F1(a##4) F1(a##5) F1(a##6) F1(a##7)
#define F3(a) F2(a##0) F2(a##1) F2(a##2) F2(a##3) F2(a##4) F2(a##5) F2(a##6) F2(a##7)
#define F4(a) F3(a##0) F3(a##1) F3(a##2) F3(a##3) F3(a##4) F3(a##5) F3(a##6) F3(a##7)
#define F5(a) F4(a##0) F4(a##1) F4(a##2) F4(a##3) F4(a##4) F4(a##5) F4(a##6) F4(a##7)
#define F6(a) F5(a##0) F5(a##1) F5(a##2) F5(a##3) F5(a##4) F5(a##5) F5(a##6) F5(a##7)
F6(f)
cpp is great. :)
llvm-svn: 40715
|
| |
|
|
|
|
|
|
| |
malloc traffic.
This speeds up -E on xalancbmk by 2.4%
llvm-svn: 40461
|
| |
|
|
| |
llvm-svn: 40460
|
| |
|
|
|
|
|
|
|
|
|
| |
bottleneck for -E computation, because every token that starts a line needs
to determine *which* line it is on (so -E mode can insert the appropriate
vertical whitespace). This optimization improves this common case where
it is striding through the line # table.
This speeds up -E on xalancbmk by 3.2%
llvm-svn: 40459
|
| |
|
|
|
|
| |
keeps the MacroInfo table more compact.
llvm-svn: 40281
|
| |
|
|
| |
llvm-svn: 40111
|
| |
|
|
|
|
|
|
|
| |
SourceManager::getInstantiationLoc. With this change, every token
expanded from a macro doesn't get its own MacroID. :)
This reduces # macro IDs in carbon.h from 16805 to 9197
llvm-svn: 40108
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
accurate diagnostics. For test/Lexer/comments.c we now emit:
int x = 000000080; /* expected-error {{invalid digit}} */
^
constants.c:7:4: error: invalid digit '8' in octal constant
00080; /* expected-error {{invalid digit}} */
^
The last line is due to an escaped newline. The full line looks like:
int y = 0000\
00080; /* expected-error {{invalid digit}} */
Previously, we emitted:
constants.c:4:9: error: invalid digit '8' in octal constant
int x = 000000080; /* expected-error {{invalid digit}} */
^
constants.c:6:9: error: invalid digit '8' in octal constant
int y = 0000\
^
which isn't too bad, but the new way is better for the user,
regardless of whether there is an escaped newline or not.
All the other lexer-related diagnostics should switch over
to using AdvanceToTokenCharacter where appropriate. Help
wanted :).
This implements test/Lexer/constants.c.
llvm-svn: 39906
|
| |
|
|
|
|
| |
virtual->physical mapping explicitly.
llvm-svn: 39867
|
| |
|
|
|
|
| |
(needed on Solaris)
llvm-svn: 39781
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 39434
|
| |
|
|
| |
llvm-svn: 39426
|
| |
|
|
|
|
|
| |
support library, where it can be used by other LLVM clients. There are
some ugly fixme's in the short-term.
llvm-svn: 39425
|
| |
|
|
| |
llvm-svn: 39424
|
| |
|
|
| |
llvm-svn: 39028
|
| |
|
|
|
|
| |
reduces the number of FileID's made and tracked.
llvm-svn: 38752
|
| |
|
|
| |
llvm-svn: 38722
|
| |
|
|
| |
llvm-svn: 38672
|
| |
|
|
| |
llvm-svn: 38664
|
| |
|
|
| |
llvm-svn: 38604
|
| |
|
|
|
|
| |
single use.
llvm-svn: 38599
|
| |
|
|
| |
llvm-svn: 38596
|
| |
|
|
| |
llvm-svn: 38594
|
| |
|
|
|
|
| |
MacroExpansion fileid's, loop over them until we get to something real.
llvm-svn: 38590
|
| |
|
|
| |
llvm-svn: 38579
|
| |
|
|
|
|
| |
when reporting a diagnostic.
llvm-svn: 38577
|
| |
|
|
| |
llvm-svn: 38560
|
| |
|
|
|
|
| |
instantiations.
llvm-svn: 38558
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
no functionality change yet
llvm-svn: 38556
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
llvm-svn: 38539
|