| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
chained PCH.
llvm-svn: 117533
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
getCanonicalType() to make sure that the type we got back is actually
canonical. This is the case for most types, which always build a
canonical type when given canonical components. However, some types that
involve expressions in their canonicalization (e.g., array types with
dependent sizes) don't always build canonical types from canonical
components, because there is no such thing as a "canonical"
expression. Therefore, we do this extra mapping to ensure that the
canonical types we store are actually canonical.
llvm-svn: 117344
|
| |
|
|
|
|
|
|
|
|
|
|
| |
committed after
its initial creation/deserialization and store the changes in a chained PCH.
The idea is that the AST entities call methods on the ASTMutationListener to give notifications
of changes; the PCHWriter implements the ASTMutationListener interface and stores the incremental changes
of the updated entity. WIP
llvm-svn: 117235
|
| |
|
|
|
|
|
|
| |
definition data when loaded from PCH.
Temporary disable 'test/PCH/chain-cxx.cpp' until a better way to fix it is in place.
llvm-svn: 117234
|
| |
|
|
|
|
|
|
| |
more closely parallel the computation of linkage. This gets us to a state
much closer to what gcc emits, modulo bugs, which will undoubtedly arise in
abundance.
llvm-svn: 117147
|
| |
|
|
|
|
|
|
|
|
| |
This adds an option to set the _MSC_VER macro without
recompiling. This is very useful when testing compatibility
with the Windows SDK and c++stdlib headers.
-fmsc-version=<version> (defaults to VS2003 (1300))
llvm-svn: 116999
|
| |
|
|
| |
llvm-svn: 116990
|
| |
|
|
|
|
|
|
|
| |
inclusion directives, keeping track of every #include, #import,
etc. in the translation unit. We keep track of the source location and
kind of the inclusion, how the file name was spelled, and the
underlying file to which the inclusion resolved.
llvm-svn: 116952
|
| |
|
|
|
|
| |
QualifierInfos (rdar://8513756).
llvm-svn: 116598
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
identifiers to determine good typo-correction candidates. Once we've
identified those candidates, we perform name lookup on each of them
and the consider the results.
This optimization makes typo correction > 2x faster on a benchmark
example using a single typo (NSstring) in a tiny file that includes
Cocoa.h from a precompiled header, since we are deserializing far less
information now during typo correction.
There is a semantic change here, which is interesting. The presence of
a similarly-named entity that is not visible can now affect typo
correction. This is both good (you won't get weird corrections if the
thing you wanted isn't in scope) and bad (you won't get good
corrections if there is a similarly-named-but-completely-unrelated
thing). Time will tell whether it was a good choice or not.
llvm-svn: 116528
|
| |
|
|
| |
llvm-svn: 116524
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
iterate over them,
instead of deserializing the complete declaration context of the record.
Iterating over the fields of a record is very common (e.g to determine the layout), unfortunately we needlessly deserialize every declaration
that the declaration context of the record contains; this can be bad for large C++ classes that contain a lot of methods.
Fix this by allow deserialization of just the fields when we want to iterate over them.
Progress for rdar://7260160.
llvm-svn: 116507
|
| |
|
|
| |
llvm-svn: 116020
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
following amusing sequence:
- AST writing schedules writing a type X* that it had never seen
before
- AST writing starts writing another declaration, ends up
deserializing X* from a prior AST file. Now we have two type IDs for
the same type!
- AST writer tries to write X*. It only has the lower-numbered ID
from the the prior AST file, so references to the higher-numbered ID
that was scheduled for writing go off into lalaland.
To fix this, keep the higher-numbered ID so we end up writing the type
twice. Since this issue occurs so rarely, and type records are
generally rather small, I deemed this better than the alternative: to
keep a separate mapping from the higher-numbered IDs to the
lower-numbered IDs, which we would end up having to check whenever we
want to deserialize any type.
Fixes <rdar://problem/8511624>, I think.
llvm-svn: 115647
|
| |
|
|
|
|
| |
preamble or main file. Base Decls' PCHLevel on this to make it more sane.
llvm-svn: 115626
|
| |
|
|
| |
llvm-svn: 115625
|
| |
|
|
|
|
| |
the "detailed" preprocessing record.
llvm-svn: 115417
|
| |
|
|
|
|
| |
we're missing the corresponding changes in the LLVM repository.
llvm-svn: 115340
|
| |
|
|
| |
llvm-svn: 115336
|
| |
|
|
| |
llvm-svn: 115334
|
| |
|
|
|
|
|
|
|
|
| |
auto f(int) -> int
from Daniel Wallin!
(With a few minor bug fixes from me).
llvm-svn: 115322
|
| |
|
|
|
|
|
| |
actually have an ASTContext, delay the processing of that
update. Patch by Sebastian Redl! Fixes <rdar://problem/8499034>.
llvm-svn: 115263
|
| |
|
|
|
|
|
|
| |
-include on the command line following the PCH include.
Fixes rdar://7382084.
llvm-svn: 115159
|
| |
|
|
| |
llvm-svn: 114940
|
| |
|
|
| |
llvm-svn: 114937
|
| |
|
|
|
|
| |
them the correct IDs. Fixes a crash in XCode.
llvm-svn: 114913
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
identifier, we may have a Sema object but no translation unit scope
(because parsing is finished). In this case, we still need to update
the IdResolver, which might still be used when writing a PCH
containing another PCH (without chaining). This bug manifested as a
failure with precompiled preambles.
Also, add a little environment-variable-sensitive logging for
libclang.
llvm-svn: 114774
|
| |
|
|
| |
llvm-svn: 114575
|
| |
|
|
| |
llvm-svn: 114518
|
| |
|
|
| |
llvm-svn: 114517
|
| |
|
|
| |
llvm-svn: 114014
|
| |
|
|
| |
llvm-svn: 113185
|
| |
|
|
|
|
| |
CXXBaseOrMemberInitializer's IsWritten and source order is not set.
llvm-svn: 113161
|
| |
|
|
|
|
| |
functionality changed.
llvm-svn: 112040
|
| |
|
|
| |
llvm-svn: 112026
|
| |
|
|
|
|
| |
the chain.
llvm-svn: 111985
|
| |
|
|
|
|
|
| |
#include Sema.h while keeping all the AST declarations opaque. That may
not be reasonably attainable, though.
llvm-svn: 111907
|
| |
|
|
|
|
| |
If someone wants to fix this some other way....
llvm-svn: 111905
|
| |
|
|
| |
llvm-svn: 111882
|
| |
|
|
|
|
| |
tables. Also, free the lookup tables when destructing the ASTReader.
llvm-svn: 111880
|
| |
|
|
|
|
| |
for a record.
llvm-svn: 111879
|
| |
|
|
| |
llvm-svn: 111878
|
| |
|
|
| |
llvm-svn: 111733
|
| |
|
|
|
|
|
|
|
|
|
| |
"using an AST on-disk hash table for name lookup" commit.
When including a PCH and later re-emitting to another PCH, the name lookup tables of DeclContexts
may be incomplete, since we now lazily deserialize the visible decls of a particular name.
Fix the issue by iterating over the un-deserialized visible decls and completing the lookup tables
of DeclContexts before writing them out.
llvm-svn: 111698
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
*Huge* improvement over the amount of deserializing that we do for C++ lookup.
e.g, if he have the Carbon header precompiled and include it on a file containing this:
int x;
these are the before/after stats:
BEFORE:
*** AST File Statistics:
578 stat cache hits
4 stat cache misses
548/30654 source location entries read (1.787695%)
15907/16501 types read (96.400223%)
53525/59955 declarations read (89.275291%)
33993/43525 identifiers read (78.099945%)
41516/51891 statements read (80.006165%)
77/5317 macros read (1.448185%)
0/6335 lexical declcontexts read (0.000000%)
1/5424 visible declcontexts read (0.018437%)
AFTER using the on-disk table:
*** AST File Statistics:
578 stat cache hits
4 stat cache misses
548/30654 source location entries read (1.787695%)
10/16501 types read (0.060602%)
9/59955 declarations read (0.015011%)
161/43525 identifiers read (0.369902%)
20/51891 statements read (0.038542%)
6/5317 macros read (0.112846%)
0/6335 lexical declcontexts read (0.000000%)
2/5424 visible declcontexts read (0.036873%)
There's only one issue affecting mostly the precompiled preambles which I will address soon.
llvm-svn: 111636
|
| |
|
|
|
|
| |
lookup inside a DeclContext but don't use it yet.
llvm-svn: 111635
|
| |
|
|
|
|
|
|
| |
as index + qualifiers.
Disambiguate and provide some type safety by using a new class TypeIdx for the "TypeID as index" semantics.
llvm-svn: 111630
|
| |
|
|
|
|
|
|
| |
copies in PCHReader and PCHWriter.
No functionality change.
llvm-svn: 111629
|
| |
|
|
|
|
| |
when destroying an ASTReader. Plugs a leak that shows up in libclang.
llvm-svn: 111488
|
| |
|
|
| |
llvm-svn: 111478
|