Douglas Gregor
9109629e55
Implement chained PCH support for the macro definitions stored within
...
the "detailed" preprocessing record.
llvm-svn: 115417
2010-10-02 19:29:26 +00:00
Douglas Gregor
36ea4d4f45
Revert r115336 ("Thread PerFileData through everything."), because
...
we're missing the corresponding changes in the LLVM repository.
llvm-svn: 115340
2010-10-01 20:33:34 +00:00
Sebastian Redl
7b1b2268e2
Thread PerFileData through everything. This allows us to remap stuff later.
...
llvm-svn: 115336
2010-10-01 19:59:15 +00:00
Sebastian Redl
3f6b753f9d
Record module loaders and module source order.
...
llvm-svn: 115334
2010-10-01 19:59:12 +00:00
Douglas Gregor
7fb25418ed
Implement the C++0x "trailing return type" feature, e.g.,
...
auto f(int) -> int
from Daniel Wallin!
(With a few minor bug fixes from me).
llvm-svn: 115322
2010-10-01 18:44:50 +00:00
Douglas Gregor
aa43301842
If we get a TU_CONTEXT update from a chained PCH file before we
...
actually have an ASTContext, delay the processing of that
update. Patch by Sebastian Redl! Fixes <rdar://problem/8499034>.
llvm-svn: 115263
2010-10-01 01:18:02 +00:00
Argyrios Kyrtzidis
58c65410ac
Support implicit includes when generating a PCH and allow the user to pass a -include on the command line following the PCH include.
...
Fixes rdar://7382084.
llvm-svn: 115159
2010-09-30 16:53:50 +00:00
Sebastian Redl
4102dd5eb5
Fix a bug in loading macro records. Fixes yet another crash in libclang.
...
llvm-svn: 114940
2010-09-28 02:55:49 +00:00
Sebastian Redl
da6a21cdd2
Fix a use of an invalidated reference due to a hash map reallocating.
...
llvm-svn: 114937
2010-09-28 02:24:44 +00:00
Sebastian Redl
9609b4f1a8
When chaining PCHs, only write PPRecords that don't come from PCH, and give them the correct IDs. Fixes a crash in XCode.
...
llvm-svn: 114913
2010-09-27 22:18:47 +00:00
Douglas Gregor
2fb99df2c3
When setting the globally-visible declarations for a particular
...
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
2010-09-24 23:29:12 +00:00
Sebastian Redl
c1d035f6a3
Change source manager serialization to be less tied to the PCH model.
...
llvm-svn: 114575
2010-09-22 20:19:08 +00:00
Sebastian Redl
96371b446e
Only preload SLocEntries after the entire PCH chain was loaded.
...
llvm-svn: 114518
2010-09-22 00:42:30 +00:00
Sebastian Redl
949fe9e03b
Reshuffle PerFileData's members to make more sense.
...
llvm-svn: 114517
2010-09-22 00:42:27 +00:00
Sebastian Redl
50e2658f63
Macro definitions in AST files have their own IDs.
...
llvm-svn: 114014
2010-09-15 19:54:06 +00:00
Benjamin Kramer
25f9ea6f0a
Replace loops with SmallVector::append.
...
llvm-svn: 113185
2010-09-06 23:43:28 +00:00
Argyrios Kyrtzidis
d05f3e3730
Fix a C++ PCH problem which was exposed by r113019. CXXBaseOrMemberInitializer's IsWritten and source order is not set.
...
llvm-svn: 113161
2010-09-06 19:04:27 +00:00
Chandler Carruth
5408017356
Rename *PendingImplicitInstantiations to *PendingInstantiations. No
...
functionality changed.
llvm-svn: 112040
2010-08-25 08:44:16 +00:00
John McCall
19c1bfd1b0
Move more stuff out of Sema.h.
...
llvm-svn: 112026
2010-08-25 05:32:35 +00:00
Sebastian Redl
aba202b430
AST reader support for having specializations of templates from earlier in the chain.
...
llvm-svn: 111985
2010-08-24 22:50:19 +00:00
John McCall
cc14d1fd23
More header elimination. The goal of all this is to allow Parser to
...
#include Sema.h while keeping all the AST declarations opaque. That may
not be reasonably attainable, though.
llvm-svn: 111907
2010-08-24 08:50:51 +00:00
John McCall
bfd822ce64
Remove a header dependency from Sema.h at the cost of some type safety.
...
If someone wants to fix this some other way....
llvm-svn: 111905
2010-08-24 07:32:53 +00:00
Sebastian Redl
9617e7e8c7
Add testcase for C++ chained PCH and fix the bugs it uncovered in name lookup.
...
llvm-svn: 111882
2010-08-24 00:50:16 +00:00
Sebastian Redl
d7dce0a44d
Read the UPDATE_VISIBLE record, and add its visible decls to the lookup tables. Also, free the lookup tables when destructing the ASTReader.
...
llvm-svn: 111880
2010-08-24 00:50:04 +00:00
Sebastian Redl
9d8f58b5d7
Correctly initialize the visible decls pointer if there are no visible decls for a record.
...
llvm-svn: 111879
2010-08-24 00:50:00 +00:00
Sebastian Redl
471ac2f02e
Baby step towards supporting namespaces in chained PCH.
...
llvm-svn: 111878
2010-08-24 00:49:55 +00:00
John McCall
4887165193
DeclPtrTy -> Decl *
...
llvm-svn: 111733
2010-08-21 09:40:31 +00:00
Argyrios Kyrtzidis
d32ee89ea2
Fix an issue with writing to PCH another included PCH, introduced by the "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
2010-08-20 23:35:55 +00:00
Argyrios Kyrtzidis
ba88bfab37
Use the AST on-disk hash table for name lookup inside a DeclContext.
...
*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
2010-08-20 16:04:35 +00:00
Argyrios Kyrtzidis
07347321c6
Introduce the mechanism for building an AST on-disk hash table for name lookup inside a DeclContext but don't use it yet.
...
llvm-svn: 111635
2010-08-20 16:04:27 +00:00
Argyrios Kyrtzidis
bb5c7eae4c
serialization::TypeID is used with or without qualifiers, both as index and as index + qualifiers.
...
Disambiguate and provide some type safety by using a new class TypeIdx for the "TypeID as index" semantics.
llvm-svn: 111630
2010-08-20 16:03:59 +00:00
Argyrios Kyrtzidis
4bd97102e9
Share the common code of ComputeHash(Selector Sel) instead of keeping 2 copies in PCHReader and PCHWriter.
...
No functionality change.
llvm-svn: 111629
2010-08-20 16:03:52 +00:00
Douglas Gregor
b473b07cff
Make sure to deallocate the identifier lookup tables and selector tables
...
when destroying an ASTReader. Plugs a leak that shows up in libclang.
llvm-svn: 111488
2010-08-19 00:28:17 +00:00
Sebastian Redl
539c506152
Rename pch namespace to serialization.
...
llvm-svn: 111478
2010-08-18 23:57:32 +00:00
Sebastian Redl
f164204baa
Rename stuff in PCHBitCodes.h
...
llvm-svn: 111475
2010-08-18 23:57:22 +00:00
Sebastian Redl
f5b1346738
Rename the ASTReader header files.
...
llvm-svn: 111474
2010-08-18 23:57:17 +00:00
Sebastian Redl
3b3c874f68
Rename the ASTReader implementation files.
...
llvm-svn: 111473
2010-08-18 23:57:11 +00:00