diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-03-29 22:29:05 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-03-29 22:29:05 +0000 |
commit | 478edc295efc560627053e2320bedd2f696ae028 (patch) | |
tree | 9545e251b27d675c2e0920177f7ee87bb6ad9ad0 /lib/Driver/Arg.cpp | |
parent | 9120f179fd2e354f067e4ef2c76dcf3fc4db8a16 (diff) |
Driver: Track which original arguments an arg is derived from, so that
we can properly claim arguments, even if they have been translated by
the tool chain.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68020 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Driver/Arg.cpp')
-rw-r--r-- | lib/Driver/Arg.cpp | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/lib/Driver/Arg.cpp b/lib/Driver/Arg.cpp index 1d8d2497b6..e227d7e2ea 100644 --- a/lib/Driver/Arg.cpp +++ b/lib/Driver/Arg.cpp @@ -14,11 +14,9 @@ using namespace clang::driver; -Arg::Arg(ArgClass _Kind, const Option *_Opt, unsigned _Index) - : Kind(_Kind), - Opt(_Opt), - Index(_Index), - Claimed(false) +Arg::Arg(ArgClass _Kind, const Option *_Opt, unsigned _Index, + const Arg *_BaseArg) + : Kind(_Kind), Opt(_Opt), BaseArg(_BaseArg), Index(_Index), Claimed(false) { } @@ -76,8 +74,8 @@ void Arg::renderAsInput(const ArgList &Args, ArgStringList &Output) const { Output.push_back(getValue(Args, i)); } -FlagArg::FlagArg(const Option *Opt, unsigned Index) - : Arg(FlagClass, Opt, Index) { +FlagArg::FlagArg(const Option *Opt, unsigned Index, const Arg *BaseArg) + : Arg(FlagClass, Opt, Index, BaseArg) { } void FlagArg::render(const ArgList &Args, ArgStringList &Output) const { @@ -89,8 +87,9 @@ const char *FlagArg::getValue(const ArgList &Args, unsigned N) const { return 0; } -PositionalArg::PositionalArg(const Option *Opt, unsigned Index) - : Arg(PositionalClass, Opt, Index) { +PositionalArg::PositionalArg(const Option *Opt, unsigned Index, + const Arg *BaseArg) + : Arg(PositionalClass, Opt, Index, BaseArg) { } void PositionalArg::render(const ArgList &Args, ArgStringList &Output) const { @@ -102,8 +101,8 @@ const char *PositionalArg::getValue(const ArgList &Args, unsigned N) const { return Args.getArgString(getIndex()); } -JoinedArg::JoinedArg(const Option *Opt, unsigned Index) - : Arg(JoinedClass, Opt, Index) { +JoinedArg::JoinedArg(const Option *Opt, unsigned Index, const Arg *BaseArg) + : Arg(JoinedClass, Opt, Index, BaseArg) { } void JoinedArg::render(const ArgList &Args, ArgStringList &Output) const { @@ -122,8 +121,8 @@ const char *JoinedArg::getValue(const ArgList &Args, unsigned N) const { } CommaJoinedArg::CommaJoinedArg(const Option *Opt, unsigned Index, - const char *Str) - : Arg(CommaJoinedClass, Opt, Index) { + const char *Str, const Arg *BaseArg) + : Arg(CommaJoinedClass, Opt, Index, BaseArg) { const char *Prev = Str; for (;; ++Str) { char c = *Str; @@ -149,8 +148,9 @@ const char *CommaJoinedArg::getValue(const ArgList &Args, unsigned N) const { return Values[N].c_str(); } -SeparateArg::SeparateArg(const Option *Opt, unsigned Index, unsigned _NumValues) - : Arg(SeparateClass, Opt, Index), NumValues(_NumValues) { +SeparateArg::SeparateArg(const Option *Opt, unsigned Index, unsigned _NumValues, + const Arg *BaseArg) + : Arg(SeparateClass, Opt, Index, BaseArg), NumValues(_NumValues) { } void SeparateArg::render(const ArgList &Args, ArgStringList &Output) const { @@ -172,8 +172,9 @@ const char *SeparateArg::getValue(const ArgList &Args, unsigned N) const { return Args.getArgString(getIndex() + 1 + N); } -JoinedAndSeparateArg::JoinedAndSeparateArg(const Option *Opt, unsigned Index) - : Arg(JoinedAndSeparateClass, Opt, Index) { +JoinedAndSeparateArg::JoinedAndSeparateArg(const Option *Opt, unsigned Index, + const Arg *BaseArg) + : Arg(JoinedAndSeparateClass, Opt, Index, BaseArg) { } void JoinedAndSeparateArg::render(const ArgList &Args, |