forked from OSchip/llvm-project
Handle "--" explicitly in the driver
Anything that comes after -- is treated as an input file. This used to be handled automagically by the option parsing library, but after LLVM r188314, we should handle it ourselves. No functionality change. llvm-svn: 188316
This commit is contained in:
parent
327ccc787e
commit
ed1d07282c
|
@ -179,6 +179,8 @@ def ccc_ : Joined<["-"], "ccc-">, Group<internal_Group>, Flags<[Unsupported]>;
|
||||||
|
|
||||||
def _HASH_HASH_HASH : Flag<["-"], "###">, Flags<[DriverOption, CoreOption]>,
|
def _HASH_HASH_HASH : Flag<["-"], "###">, Flags<[DriverOption, CoreOption]>,
|
||||||
HelpText<"Print the commands to run for this compilation">;
|
HelpText<"Print the commands to run for this compilation">;
|
||||||
|
def _DASH_DASH : Option<["--"], "", KIND_REMAINING_ARGS>,
|
||||||
|
Flags<[DriverOption, CoreOption]>;
|
||||||
def A : JoinedOrSeparate<["-"], "A">;
|
def A : JoinedOrSeparate<["-"], "A">;
|
||||||
def B : JoinedOrSeparate<["-"], "B">;
|
def B : JoinedOrSeparate<["-"], "B">;
|
||||||
def CC : Flag<["-"], "CC">, Flags<[CC1Option]>;
|
def CC : Flag<["-"], "CC">, Flags<[CC1Option]>;
|
||||||
|
|
|
@ -186,6 +186,14 @@ const {
|
||||||
return FinalPhase;
|
return FinalPhase;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Arg* MakeInputArg(const DerivedArgList &Args, OptTable *Opts,
|
||||||
|
StringRef Value) {
|
||||||
|
Arg *A = new Arg(Opts->getOption(options::OPT_INPUT), Value,
|
||||||
|
Args.getBaseArgs().MakeIndex(Value), Value.data());
|
||||||
|
A->claim();
|
||||||
|
return A;
|
||||||
|
}
|
||||||
|
|
||||||
DerivedArgList *Driver::TranslateInputArgs(const InputArgList &Args) const {
|
DerivedArgList *Driver::TranslateInputArgs(const InputArgList &Args) const {
|
||||||
DerivedArgList *DAL = new DerivedArgList(Args);
|
DerivedArgList *DAL = new DerivedArgList(Args);
|
||||||
|
|
||||||
|
@ -251,6 +259,14 @@ DerivedArgList *Driver::TranslateInputArgs(const InputArgList &Args) const {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Pick up inputs via the -- option.
|
||||||
|
if (A->getOption().matches(options::OPT__DASH_DASH)) {
|
||||||
|
A->claim();
|
||||||
|
for (unsigned i = 0, e = A->getNumValues(); i != e; ++i)
|
||||||
|
DAL->append(MakeInputArg(*DAL, Opts, A->getValue(i)));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
DAL->append(*it);
|
DAL->append(*it);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -375,7 +391,7 @@ Compilation *Driver::BuildCompilation(ArrayRef<const char *> ArgList) {
|
||||||
|
|
||||||
// Construct the list of inputs.
|
// Construct the list of inputs.
|
||||||
InputList Inputs;
|
InputList Inputs;
|
||||||
BuildInputs(C->getDefaultToolChain(), C->getArgs(), Inputs);
|
BuildInputs(C->getDefaultToolChain(), *TranslatedArgs, Inputs);
|
||||||
|
|
||||||
// Construct the list of abstract actions to perform for this compilation. On
|
// Construct the list of abstract actions to perform for this compilation. On
|
||||||
// Darwin target OSes this uses the driver-driver and universal actions.
|
// Darwin target OSes this uses the driver-driver and universal actions.
|
||||||
|
@ -990,14 +1006,6 @@ static bool DiagnoseInputExistance(const Driver &D, const DerivedArgList &Args,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Arg* MakeInputArg(const DerivedArgList &Args, OptTable *Opts,
|
|
||||||
StringRef Value) {
|
|
||||||
unsigned Index = Args.getBaseArgs().MakeIndex(Value);
|
|
||||||
Arg *A = Opts->ParseOneArg(Args, Index);
|
|
||||||
A->claim();
|
|
||||||
return A;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Construct a the list of inputs and their types.
|
// Construct a the list of inputs and their types.
|
||||||
void Driver::BuildInputs(const ToolChain &TC, const DerivedArgList &Args,
|
void Driver::BuildInputs(const ToolChain &TC, const DerivedArgList &Args,
|
||||||
InputList &Inputs) const {
|
InputList &Inputs) const {
|
||||||
|
|
Loading…
Reference in New Issue