| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
| |
Reviewed by: Chris Lattner
- Added a method "IgnoreDiagnostic" so that the diagnostic client can
tell the diagnostic object that it doesn't want to handle a particular
diagnostic message. In which case, it won't be counted as either a
diagnostic or error.
llvm-svn: 39641
|
| |
|
|
|
|
| |
- Say! why don't we increment the NumDiagnostics variable too?
llvm-svn: 39616
|
| |
|
|
|
|
|
|
|
| |
Reviewed by: Chris Lattner
- Make the counting of errors and diagnostic messages sane. Place them into the
Diagnostic class instead of in the DiagnosticClient class.
llvm-svn: 39615
|
| |
|
|
| |
llvm-svn: 39502
|
| |
|
|
| |
llvm-svn: 39460
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Submitted by:
Reviewed by:
An important, but truly mind numbing change.
Added 6 flavors of Sema::Diag() that take 1 or two SourceRanges. Considered
adding 3 flavors (using default args), however this wasn't as clear.
Removed 2 flavors of Sema::Diag() that took LexerToken's (they weren't used).
Changed all the typechecking routines to pass the appropriate range(s).
Hacked the diagnostic machinery and driver to acccommodate the new data.
What's left? A FIXME in clang.c to use the ranges. Chris offered to do the
honors:-) Which includes taking us to the end of an identifier:-)
llvm-svn: 39456
|
| |
|
|
|
|
| |
etc.
llvm-svn: 39447
|
| |
|
|
| |
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
|