forked from OSchip/llvm-project
Driver: Change Option parsing to always create arguments referring to unaliased
options. - This matches the intent of the .td files, and will simplify alias handling. - PR7321. llvm-svn: 105744
This commit is contained in:
parent
07b1627f46
commit
aea0620b89
|
@ -713,4 +713,4 @@ def _warn__EQ : Joined<"--warn-=">, Alias<W_Joined>, Flags<[Unsupported]>;
|
|||
def _warn_ : Joined<"--warn-">, Alias<W_Joined>, Flags<[Unsupported]>;
|
||||
def _write_dependencies : Flag<"--write-dependencies">, Alias<MD>;
|
||||
def _write_user_dependencies : Flag<"--write-user-dependencies">, Alias<MMD>;
|
||||
def _ : Joined<"--">, Alias<f>, Flags<[Unsupported]>;
|
||||
def _ : Joined<"--">, Flags<[Unsupported]>;
|
||||
|
|
|
@ -123,7 +123,7 @@ Arg *FlagOption::accept(const InputArgList &Args, unsigned &Index) const {
|
|||
if (strlen(getName()) != strlen(Args.getArgString(Index)))
|
||||
return 0;
|
||||
|
||||
return new FlagArg(this, Index++);
|
||||
return new FlagArg(getUnaliasedOption(), Index++);
|
||||
}
|
||||
|
||||
JoinedOption::JoinedOption(OptSpecifier ID, const char *Name,
|
||||
|
@ -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++, strlen(getName()));
|
||||
return new JoinedArg(getUnaliasedOption(), Index++, strlen(getName()));
|
||||
}
|
||||
|
||||
CommaJoinedOption::CommaJoinedOption(OptSpecifier ID, const char *Name,
|
||||
|
@ -150,7 +150,7 @@ Arg *CommaJoinedOption::accept(const InputArgList &Args,
|
|||
// Get the suffix string.
|
||||
// FIXME: Avoid strlen, and move to helper method?
|
||||
const char *Suffix = Args.getArgString(Index) + strlen(getName());
|
||||
return new CommaJoinedArg(this, Index++, Suffix);
|
||||
return new CommaJoinedArg(getUnaliasedOption(), Index++, Suffix);
|
||||
}
|
||||
|
||||
SeparateOption::SeparateOption(OptSpecifier ID, const char *Name,
|
||||
|
@ -168,7 +168,7 @@ Arg *SeparateOption::accept(const InputArgList &Args, unsigned &Index) const {
|
|||
if (Index > Args.getNumInputArgStrings())
|
||||
return 0;
|
||||
|
||||
return new SeparateArg(this, Index - 2, 1);
|
||||
return new SeparateArg(getUnaliasedOption(), Index - 2, 1);
|
||||
}
|
||||
|
||||
MultiArgOption::MultiArgOption(OptSpecifier ID, const char *Name,
|
||||
|
@ -188,7 +188,7 @@ Arg *MultiArgOption::accept(const InputArgList &Args, unsigned &Index) const {
|
|||
if (Index > Args.getNumInputArgStrings())
|
||||
return 0;
|
||||
|
||||
return new SeparateArg(this, Index - 1 - NumArgs, NumArgs);
|
||||
return new SeparateArg(getUnaliasedOption(), Index - 1 - NumArgs, NumArgs);
|
||||
}
|
||||
|
||||
JoinedOrSeparateOption::JoinedOrSeparateOption(OptSpecifier ID,
|
||||
|
@ -203,14 +203,14 @@ 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++, strlen(getName()));
|
||||
return new JoinedArg(getUnaliasedOption(), Index++, strlen(getName()));
|
||||
|
||||
// Otherwise it must be separate.
|
||||
Index += 2;
|
||||
if (Index > Args.getNumInputArgStrings())
|
||||
return 0;
|
||||
|
||||
return new SeparateArg(this, Index - 2, 1);
|
||||
return new SeparateArg(getUnaliasedOption(), Index - 2, 1);
|
||||
}
|
||||
|
||||
JoinedAndSeparateOption::JoinedAndSeparateOption(OptSpecifier ID,
|
||||
|
@ -228,6 +228,6 @@ Arg *JoinedAndSeparateOption::accept(const InputArgList &Args,
|
|||
if (Index > Args.getNumInputArgStrings())
|
||||
return 0;
|
||||
|
||||
return new JoinedAndSeparateArg(this, Index - 2, strlen(getName()));
|
||||
return new JoinedAndSeparateArg(getUnaliasedOption(), Index - 2,
|
||||
strlen(getName()));
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
// RUN: %clang -ccc-print-options \
|
||||
// RUN: --save-temps --undefine-macro=FOO --undefine-macro FOO \
|
||||
// RUN: --param=FOO --output=FOO 2> %t
|
||||
// RUN: FileCheck --check-prefix=CHECK-OPTIONS < %t %s
|
||||
|
||||
// CHECK-OPTIONS: Option 0 - Name: "-ccc-print-options", Values: {}
|
||||
// CHECK-OPTIONS: Option 1 - Name: "-save-temps", Values: {}
|
||||
// CHECK-OPTIONS: Option 2 - Name: "-U", Values: {"FOO"}
|
||||
// CHECK-OPTIONS: Option 3 - Name: "-U", Values: {"FOO"}
|
||||
// CHECK-OPTIONS: Option 4 - Name: "--param", Values: {"FOO"}
|
||||
// CHECK-OPTIONS: Option 5 - Name: "-o", Values: {"FOO"}
|
Loading…
Reference in New Issue