Richard Smith
47972afd10
[modules] Simplify -cc1 interface for enabling implicit module maps.
...
We used to have a flag to enable module maps, and two more flags to enable
implicit module maps. This is all redundant; we don't need any flag for
enabling module maps in the abstract, and we don't usually have -fno- flags for
-cc1. We now have just a single flag, -fimplicit-module-maps, that enables
implicitly searching the file system for module map files and loading them.
The driver interface is unchanged for now. We should probably rename
-fmodule-maps to -fimplicit-module-maps at some point.
llvm-svn: 239789
2015-06-16 00:08:24 +00:00
Richard Smith
f81c2cc6ca
[modules] For an inheriting constructor, the inherited constructor is stored in
...
a map keyed off the canonical declaration. Don't try to set it if we're loading
some non-canonical merged declaration.
llvm-svn: 230716
2015-02-27 01:57:00 +00:00
Richard Smith
f463436d9c
[modules] Make NamespaceAliasDecl redeclarable, as it should be. This fixes
...
merging of namespace aliases across modules and improves source fidelity.
Incidentally also fixes PR20816.
llvm-svn: 217103
2014-09-03 23:11:22 +00:00
Richard Smith
70d5850955
[modules] Fix deserialization cycle when loading a tag declaration with a typedef name for linkage purposes. When loading the type, delay loading its typedef until we've finished loading and merging the type. In its place, save out the name of the typedef, which we need for merging purposes.
...
llvm-svn: 216806
2014-08-30 00:04:23 +00:00
Richard Smith
b602c7f843
Add some missing test coverage for merging 'extern "C"' functions with modules.
...
llvm-svn: 216796
2014-08-29 22:33:38 +00:00
Richard Smith
b1108739e4
[modules] Don't assert when merging virtual functions that override other
...
functions. Also don't needlessly pull in non-canonical declarations of the
overridden virtual functions.
llvm-svn: 216503
2014-08-26 23:29:11 +00:00
Richard Smith
88ebade8d9
[modules] When merging a tag declaration that has a typedef name for linkage
...
purposes, look for other typedefs with that same name and merge into their
named tag declaration if there is one.
llvm-svn: 216312
2014-08-23 01:45:27 +00:00
Richard Smith
675d279af4
[modules] When we merge redecl chains or mark a decl used with an update
...
record, mark all subsequent decls as 'used' too, to maintain the AST invariant
that getPreviousDecl()->Used implies this->Used.
llvm-svn: 211050
2014-06-16 20:26:19 +00:00
Richard Smith
debcd500a0
Push implicitly-declared allocation functions into the IdResolver. Otherwise,
...
declaration merging in modules is unable to find them and we get bogus errors
and even crashes.
llvm-svn: 208944
2014-05-16 02:14:42 +00:00
Richard Smith
b45a6f72b6
Add missing serialization code for one of the CXXRecordDecl definition flags.
...
llvm-svn: 206493
2014-04-17 20:33:01 +00:00
Richard Smith
9dd9f036c6
Map from local decl IDs to global decl IDs when lazily deserializing friend decl chains.
...
llvm-svn: 189629
2013-08-30 00:23:29 +00:00
Richard Smith
42713d763f
If an unimported submodule of an imported module contains a declaration of a
...
global allocation or deallocation function, that should not cause that global
allocation or deallocation function to become unavailable.
llvm-svn: 186270
2013-07-14 02:01:48 +00:00