summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver/Option.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Driver/Option.cpp')
-rw-r--r--clang/lib/Driver/Option.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/clang/lib/Driver/Option.cpp b/clang/lib/Driver/Option.cpp
index 17d00f50aa6..5a967ea3df7 100644
--- a/clang/lib/Driver/Option.cpp
+++ b/clang/lib/Driver/Option.cpp
@@ -133,7 +133,7 @@ JoinedOption::JoinedOption(OptSpecifier ID, const char *Name,
Arg *JoinedOption::accept(const InputArgList &Args, unsigned &Index) const {
// Always matches.
- return new JoinedArg(this, Index++);
+ return new JoinedArg(this, Index++, strlen(getName()));
}
CommaJoinedOption::CommaJoinedOption(OptSpecifier ID, const char *Name,
@@ -191,7 +191,8 @@ Arg *MultiArgOption::accept(const InputArgList &Args, unsigned &Index) const {
return new SeparateArg(this, Index - 1 - NumArgs, NumArgs);
}
-JoinedOrSeparateOption::JoinedOrSeparateOption(OptSpecifier ID, const char *Name,
+JoinedOrSeparateOption::JoinedOrSeparateOption(OptSpecifier ID,
+ const char *Name,
const OptionGroup *Group,
const Option *Alias)
: Option(Option::JoinedOrSeparateClass, ID, Name, Group, Alias) {
@@ -202,7 +203,7 @@ Arg *JoinedOrSeparateOption::accept(const InputArgList &Args,
// If this is not an exact match, it is a joined arg.
// FIXME: Avoid strlen.
if (strlen(getName()) != strlen(Args.getArgString(Index)))
- return new JoinedArg(this, Index++);
+ return new JoinedArg(this, Index++, strlen(getName()));
// Otherwise it must be separate.
Index += 2;
@@ -227,6 +228,6 @@ Arg *JoinedAndSeparateOption::accept(const InputArgList &Args,
if (Index > Args.getNumInputArgStrings())
return 0;
- return new JoinedAndSeparateArg(this, Index - 2);
+ return new JoinedAndSeparateArg(this, Index - 2, strlen(getName()));
}
OpenPOWER on IntegriCloud