Add stopgap option -fmodule-implementation-of <name>
This flag specifies that we are building an implementation file of the module <name>, preventing importing <name> as a module. This does not consider this to be the 'current module' for the purposes of doing modular checks like decluse or non-modular-include warnings, unlike -fmodule-name. This is needed as a stopgap until: 1) we can resolve relative includes to a VFS-mapped module (or can safely import a header textually and as part of a module) and ideally 2) we can safely do incremental rebuilding when implementation files import submodules. llvm-svn: 213767
This commit is contained in:
@@ -1495,6 +1495,14 @@ static void ParseLangArgs(LangOptions &Opts, ArgList &Args, InputKind IK,
|
||||
Opts.DebuggerObjCLiteral = Args.hasArg(OPT_fdebugger_objc_literal);
|
||||
Opts.ApplePragmaPack = Args.hasArg(OPT_fapple_pragma_pack);
|
||||
Opts.CurrentModule = Args.getLastArgValue(OPT_fmodule_name);
|
||||
Opts.ImplementationOfModule =
|
||||
Args.getLastArgValue(OPT_fmodule_implementation_of);
|
||||
|
||||
if (!Opts.CurrentModule.empty() && !Opts.ImplementationOfModule.empty() &&
|
||||
Opts.CurrentModule != Opts.ImplementationOfModule) {
|
||||
Diags.Report(diag::err_conflicting_module_names)
|
||||
<< Opts.CurrentModule << Opts.ImplementationOfModule;
|
||||
}
|
||||
|
||||
if (Arg *A = Args.getLastArg(OPT_faddress_space_map_mangling_EQ)) {
|
||||
switch (llvm::StringSwitch<unsigned>(A->getValue())
|
||||
|
||||
Reference in New Issue
Block a user