From 4121881553c4c8e0fb2f9edc6fddd9cf8e1bd93f Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Tue, 23 Feb 2016 19:30:43 +0000 Subject: [PATCH] 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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@261674 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Driver/Action.h | 18 +++++++---- lib/Driver/Compilation.cpp | 4 +-- lib/Driver/Driver.cpp | 31 ++++++++++--------- lib/Driver/Tools.cpp | 4 +-- .../CreateInvocationFromCommandLine.cpp | 2 +- lib/Tooling/CompilationDatabase.cpp | 5 ++- 6 files changed, 35 insertions(+), 29 deletions(-) diff --git a/include/clang/Driver/Action.h b/include/clang/Driver/Action.h index 2cf53bc787..8c3894b80a 100644 --- a/include/clang/Driver/Action.h +++ b/include/clang/Driver/Action.h @@ -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_range; + typedef llvm::iterator_range 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 { diff --git a/lib/Driver/Compilation.cpp b/lib/Driver/Compilation.cpp index 1c2eecd3cc..71bccfa92d 100644 --- a/lib/Driver/Compilation.cpp +++ b/lib/Driver/Compilation.cpp @@ -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; diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp index 766c56d7ce..6a85dabdeb 100644 --- a/lib/Driver/Driver.cpp +++ b/lib/Driver/Driver.cpp @@ -948,15 +948,15 @@ static unsigned PrintActions1(const Compilation &C, Action *A, os << "\"" << IA->getInputArg().getValue() << "\""; } else if (BindArchAction *BIA = dyn_cast(A)) { os << '"' << BIA->getArchName() << '"' << ", {" - << PrintActions1(C, *BIA->begin(), Ids) << "}"; + << PrintActions1(C, *BIA->input_begin(), Ids) << "}"; } else if (CudaDeviceAction *CDA = dyn_cast(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(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(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(*BackendInputs->begin()); - JobAction *CompileJA = - cast(CHA ? *CHA->begin() : *BackendInputs->begin()); + JobAction *CompileJA = cast( + 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(*Inputs->begin()); JobAction *CompileJA = - cast(CHA ? *CHA->begin() : *Inputs->begin()); + cast(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(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. diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 235d76075f..299118972c 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -2471,8 +2471,8 @@ static bool ContainsCompileAction(const Action *A) { if (isa(A) || isa(A)) return true; - for (const auto &Act : *A) - if (ContainsCompileAction(Act)) + for (const auto &AI : A->inputs()) + if (ContainsCompileAction(AI)) return true; return false; diff --git a/lib/Frontend/CreateInvocationFromCommandLine.cpp b/lib/Frontend/CreateInvocationFromCommandLine.cpp index 3019164225..6c44932f55 100644 --- a/lib/Frontend/CreateInvocationFromCommandLine.cpp +++ b/lib/Frontend/CreateInvocationFromCommandLine.cpp @@ -70,7 +70,7 @@ clang::createInvocationFromCommandLine(ArrayRef ArgList, for (auto &A : C->getActions()){ // On MacOSX real actions may end up being wrapped in BindArchAction if (isa(A)) - A = *A->begin(); + A = *A->input_begin(); if (isa(A)) { CudaCompilation = true; break; diff --git a/lib/Tooling/CompilationDatabase.cpp b/lib/Tooling/CompilationDatabase.cpp index 957e40137e..8fc4a1fe5b 100644 --- a/lib/Tooling/CompilationDatabase.cpp +++ b/lib/Tooling/CompilationDatabase.cpp @@ -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); } }; -- 2.40.0