: 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;
}
};
}
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.
// 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;
}
// 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