f4e955b694be22926f5ceb41e55d319ce9ff4aab |
|
11-Feb-2013 |
Douglas Gregor <dgregor@apple.com> |
[Modules] Cope better with top-level declarations loaded after being declared in the current translation unit <rdar://problem/13189985>. These two related tweaks to keep the information associated with a given identifier correct when the identifier has been given some top-level information (say, a top-level declaration) and more information is then loaded from a module. The first ensures that an identifier that was "interesting" before being loaded from an AST is considered to be different from its on-disk counterpart. Otherwise, we lose such changes when writing the current translation unit as a module. Second, teach the code that injects AST-loaded names into the identifier chain for name lookup to keep the most recent declaration, so that we don't end up confusing our declaration chains by having a different declaration in there. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174895 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/Modules/Inputs/redecl-merge-bottom.h
|
1b257afbae854c6817f26b7d61c4fed8ff7aebad |
|
11-Dec-2012 |
Douglas Gregor <dgregor@apple.com> |
Use @import rather than @__experimental_modules_import, since the latter is rather a mess to type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169919 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/Modules/Inputs/redecl-merge-bottom.h
|
39d26c3e499470cd80a3e6f26f11ac681cd9712c |
|
02-Oct-2012 |
Axel Naumann <Axel.Naumann@cern.ch> |
Merge pending instantiations instead of overwriting existing ones. Check whether a pending instantiation needs to be instantiated (or whether an instantiation already exists). Verify the size of the PendingInstantiations record (was only checking size of existing PendingInstantiations). Migrate Obj-C++ part of redecl-merge into separate test, now that this is growing. templates.mm: test that CodeGen has seen exactly one definition of template instantiations. redecl-merge.m: use "@" specifier for expected-diagnostics. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164993 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/Modules/Inputs/redecl-merge-bottom.h
|
32ad2ee2618745ce3da51c2ae066ed5f21157c07 |
|
01-Mar-2012 |
Ted Kremenek <kremenek@apple.com> |
Change @import to @__experimental_modules_import. We are not ready to commit to a particular syntax for modules, and don't have time to push it forward in the near future. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151841 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/Modules/Inputs/redecl-merge-bottom.h
|
1ca4a5c41b8707b5fafcd1af1c9824b1bb19a399 |
|
03-Jan-2012 |
Douglas Gregor <dgregor@apple.com> |
Implement cross-module declaration merging for tag declarations, so that if two modules A and B both contain a declaration of a tag such as struct X; and those two modules are unrelated, the two declarations of X will be merged into a single redeclaration chain. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147488 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/Modules/Inputs/redecl-merge-bottom.h
|
5948ae1021122164b22f74353bb7fe325a64f616 |
|
03-Jan-2012 |
Douglas Gregor <dgregor@apple.com> |
Introduce a non-uglified syntax for module imports in Objective-C: @import identifier [. identifier]* ; git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147452 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/Modules/Inputs/redecl-merge-bottom.h
|
dba9361891ab147b6ea658c1834bc1d660f5226b |
|
01-Jan-2012 |
Douglas Gregor <dgregor@apple.com> |
Implement declaration merging for Objective-C protocols across multiple, disjoint modules. There is far too much duplicating with the ObjCInterfaceDecl case here, which I'll eliminate shortly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147417 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/Modules/Inputs/redecl-merge-bottom.h
|
27c6da284f90e32cda0ec8f52a2b6ba5a2613252 |
|
01-Jan-2012 |
Douglas Gregor <dgregor@apple.com> |
Wire up redeclaration chains for Objective-C protocols, so that both forward declarations and definitions of an Objective-C protocol are represented within a single chain of ObjCProtocolDecls. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147412 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/Modules/Inputs/redecl-merge-bottom.h
|
c3cfd2ab3338d47861ece597212f21b972ebe727 |
|
22-Dec-2011 |
Douglas Gregor <dgregor@apple.com> |
Serialize the AST reader's mapping from canonical declarations to the set of (previously-canonical) declaration IDs to the module file, so that future AST reader instances that load the module know which declarations are merged. This is important in the fairly tricky case where a declaration of an entity, e.g., @class X; occurs before the import of a module that also declares that entity. We merge the declarations, and record the fact that the declaration of X loaded from the module was merged into the (now canonical) declaration of X that we parsed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147181 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/Modules/Inputs/redecl-merge-bottom.h
|
cce54aa6a40e4c39b25532336e17ce40f0a7e087 |
|
22-Dec-2011 |
Douglas Gregor <dgregor@apple.com> |
If we end up merging an Objective-C class with an existing Objective-C class that comes from a different module file, make sure that we load all of the pending declarations for the original declaration. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147168 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/Modules/Inputs/redecl-merge-bottom.h
|
f63b0a5f5445830a845895ee16f3affeaffd2e9d |
|
19-Dec-2011 |
Douglas Gregor <dgregor@apple.com> |
Re-implement (de-)serialization of redeclaration chains for redeclaration templates (RedeclarableTemplateDecl), similarly to the way (de-)serialization is implemented for Redeclarable<T>. In the process, found a simpler formulation for handling redeclaration chains and implemented that in both places. The new test establishes that we're building the redeclaration chains properly. However, the FIXME indicates where we're tickling a different bug that has to do with us not setting the DefinitionData pointer properly in redeclarations that we detected after the definition itself was deserialized. The (separable) fix for that bug is forthcoming. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146883 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/Modules/Inputs/redecl-merge-bottom.h
|
ecb19382e1041f4e90f44c541173b85e4f328b84 |
|
19-Dec-2011 |
Douglas Gregor <dgregor@apple.com> |
Optimize serialized representation of redeclarable declarations for which there are no redeclarations. This reduced by size of the PCH file for Cocoa.h by ~650k: ~536k of that was in the new LOCAL_REDECLARATIONS table, which went from a ridiculous 540k down to an acceptable 3.5k, while the rest was due to the more compact abbreviated representation of redeclarable declaration kinds (which no longer need to store the 'first' declaration ID). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146869 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/Modules/Inputs/redecl-merge-bottom.h
|
a1be278c4f3a234ff61f04018d26c6beecde1654 |
|
18-Dec-2011 |
Douglas Gregor <dgregor@apple.com> |
Completely re-implement (de-)serialization of declaration chains. The previous implementation relied heavily on the declaration chain being stored as a (circular) linked list on disk, as it is in memory. However, when deserializing from multiple modules, the different chains could get mixed up, leading to broken declaration chains. The new solution keeps track of the first and last declarations in the chain for each module file. When we load a declaration, we search all of the module files for redeclarations of that declaration, then splice together all of the lists into a coherent whole (along with any redeclarations that were actually parsed). As a drive-by fix, (de-)serialize the redeclaration chains of TypedefNameDecls, which had somehow gotten missed previously. Add a test of this serialization. This new scheme creates a redeclaration table that is fairly large in the PCH file (on the order of 400k for Cocoa.h's 12MB PCH file). The table is mmap'd in and searched via a binary search, but it's still quite large. A future tweak will eliminate entries for declarations that have no redeclarations anywhere, and should drastically reduce the size of this table. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146841 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/Modules/Inputs/redecl-merge-bottom.h
|