projects
/
oota-llvm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Don't copy information from aliasee to alias.
[oota-llvm.git]
/
lib
/
Option
/
Option.cpp
diff --git
a/lib/Option/Option.cpp
b/lib/Option/Option.cpp
index 7b5ff2be9a7926c8c07927499afda479ffc66e37..221414d79e77925650ca8c891058f3b3cc27624c 100644
(file)
--- a/
lib/Option/Option.cpp
+++ b/
lib/Option/Option.cpp
@@
-35,9
+35,6
@@
Option::Option(const OptTable::Info *info, const OptTable *owner)
}
}
}
}
-Option::~Option() {
-}
-
void Option::dump() const {
llvm::errs() << "<";
switch (getKind()) {
void Option::dump() const {
llvm::errs() << "<";
switch (getKind()) {
@@
-58,8
+55,8
@@
void Option::dump() const {
if (Info->Prefixes) {
llvm::errs() << " Prefixes:[";
if (Info->Prefixes) {
llvm::errs() << " Prefixes:[";
- for (const char * const *Pre = Info->Prefixes; *Pre !=
0
; ++Pre) {
- llvm::errs() << '"' << *Pre << (*(Pre + 1) ==
0
? "\"" : "\", ");
+ for (const char * const *Pre = Info->Prefixes; *Pre !=
nullptr
; ++Pre) {
+ llvm::errs() << '"' << *Pre << (*(Pre + 1) ==
nullptr
? "\"" : "\", ");
}
llvm::errs() << ']';
}
}
llvm::errs() << ']';
}
@@
-116,7
+113,7
@@
Arg *Option::accept(const ArgList &Args,
switch (getKind()) {
case FlagClass: {
if (ArgSize != strlen(Args.getArgString(Index)))
switch (getKind()) {
case FlagClass: {
if (ArgSize != strlen(Args.getArgString(Index)))
- return
0
;
+ return
nullptr
;
Arg *A = new Arg(UnaliasedOption, Spelling, Index++);
if (getAliasArgs()) {
Arg *A = new Arg(UnaliasedOption, Spelling, Index++);
if (getAliasArgs()) {
@@
-128,6
+125,11
@@
Arg *Option::accept(const ArgList &Args,
Val += strlen(Val) + 1;
}
}
Val += strlen(Val) + 1;
}
}
+
+ if (UnaliasedOption.getKind() == JoinedClass && !getAliasArgs())
+ // A Flag alias for a Joined option must provide an argument.
+ A->getValues().push_back("");
+
return A;
}
case JoinedClass: {
return A;
}
case JoinedClass: {
@@
-166,11
+168,12
@@
Arg *Option::accept(const ArgList &Args,
// Matches iff this is an exact match.
// FIXME: Avoid strlen.
if (ArgSize != strlen(Args.getArgString(Index)))
// Matches iff this is an exact match.
// FIXME: Avoid strlen.
if (ArgSize != strlen(Args.getArgString(Index)))
- return
0
;
+ return
nullptr
;
Index += 2;
Index += 2;
- if (Index > Args.getNumInputArgStrings())
- return 0;
+ if (Index > Args.getNumInputArgStrings() ||
+ Args.getArgString(Index - 1) == nullptr)
+ return nullptr;
return new Arg(UnaliasedOption, Spelling,
Index - 2, Args.getArgString(Index - 1));
return new Arg(UnaliasedOption, Spelling,
Index - 2, Args.getArgString(Index - 1));
@@
-178,11
+181,11
@@
Arg *Option::accept(const ArgList &Args,
// Matches iff this is an exact match.
// FIXME: Avoid strlen.
if (ArgSize != strlen(Args.getArgString(Index)))
// Matches iff this is an exact match.
// FIXME: Avoid strlen.
if (ArgSize != strlen(Args.getArgString(Index)))
- return
0
;
+ return
nullptr
;
Index += 1 + getNumArgs();
if (Index > Args.getNumInputArgStrings())
Index += 1 + getNumArgs();
if (Index > Args.getNumInputArgStrings())
- return
0
;
+ return
nullptr
;
Arg *A = new Arg(UnaliasedOption, Spelling, Index - 1 - getNumArgs(),
Args.getArgString(Index - getNumArgs()));
Arg *A = new Arg(UnaliasedOption, Spelling, Index - 1 - getNumArgs(),
Args.getArgString(Index - getNumArgs()));
@@
-200,8
+203,9
@@
Arg *Option::accept(const ArgList &Args,
// Otherwise it must be separate.
Index += 2;
// Otherwise it must be separate.
Index += 2;
- if (Index > Args.getNumInputArgStrings())
- return 0;
+ if (Index > Args.getNumInputArgStrings() ||
+ Args.getArgString(Index - 1) == nullptr)
+ return nullptr;
return new Arg(UnaliasedOption, Spelling,
Index - 2, Args.getArgString(Index - 1));
return new Arg(UnaliasedOption, Spelling,
Index - 2, Args.getArgString(Index - 1));
@@
-209,8
+213,9
@@
Arg *Option::accept(const ArgList &Args,
case JoinedAndSeparateClass:
// Always matches.
Index += 2;
case JoinedAndSeparateClass:
// Always matches.
Index += 2;
- if (Index > Args.getNumInputArgStrings())
- return 0;
+ if (Index > Args.getNumInputArgStrings() ||
+ Args.getArgString(Index - 1) == nullptr)
+ return nullptr;
return new Arg(UnaliasedOption, Spelling, Index - 2,
Args.getArgString(Index - 2) + ArgSize,
return new Arg(UnaliasedOption, Spelling, Index - 2,
Args.getArgString(Index - 2) + ArgSize,
@@
-219,9
+224,10
@@
Arg *Option::accept(const ArgList &Args,
// Matches iff this is an exact match.
// FIXME: Avoid strlen.
if (ArgSize != strlen(Args.getArgString(Index)))
// Matches iff this is an exact match.
// FIXME: Avoid strlen.
if (ArgSize != strlen(Args.getArgString(Index)))
- return
0
;
+ return
nullptr
;
Arg *A = new Arg(UnaliasedOption, Spelling, Index++);
Arg *A = new Arg(UnaliasedOption, Spelling, Index++);
- while (Index < Args.getNumInputArgStrings())
+ while (Index < Args.getNumInputArgStrings() &&
+ Args.getArgString(Index) != nullptr)
A->getValues().push_back(Args.getArgString(Index++));
return A;
}
A->getValues().push_back(Args.getArgString(Index++));
return A;
}