| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
| |
pointer of MultiKeywordSelectors.
Added optimization to the serialization of SelectorTable where we only serialize
out MultiKeywordSelectors that are ever referenced by an object other than the
SelectorTable.
llvm-svn: 44483
|
|
|
|
|
|
|
|
| |
that are builtin and those that are aren't. This is a bunch
of API refactoring that will make this possible, but there is
no functionality change yet.
llvm-svn: 44473
|
|
|
|
|
|
|
| |
Modified serialization of IdentifierTable to self-register itself with
the Deserializer.
llvm-svn: 44471
|
|
|
|
| |
llvm-svn: 44349
|
|
|
|
| |
llvm-svn: 44311
|
|
|
|
| |
llvm-svn: 44308
|
|
|
|
| |
llvm-svn: 44164
|
|
|
|
|
|
| |
the new serialization API.
llvm-svn: 44035
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
that are referenced in the ASTs. This assumes that we serialize out the
decls/stmts first, and use the pointer-tracking logic in the Serializer to
determine if an IdentifierInfo (or its string key) is ever referenced.
This is a significant space optimization for serialized ASTs.
Consider the following program:
void foo(int x,int y) {
return x > y ? x : y+1;
}
Here are the sizes of the files for the serialized ASTs:
Full IdentifierTable: 23676 bytes
Only-referenced Identifiers: 304 bytes.
For this simple program, this is a 77% reduction in the file size of the
serialized ASTs.
llvm-svn: 43975
|
|
|
|
| |
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: 43917
|
|
|
|
|
|
|
|
|
| |
and Materialize/Read instead of using specializations of SerializeTrait<>. The
resulting code is much cleaner. We are also setting the stage so that only the
parts of the IdentifierTable that are ever referenced within the ASTs are
serialized, and not the whole table.
llvm-svn: 43904
|
|
|
|
|
|
| |
IdentifierInfos are deserialized.
llvm-svn: 43741
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
updated it to the recently updated Serialization API.
Changed clients of SourceLocation serialization to call the
appropriate new methods.
Updated Decl serialization code to put new skeleton serialization code
in place that is much better than the older trait-specialization
approach.
llvm-svn: 43625
|
|
|
|
| |
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: 43343
|
|
|
|
|
|
|
|
|
|
| |
new split-header file configuration (Serialize.h and Deserialize.h)
now in place in the core LLVM repository.
Removed unneeded SerializeTrait specializations for enums in
TokenKinds.h
llvm-svn: 43306
|
|
|
|
|
|
|
| |
Updated serialization test code in the driver to test serialization of
these types.
llvm-svn: 43266
|
|
|
|
| |
llvm-svn: 43029
|
|
|
|
| |
llvm-svn: 42943
|
|
|
|
|
|
|
| |
with x's for now. The APIs are all unimplemented, so it doesn't do
anything yet! :)
llvm-svn: 42868
|
|
|
|
| |
llvm-svn: 42841
|
|
|
|
| |
llvm-svn: 42730
|
|
|
|
|
|
| |
for holding builtin target-specific macros.
llvm-svn: 42689
|
|
|
|
|
|
| |
stringmap operations when there are no secondary targets.
llvm-svn: 42688
|
|
|
|
| |
llvm-svn: 42235
|
|
|
|
|
|
| |
for *which* apfloat to use for a particular type.
llvm-svn: 42234
|
|
|
|
|
|
|
|
| |
hard coded paths in the llvm project files.
Changed windows detection to use LLVM pp constant.
llvm-svn: 41878
|
|
|
|
| |
llvm-svn: 41736
|
|
|
|
| |
llvm-svn: 41688
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
to using
a llvm::StringMap. This dramatically reduces the startup time of the preprocessor,
speeding up -Eonly on xalankbmk by 2.2%.
llvm-svn: 40396
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
compute type alignment. This info is needed for struct layout.
llvm-svn: 39850
|
|
|
|
|
|
| |
(needed on Solaris)
llvm-svn: 39781
|
|
|
|
| |
llvm-svn: 39671
|