зеркало из https://github.com/microsoft/clang-1.git
Driver: Fix arg_iterator typing to reflect that it is really an iterator over Arg*s.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105838 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
c72cc5072c
Коммит
7e4953e5c6
|
@ -52,9 +52,9 @@ namespace driver {
|
|||
void SkipToNextArg();
|
||||
|
||||
public:
|
||||
typedef const Arg* value_type;
|
||||
typedef const Arg* reference;
|
||||
typedef const Arg* pointer;
|
||||
typedef Arg * const * value_type;
|
||||
typedef Arg * const & reference;
|
||||
typedef Arg * const * pointer;
|
||||
typedef std::forward_iterator_tag iterator_category;
|
||||
typedef std::ptrdiff_t difference_type;
|
||||
|
||||
|
@ -67,7 +67,7 @@ namespace driver {
|
|||
|
||||
operator const Arg*() { return *Current; }
|
||||
reference operator*() const { return *Current; }
|
||||
pointer operator->() const { return *Current; }
|
||||
pointer operator->() const { return Current; }
|
||||
|
||||
arg_iterator &operator++() {
|
||||
++Current;
|
||||
|
|
|
@ -147,8 +147,8 @@ void ArgList::AddAllArgs(ArgStringList &Output, OptSpecifier Id0,
|
|||
OptSpecifier Id1, OptSpecifier Id2) const {
|
||||
for (arg_iterator it = filtered_begin(Id0, Id1, Id2),
|
||||
ie = filtered_end(); it != ie; ++it) {
|
||||
it->claim();
|
||||
it->render(*this, Output);
|
||||
(*it)->claim();
|
||||
(*it)->render(*this, Output);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -156,9 +156,9 @@ void ArgList::AddAllArgValues(ArgStringList &Output, OptSpecifier Id0,
|
|||
OptSpecifier Id1, OptSpecifier Id2) const {
|
||||
for (arg_iterator it = filtered_begin(Id0, Id1, Id2),
|
||||
ie = filtered_end(); it != ie; ++it) {
|
||||
it->claim();
|
||||
for (unsigned i = 0, e = it->getNumValues(); i != e; ++i)
|
||||
Output.push_back(it->getValue(*this, i));
|
||||
(*it)->claim();
|
||||
for (unsigned i = 0, e = (*it)->getNumValues(); i != e; ++i)
|
||||
Output.push_back((*it)->getValue(*this, i));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -167,14 +167,14 @@ void ArgList::AddAllArgsTranslated(ArgStringList &Output, OptSpecifier Id0,
|
|||
bool Joined) const {
|
||||
for (arg_iterator it = filtered_begin(Id0),
|
||||
ie = filtered_end(); it != ie; ++it) {
|
||||
it->claim();
|
||||
(*it)->claim();
|
||||
|
||||
if (Joined) {
|
||||
Output.push_back(MakeArgString(llvm::StringRef(Translation) +
|
||||
it->getValue(*this, 0)));
|
||||
(*it)->getValue(*this, 0)));
|
||||
} else {
|
||||
Output.push_back(Translation);
|
||||
Output.push_back(it->getValue(*this, 0));
|
||||
Output.push_back((*it)->getValue(*this, 0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -182,7 +182,7 @@ void ArgList::AddAllArgsTranslated(ArgStringList &Output, OptSpecifier Id0,
|
|||
void ArgList::ClaimAllArgs(OptSpecifier Id0) const {
|
||||
for (arg_iterator it = filtered_begin(Id0),
|
||||
ie = filtered_end(); it != ie; ++it)
|
||||
it->claim();
|
||||
(*it)->claim();
|
||||
}
|
||||
|
||||
const char *ArgList::MakeArgString(const llvm::Twine &T) const {
|
||||
|
|
|
@ -157,18 +157,18 @@ void Clang::AddPreprocessingOptions(const Driver &D,
|
|||
for (arg_iterator it = Args.filtered_begin(options::OPT_MT,
|
||||
options::OPT_MQ),
|
||||
ie = Args.filtered_end(); it != ie; ++it) {
|
||||
const Arg *A = *it;
|
||||
A->claim();
|
||||
|
||||
it->claim();
|
||||
|
||||
if (it->getOption().matches(options::OPT_MQ)) {
|
||||
if (A->getOption().matches(options::OPT_MQ)) {
|
||||
CmdArgs.push_back("-MT");
|
||||
llvm::SmallString<128> Quoted;
|
||||
QuoteTarget(it->getValue(Args), Quoted);
|
||||
QuoteTarget(A->getValue(Args), Quoted);
|
||||
CmdArgs.push_back(Args.MakeArgString(Quoted));
|
||||
|
||||
// -MT flag - no change
|
||||
} else {
|
||||
it->render(Args, CmdArgs);
|
||||
A->render(Args, CmdArgs);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -639,8 +639,8 @@ void Clang::AddX86TargetArgs(const ArgList &Args,
|
|||
|
||||
for (arg_iterator it = Args.filtered_begin(options::OPT_m_x86_Features_Group),
|
||||
ie = Args.filtered_end(); it != ie; ++it) {
|
||||
llvm::StringRef Name = it->getOption().getName();
|
||||
it->claim();
|
||||
llvm::StringRef Name = (*it)->getOption().getName();
|
||||
(*it)->claim();
|
||||
|
||||
// Skip over "-m".
|
||||
assert(Name.startswith("-m") && "Invalid feature name.");
|
||||
|
@ -1428,14 +1428,14 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
Args.AddAllArgValues(CmdArgs, options::OPT_Xclang);
|
||||
for (arg_iterator it = Args.filtered_begin(options::OPT_mllvm),
|
||||
ie = Args.filtered_end(); it != ie; ++it) {
|
||||
it->claim();
|
||||
(*it)->claim();
|
||||
|
||||
// We translate this by hand to the -cc1 argument, since nightly test uses
|
||||
// it and developers have been trained to spell it with -mllvm.
|
||||
if (llvm::StringRef(it->getValue(Args, 0)) == "-disable-llvm-optzns")
|
||||
if (llvm::StringRef((*it)->getValue(Args, 0)) == "-disable-llvm-optzns")
|
||||
CmdArgs.push_back("-disable-llvm-optzns");
|
||||
else
|
||||
it->render(Args, CmdArgs);
|
||||
(*it)->render(Args, CmdArgs);
|
||||
}
|
||||
|
||||
if (Output.getType() == types::TY_Dependencies) {
|
||||
|
@ -1492,8 +1492,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
// we are allowing compilation to continue.
|
||||
for (arg_iterator it = Args.filtered_begin(options::OPT_pg),
|
||||
ie = Args.filtered_end(); it != ie; ++it) {
|
||||
it->claim();
|
||||
D.Diag(clang::diag::warn_drv_clang_unsupported) << it->getAsString(Args);
|
||||
(*it)->claim();
|
||||
D.Diag(clang::diag::warn_drv_clang_unsupported) << (*it)->getAsString(Args);
|
||||
}
|
||||
|
||||
// Claim some arguments which clang supports automatically.
|
||||
|
@ -1860,10 +1860,10 @@ void darwin::CC1::AddCC1OptionsArgs(const ArgList &Args, ArgStringList &CmdArgs,
|
|||
for (arg_iterator it = Args.filtered_begin(options::OPT_f_Group,
|
||||
options::OPT_fsyntax_only),
|
||||
ie = Args.filtered_end(); it != ie; ++it) {
|
||||
if (!it->getOption().matches(options::OPT_fbuiltin_strcat) &&
|
||||
!it->getOption().matches(options::OPT_fbuiltin_strcpy)) {
|
||||
it->claim();
|
||||
it->render(Args, CmdArgs);
|
||||
if (!(*it)->getOption().matches(options::OPT_fbuiltin_strcat) &&
|
||||
!(*it)->getOption().matches(options::OPT_fbuiltin_strcpy)) {
|
||||
(*it)->claim();
|
||||
(*it)->render(Args, CmdArgs);
|
||||
}
|
||||
}
|
||||
} else
|
||||
|
|
|
@ -1092,33 +1092,34 @@ static void ParseHeaderSearchArgs(HeaderSearchOptions &Opts, ArgList &Args) {
|
|||
// Add -I... and -F... options in order.
|
||||
for (arg_iterator it = Args.filtered_begin(OPT_I, OPT_F),
|
||||
ie = Args.filtered_end(); it != ie; ++it)
|
||||
Opts.AddPath(it->getValue(Args), frontend::Angled, true,
|
||||
/*IsFramework=*/ it->getOption().matches(OPT_F));
|
||||
Opts.AddPath((*it)->getValue(Args), frontend::Angled, true,
|
||||
/*IsFramework=*/ (*it)->getOption().matches(OPT_F));
|
||||
|
||||
// Add -iprefix/-iwith-prefix/-iwithprefixbefore options.
|
||||
llvm::StringRef Prefix = ""; // FIXME: This isn't the correct default prefix.
|
||||
for (arg_iterator it = Args.filtered_begin(OPT_iprefix, OPT_iwithprefix,
|
||||
OPT_iwithprefixbefore),
|
||||
ie = Args.filtered_end(); it != ie; ++it) {
|
||||
if (it->getOption().matches(OPT_iprefix))
|
||||
Prefix = it->getValue(Args);
|
||||
else if (it->getOption().matches(OPT_iwithprefix))
|
||||
Opts.AddPath(Prefix.str() + it->getValue(Args),
|
||||
const Arg *A = *it;
|
||||
if (A->getOption().matches(OPT_iprefix))
|
||||
Prefix = A->getValue(Args);
|
||||
else if (A->getOption().matches(OPT_iwithprefix))
|
||||
Opts.AddPath(Prefix.str() + A->getValue(Args),
|
||||
frontend::System, false, false);
|
||||
else
|
||||
Opts.AddPath(Prefix.str() + it->getValue(Args),
|
||||
Opts.AddPath(Prefix.str() + A->getValue(Args),
|
||||
frontend::Angled, false, false);
|
||||
}
|
||||
|
||||
for (arg_iterator it = Args.filtered_begin(OPT_idirafter),
|
||||
ie = Args.filtered_end(); it != ie; ++it)
|
||||
Opts.AddPath(it->getValue(Args), frontend::After, true, false);
|
||||
Opts.AddPath((*it)->getValue(Args), frontend::After, true, false);
|
||||
for (arg_iterator it = Args.filtered_begin(OPT_iquote),
|
||||
ie = Args.filtered_end(); it != ie; ++it)
|
||||
Opts.AddPath(it->getValue(Args), frontend::Quoted, true, false);
|
||||
Opts.AddPath((*it)->getValue(Args), frontend::Quoted, true, false);
|
||||
for (arg_iterator it = Args.filtered_begin(OPT_isystem),
|
||||
ie = Args.filtered_end(); it != ie; ++it)
|
||||
Opts.AddPath(it->getValue(Args), frontend::System, true, false);
|
||||
Opts.AddPath((*it)->getValue(Args), frontend::System, true, false);
|
||||
|
||||
// FIXME: Need options for the various environment variables!
|
||||
}
|
||||
|
@ -1325,10 +1326,10 @@ static void ParsePreprocessorArgs(PreprocessorOptions &Opts, ArgList &Args,
|
|||
// Add macros from the command line.
|
||||
for (arg_iterator it = Args.filtered_begin(OPT_D, OPT_U),
|
||||
ie = Args.filtered_end(); it != ie; ++it) {
|
||||
if (it->getOption().matches(OPT_D))
|
||||
Opts.addMacroDef(it->getValue(Args));
|
||||
if ((*it)->getOption().matches(OPT_D))
|
||||
Opts.addMacroDef((*it)->getValue(Args));
|
||||
else
|
||||
Opts.addMacroUndef(it->getValue(Args));
|
||||
Opts.addMacroUndef((*it)->getValue(Args));
|
||||
}
|
||||
|
||||
Opts.MacroIncludes = Args.getAllArgValues(OPT_imacros);
|
||||
|
@ -1337,16 +1338,17 @@ static void ParsePreprocessorArgs(PreprocessorOptions &Opts, ArgList &Args,
|
|||
for (arg_iterator it = Args.filtered_begin(OPT_include, OPT_include_pch,
|
||||
OPT_include_pth),
|
||||
ie = Args.filtered_end(); it != ie; ++it) {
|
||||
const Arg *A = *it;
|
||||
// PCH is handled specially, we need to extra the original include path.
|
||||
if (it->getOption().matches(OPT_include_pch)) {
|
||||
if (A->getOption().matches(OPT_include_pch)) {
|
||||
std::string OriginalFile =
|
||||
PCHReader::getOriginalSourceFile(it->getValue(Args), Diags);
|
||||
PCHReader::getOriginalSourceFile(A->getValue(Args), Diags);
|
||||
if (OriginalFile.empty())
|
||||
continue;
|
||||
|
||||
Opts.Includes.push_back(OriginalFile);
|
||||
} else
|
||||
Opts.Includes.push_back(it->getValue(Args));
|
||||
Opts.Includes.push_back(A->getValue(Args));
|
||||
}
|
||||
|
||||
// Include 'altivec.h' if -faltivec option present
|
||||
|
@ -1355,11 +1357,12 @@ static void ParsePreprocessorArgs(PreprocessorOptions &Opts, ArgList &Args,
|
|||
|
||||
for (arg_iterator it = Args.filtered_begin(OPT_remap_file),
|
||||
ie = Args.filtered_end(); it != ie; ++it) {
|
||||
const Arg *A = *it;
|
||||
std::pair<llvm::StringRef,llvm::StringRef> Split =
|
||||
llvm::StringRef(it->getValue(Args)).split(';');
|
||||
llvm::StringRef(A->getValue(Args)).split(';');
|
||||
|
||||
if (Split.second.empty()) {
|
||||
Diags.Report(diag::err_drv_invalid_remap_file) << it->getAsString(Args);
|
||||
Diags.Report(diag::err_drv_invalid_remap_file) << A->getAsString(Args);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -1414,7 +1417,7 @@ void CompilerInvocation::CreateFromArgs(CompilerInvocation &Res,
|
|||
// Issue errors on unknown arguments.
|
||||
for (arg_iterator it = Args->filtered_begin(OPT_UNKNOWN),
|
||||
ie = Args->filtered_end(); it != ie; ++it)
|
||||
Diags.Report(diag::err_drv_unknown_argument) << it->getAsString(*Args);
|
||||
Diags.Report(diag::err_drv_unknown_argument) << (*it)->getAsString(*Args);
|
||||
|
||||
ParseAnalyzerArgs(Res.getAnalyzerOpts(), *Args, Diags);
|
||||
ParseCodeGenArgs(Res.getCodeGenOpts(), *Args, Diags);
|
||||
|
|
|
@ -136,7 +136,7 @@ void AssemblerInvocation::CreateFromArgs(AssemblerInvocation &Opts,
|
|||
// Issue errors on unknown arguments.
|
||||
for (arg_iterator it = Args->filtered_begin(cc1asoptions::OPT_UNKNOWN),
|
||||
ie = Args->filtered_end(); it != ie; ++it)
|
||||
Diags.Report(diag::err_drv_unknown_argument) << it->getAsString(*Args);
|
||||
Diags.Report(diag::err_drv_unknown_argument) << (*it) ->getAsString(*Args);
|
||||
|
||||
// Construct the invocation.
|
||||
|
||||
|
@ -154,10 +154,11 @@ void AssemblerInvocation::CreateFromArgs(AssemblerInvocation &Opts,
|
|||
bool First = true;
|
||||
for (arg_iterator it = Args->filtered_begin(OPT_INPUT),
|
||||
ie = Args->filtered_end(); it != ie; ++it, First=false) {
|
||||
const Arg *A = it;
|
||||
if (First)
|
||||
Opts.InputFile = it->getValue(*Args);
|
||||
Opts.InputFile = A->getValue(*Args);
|
||||
else
|
||||
Diags.Report(diag::err_drv_unknown_argument) << it->getAsString(*Args);
|
||||
Diags.Report(diag::err_drv_unknown_argument) << A->getAsString(*Args);
|
||||
}
|
||||
}
|
||||
Opts.LLVMArgs = Args->getAllArgValues(OPT_mllvm);
|
||||
|
|
Загрузка…
Ссылка в новой задаче