forked from OSchip/llvm-project
Rename Action::begin() to Action::input_begin().
Also introduce inputs() that reutnrs an llvm::iterator_range. Iterating over A->inputs() is much less mysterious than iterating over *A. No intended behavior change. llvm-svn: 261674
This commit is contained in:
parent
4594606c00
commit
5a459f8249
|
@ -41,8 +41,10 @@ namespace driver {
|
|||
class Action {
|
||||
public:
|
||||
typedef ActionList::size_type size_type;
|
||||
typedef ActionList::iterator iterator;
|
||||
typedef ActionList::const_iterator const_iterator;
|
||||
typedef ActionList::iterator input_iterator;
|
||||
typedef ActionList::const_iterator input_const_iterator;
|
||||
typedef llvm::iterator_range<input_iterator> input_range;
|
||||
typedef llvm::iterator_range<input_const_iterator> input_const_range;
|
||||
|
||||
enum ActionClass {
|
||||
InputClass = 0,
|
||||
|
@ -98,10 +100,14 @@ public:
|
|||
|
||||
size_type size() const { return Inputs.size(); }
|
||||
|
||||
iterator begin() { return Inputs.begin(); }
|
||||
iterator end() { return Inputs.end(); }
|
||||
const_iterator begin() const { return Inputs.begin(); }
|
||||
const_iterator end() const { return Inputs.end(); }
|
||||
input_iterator input_begin() { return Inputs.begin(); }
|
||||
input_iterator input_end() { return Inputs.end(); }
|
||||
input_range inputs() { return input_range(input_begin(), input_end()); }
|
||||
input_const_iterator input_begin() const { return Inputs.begin(); }
|
||||
input_const_iterator input_end() const { return Inputs.end(); }
|
||||
input_const_range inputs() const {
|
||||
return input_const_range(input_begin(), input_end());
|
||||
}
|
||||
};
|
||||
|
||||
class InputAction : public Action {
|
||||
|
|
|
@ -176,8 +176,8 @@ static bool ActionFailed(const Action *A,
|
|||
if (A == &(CI->second->getSource()))
|
||||
return true;
|
||||
|
||||
for (Action::const_iterator AI = A->begin(), AE = A->end(); AI != AE; ++AI)
|
||||
if (ActionFailed(*AI, FailingCommands))
|
||||
for (const Action *AI : A->inputs())
|
||||
if (ActionFailed(AI, FailingCommands))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
|
|
|
@ -948,15 +948,15 @@ static unsigned PrintActions1(const Compilation &C, Action *A,
|
|||
os << "\"" << IA->getInputArg().getValue() << "\"";
|
||||
} else if (BindArchAction *BIA = dyn_cast<BindArchAction>(A)) {
|
||||
os << '"' << BIA->getArchName() << '"' << ", {"
|
||||
<< PrintActions1(C, *BIA->begin(), Ids) << "}";
|
||||
<< PrintActions1(C, *BIA->input_begin(), Ids) << "}";
|
||||
} else if (CudaDeviceAction *CDA = dyn_cast<CudaDeviceAction>(A)) {
|
||||
os << '"'
|
||||
<< (CDA->getGpuArchName() ? CDA->getGpuArchName() : "(multiple archs)")
|
||||
<< '"' << ", {" << PrintActions1(C, *CDA->begin(), Ids) << "}";
|
||||
<< '"' << ", {" << PrintActions1(C, *CDA->input_begin(), Ids) << "}";
|
||||
} else {
|
||||
const ActionList *AL;
|
||||
if (CudaHostAction *CHA = dyn_cast<CudaHostAction>(A)) {
|
||||
os << "{" << PrintActions1(C, *CHA->begin(), Ids) << "}"
|
||||
os << "{" << PrintActions1(C, *CHA->input_begin(), Ids) << "}"
|
||||
<< ", gpu binaries ";
|
||||
AL = &CHA->getDeviceActions();
|
||||
} else
|
||||
|
@ -996,7 +996,7 @@ static bool ContainsCompileOrAssembleAction(const Action *A) {
|
|||
isa<AssembleJobAction>(A))
|
||||
return true;
|
||||
|
||||
for (const Action *Input : *A)
|
||||
for (const Action *Input : A->inputs())
|
||||
if (ContainsCompileOrAssembleAction(Input))
|
||||
return true;
|
||||
|
||||
|
@ -1747,8 +1747,8 @@ static const Tool *selectToolForJob(Compilation &C, bool SaveTemps,
|
|||
// Compile job may be wrapped in CudaHostAction, extract it if
|
||||
// that's the case and update CollapsedCHA if we combine phases.
|
||||
CudaHostAction *CHA = dyn_cast<CudaHostAction>(*BackendInputs->begin());
|
||||
JobAction *CompileJA =
|
||||
cast<CompileJobAction>(CHA ? *CHA->begin() : *BackendInputs->begin());
|
||||
JobAction *CompileJA = cast<CompileJobAction>(
|
||||
CHA ? *CHA->input_begin() : *BackendInputs->begin());
|
||||
assert(CompileJA && "Backend job is not preceeded by compile job.");
|
||||
const Tool *Compiler = TC->SelectTool(*CompileJA);
|
||||
if (!Compiler)
|
||||
|
@ -1770,7 +1770,7 @@ static const Tool *selectToolForJob(Compilation &C, bool SaveTemps,
|
|||
// that's the case and update CollapsedCHA if we combine phases.
|
||||
CudaHostAction *CHA = dyn_cast<CudaHostAction>(*Inputs->begin());
|
||||
JobAction *CompileJA =
|
||||
cast<CompileJobAction>(CHA ? *CHA->begin() : *Inputs->begin());
|
||||
cast<CompileJobAction>(CHA ? *CHA->input_begin() : *Inputs->begin());
|
||||
assert(CompileJA && "Backend job is not preceeded by compile job.");
|
||||
const Tool *Compiler = TC->SelectTool(*CompileJA);
|
||||
if (!Compiler)
|
||||
|
@ -1841,7 +1841,7 @@ InputInfo Driver::BuildJobsForActionNoCache(
|
|||
}
|
||||
// Override current action with a real host compile action and continue
|
||||
// processing it.
|
||||
A = *CHA->begin();
|
||||
A = *CHA->input_begin();
|
||||
}
|
||||
|
||||
if (const InputAction *IA = dyn_cast<InputAction>(A)) {
|
||||
|
@ -1867,7 +1867,7 @@ InputInfo Driver::BuildJobsForActionNoCache(
|
|||
else
|
||||
TC = &C.getDefaultToolChain();
|
||||
|
||||
return BuildJobsForAction(C, *BAA->begin(), TC, ArchName, AtTopLevel,
|
||||
return BuildJobsForAction(C, *BAA->input_begin(), TC, ArchName, AtTopLevel,
|
||||
MultipleArchs, LinkingOutput, CachedResults);
|
||||
}
|
||||
|
||||
|
@ -1875,11 +1875,11 @@ InputInfo Driver::BuildJobsForActionNoCache(
|
|||
// Initial processing of CudaDeviceAction carries host params.
|
||||
// Call BuildJobsForAction() again, now with correct device parameters.
|
||||
InputInfo II = BuildJobsForAction(
|
||||
C, *CDA->begin(), C.getCudaDeviceToolChain(), CDA->getGpuArchName(),
|
||||
CDA->isAtTopLevel(), /*MultipleArchs*/ true, LinkingOutput,
|
||||
CachedResults);
|
||||
// Currently II's Action is *CDA->begin(). Set it to CDA instead, so that
|
||||
// one can retrieve II's GPU arch.
|
||||
C, *CDA->input_begin(), C.getCudaDeviceToolChain(),
|
||||
CDA->getGpuArchName(), CDA->isAtTopLevel(), /*MultipleArchs=*/true,
|
||||
LinkingOutput, CachedResults);
|
||||
// Currently II's Action is *CDA->input_begin(). Set it to CDA instead, so
|
||||
// that one can retrieve II's GPU arch.
|
||||
II.setAction(A);
|
||||
return II;
|
||||
}
|
||||
|
@ -2364,7 +2364,8 @@ const ToolChain &Driver::getToolChain(const ArgList &Args,
|
|||
|
||||
bool Driver::ShouldUseClangCompiler(const JobAction &JA) const {
|
||||
// Say "no" if there is not exactly one input of a type clang understands.
|
||||
if (JA.size() != 1 || !types::isAcceptedByClang((*JA.begin())->getType()))
|
||||
if (JA.size() != 1 ||
|
||||
!types::isAcceptedByClang((*JA.input_begin())->getType()))
|
||||
return false;
|
||||
|
||||
// And say "no" if this is not a kind of action clang understands.
|
||||
|
|
|
@ -2471,8 +2471,8 @@ static bool ContainsCompileAction(const Action *A) {
|
|||
if (isa<CompileJobAction>(A) || isa<BackendJobAction>(A))
|
||||
return true;
|
||||
|
||||
for (const auto &Act : *A)
|
||||
if (ContainsCompileAction(Act))
|
||||
for (const auto &AI : A->inputs())
|
||||
if (ContainsCompileAction(AI))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
|
|
|
@ -70,7 +70,7 @@ clang::createInvocationFromCommandLine(ArrayRef<const char *> ArgList,
|
|||
for (auto &A : C->getActions()){
|
||||
// On MacOSX real actions may end up being wrapped in BindArchAction
|
||||
if (isa<driver::BindArchAction>(A))
|
||||
A = *A->begin();
|
||||
A = *A->input_begin();
|
||||
if (isa<driver::CudaDeviceAction>(A)) {
|
||||
CudaCompilation = true;
|
||||
break;
|
||||
|
|
|
@ -139,9 +139,8 @@ private:
|
|||
;
|
||||
}
|
||||
|
||||
for (driver::ActionList::const_iterator I = A->begin(), E = A->end();
|
||||
I != E; ++I)
|
||||
runImpl(*I, CollectChildren);
|
||||
for (const driver::Action *AI : A->inputs())
|
||||
runImpl(AI, CollectChildren);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue