Be a little more permissive with -fmodules-ignore-macro= by removing everything after the second '=' if it is there.
llvm-svn: 174567
This commit is contained in:
parent
1ef75e55b9
commit
2236c20f5a
|
@ -754,13 +754,8 @@ namespace {
|
|||
: HSOpts(HSOpts) { }
|
||||
|
||||
bool operator()(const std::pair<std::string, bool> &def) const {
|
||||
// Dig out the macro name.
|
||||
StringRef MacroName = def.first;
|
||||
StringRef::size_type EqPos = MacroName.find('=');
|
||||
if (EqPos != StringRef::npos)
|
||||
MacroName = MacroName.substr(0, EqPos);
|
||||
|
||||
return HSOpts.ModulesIgnoreMacros.count(MacroName) > 0;
|
||||
StringRef MacroDef = def.first;
|
||||
return HSOpts.ModulesIgnoreMacros.count(MacroDef.split('=').first) > 0;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -816,8 +816,8 @@ static void ParseHeaderSearchArgs(HeaderSearchOptions &Opts, ArgList &Args) {
|
|||
|
||||
for (arg_iterator it = Args.filtered_begin(OPT_fmodules_ignore_macro),
|
||||
ie = Args.filtered_end(); it != ie; ++it) {
|
||||
const Arg *A = *it;
|
||||
Opts.ModulesIgnoreMacros.insert(A->getValue());
|
||||
StringRef MacroDef = (*it)->getValue();
|
||||
Opts.ModulesIgnoreMacros.insert(MacroDef.split('=').first);
|
||||
}
|
||||
|
||||
// Add -I..., -F..., and -index-header-map options in order.
|
||||
|
@ -1617,14 +1617,9 @@ std::string CompilerInvocation::getModuleHash() const {
|
|||
// If we're supposed to ignore this macro for the purposes of modules,
|
||||
// don't put it into the hash.
|
||||
if (!hsOpts.ModulesIgnoreMacros.empty()) {
|
||||
// Dig out the macro name.
|
||||
StringRef MacroName = I->first;
|
||||
StringRef::size_type EqPos = MacroName.find('=');
|
||||
if (EqPos != StringRef::npos)
|
||||
MacroName = MacroName.substr(0, EqPos);
|
||||
|
||||
// Check whether we're ignoring this macro.
|
||||
if (hsOpts.ModulesIgnoreMacros.count(MacroName))
|
||||
StringRef MacroDef = I->first;
|
||||
if (hsOpts.ModulesIgnoreMacros.count(MacroDef.split('=').first))
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -26,6 +26,13 @@
|
|||
// RUN: %clang_cc1 -fmodule-cache-path %t.modules -DIGNORED=1 -fmodules-ignore-macro=IGNORED -fmodules -I %S/Inputs -emit-pch -o %t.pch -x objective-c-header %s -verify
|
||||
// RUN: %clang_cc1 -fmodule-cache-path %t.modules -DIGNORED=1 -fmodules -I %S/Inputs -include-pch %t.pch -fmodules-ignore-macro=IGNORED -DNO_IGNORED_ANYWHERE -fmodules-ignore-macro=NO_IGNORED_ANYWHERE %s -verify
|
||||
|
||||
// Fifth trial: pass -DIGNORED=1 and -fmodules-ignore-macro=IGNORED=1
|
||||
// to both invocations, so modules will be built without the IGNORED
|
||||
// macro.
|
||||
// RUN: rm -rf %t.modules
|
||||
// RUN: %clang_cc1 -fmodule-cache-path %t.modules -DIGNORED=1 -fmodules-ignore-macro=IGNORED=1 -fmodules -I %S/Inputs -emit-pch -o %t.pch -x objective-c-header %s -verify
|
||||
// RUN: %clang_cc1 -fmodule-cache-path %t.modules -DIGNORED=1 -fmodules -I %S/Inputs -include-pch %t.pch -fmodules-ignore-macro=IGNORED=1 -DNO_IGNORED_ANYWHERE -fmodules-ignore-macro=NO_IGNORED_ANYWHERE %s -verify
|
||||
|
||||
// expected-no-diagnostics
|
||||
|
||||
#ifndef HEADER
|
||||
|
|
Loading…
Reference in New Issue