зеркало из https://github.com/microsoft/clang-1.git
Driver: Eliminate uses of Arg::getIndex.
Also, fix a memory leak. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105963 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
57dc2fc543
Коммит
0e10031ba5
|
@ -338,6 +338,12 @@ namespace driver {
|
|||
/// @name Arg Synthesis
|
||||
/// @{
|
||||
|
||||
/// AddSynthesizedArg - Add a argument to the list of synthesized arguments
|
||||
/// (to be freed).
|
||||
void AddSynthesizedArg(Arg *A) {
|
||||
SynthesizedArgs.push_back(A);
|
||||
}
|
||||
|
||||
virtual const char *MakeArgString(llvm::StringRef Str) const;
|
||||
|
||||
/// AddFlagArg - Construct a new FlagArg for the given option \arg Id and
|
||||
|
|
|
@ -487,9 +487,8 @@ DerivedArgList *Darwin::TranslateArgs(const DerivedArgList &Args,
|
|||
if (getArchName() != A->getValue(Args, 0))
|
||||
continue;
|
||||
|
||||
// FIXME: The arg is leaked here, and we should have a nicer
|
||||
// interface for this.
|
||||
unsigned Prev, Index = Prev = A->getIndex() + 1;
|
||||
unsigned Index = Args.getBaseArgs().MakeIndex(A->getValue(Args, 1));
|
||||
unsigned Prev = Index;
|
||||
Arg *XarchArg = Opts.ParseOneArg(Args, Index);
|
||||
|
||||
// If the argument parsing failed or more than one argument was
|
||||
|
@ -509,6 +508,8 @@ DerivedArgList *Darwin::TranslateArgs(const DerivedArgList &Args,
|
|||
|
||||
XarchArg->setBaseArg(A);
|
||||
A = XarchArg;
|
||||
|
||||
DAL->AddSynthesizedArg(A);
|
||||
}
|
||||
|
||||
// Sob. These is strictly gcc compatible for the time being. Apple
|
||||
|
|
|
@ -1074,8 +1074,9 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
else
|
||||
Std->render(Args, CmdArgs);
|
||||
|
||||
if (Arg *A = Args.getLastArg(options::OPT_trigraphs))
|
||||
if (A->getIndex() > Std->getIndex())
|
||||
if (Arg *A = Args.getLastArg(options::OPT_std_EQ, options::OPT_ansi,
|
||||
options::OPT_trigraphs))
|
||||
if (A != Std)
|
||||
A->render(Args, CmdArgs);
|
||||
} else {
|
||||
// Honor -std-default.
|
||||
|
|
Загрузка…
Ссылка в новой задаче