Skip to content

Commit 0398cb4

Browse files
authored
[flang][OpenMP][OpenACC] Use iterator_range in check-directive-struct… (llvm#115872)
…ure, NFC The OpenMP code is already using iterator_range, lift it to the shared header file.
1 parent 3130691 commit 0398cb4

File tree

3 files changed

+16
-21
lines changed

3 files changed

+16
-21
lines changed

flang/lib/Semantics/check-directive-structure.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
#include "flang/Common/enum-set.h"
1616
#include "flang/Semantics/semantics.h"
1717
#include "flang/Semantics/tools.h"
18+
#include "llvm/ADT/iterator_range.h"
19+
1820
#include <unordered_map>
1921

2022
namespace Fortran::semantics {
@@ -292,10 +294,9 @@ class DirectiveStructureChecker : public virtual BaseChecker {
292294
return nullptr;
293295
}
294296

295-
std::pair<typename ClauseMapTy::iterator, typename ClauseMapTy::iterator>
296-
FindClauses(C type) {
297+
llvm::iterator_range<typename ClauseMapTy::iterator> FindClauses(C type) {
297298
auto it{GetContext().clauseInfo.equal_range(type)};
298-
return it;
299+
return llvm::make_range(it);
299300
}
300301

301302
DirectiveContext *GetEnclosingDirContext() {

flang/lib/Semantics/check-omp-structure.cpp

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ void OmpStructureChecker::CheckMultListItems() {
338338
semantics::UnorderedSymbolSet listVars;
339339

340340
// Aligned clause
341-
for (auto [_, clause] : GetClauses(llvm::omp::Clause::OMPC_aligned)) {
341+
for (auto [_, clause] : FindClauses(llvm::omp::Clause::OMPC_aligned)) {
342342
const auto &alignedClause{std::get<parser::OmpClause::Aligned>(clause->u)};
343343
const auto &alignedList{std::get<0>(alignedClause.v.t)};
344344
std::list<parser::Name> alignedNameList;
@@ -371,7 +371,7 @@ void OmpStructureChecker::CheckMultListItems() {
371371
}
372372

373373
// Nontemporal clause
374-
for (auto [_, clause] : GetClauses(llvm::omp::Clause::OMPC_nontemporal)) {
374+
for (auto [_, clause] : FindClauses(llvm::omp::Clause::OMPC_nontemporal)) {
375375
const auto &nontempClause{
376376
std::get<parser::OmpClause::Nontemporal>(clause->u)};
377377
const auto &nontempNameList{nontempClause.v};
@@ -1762,7 +1762,7 @@ void OmpStructureChecker::ChecksOnOrderedAsStandalone() {
17621762
}};
17631763

17641764
// Visit the DEPEND and DOACROSS clauses.
1765-
for (auto [_, clause] : GetClauses(llvm::omp::Clause::OMPC_depend)) {
1765+
for (auto [_, clause] : FindClauses(llvm::omp::Clause::OMPC_depend)) {
17661766
const auto &dependClause{std::get<parser::OmpClause::Depend>(clause->u)};
17671767
if (auto *doAcross{std::get_if<parser::OmpDoacross>(&dependClause.v.u)}) {
17681768
visitDoacross(*doAcross, clause->source);
@@ -1771,7 +1771,7 @@ void OmpStructureChecker::ChecksOnOrderedAsStandalone() {
17711771
"Only SINK or SOURCE dependence types are allowed when ORDERED construct is a standalone construct with no ORDERED region"_err_en_US);
17721772
}
17731773
}
1774-
for (auto [_, clause] : GetClauses(llvm::omp::Clause::OMPC_doacross)) {
1774+
for (auto [_, clause] : FindClauses(llvm::omp::Clause::OMPC_doacross)) {
17751775
auto &doaClause{std::get<parser::OmpClause::Doacross>(clause->u)};
17761776
visitDoacross(doaClause.v.v, clause->source);
17771777
}
@@ -1812,13 +1812,13 @@ void OmpStructureChecker::CheckOrderedDependClause(
18121812
}
18131813
}
18141814
}};
1815-
for (auto [_, clause] : GetClauses(llvm::omp::Clause::OMPC_depend)) {
1815+
for (auto [_, clause] : FindClauses(llvm::omp::Clause::OMPC_depend)) {
18161816
auto &dependClause{std::get<parser::OmpClause::Depend>(clause->u)};
18171817
if (auto *doAcross{std::get_if<parser::OmpDoacross>(&dependClause.v.u)}) {
18181818
visitDoacross(*doAcross, clause->source);
18191819
}
18201820
}
1821-
for (auto [_, clause] : GetClauses(llvm::omp::Clause::OMPC_doacross)) {
1821+
for (auto [_, clause] : FindClauses(llvm::omp::Clause::OMPC_doacross)) {
18221822
auto &doaClause{std::get<parser::OmpClause::Doacross>(clause->u)};
18231823
visitDoacross(doaClause.v.v, clause->source);
18241824
}
@@ -3904,7 +3904,7 @@ void OmpStructureChecker::Enter(const parser::OmpClause::UseDevicePtr &x) {
39043904
SymbolSourceMap currSymbols;
39053905
GetSymbolsInObjectList(x.v, currSymbols);
39063906
semantics::UnorderedSymbolSet listVars;
3907-
for (auto [_, clause] : GetClauses(llvm::omp::Clause::OMPC_use_device_ptr)) {
3907+
for (auto [_, clause] : FindClauses(llvm::omp::Clause::OMPC_use_device_ptr)) {
39083908
const auto &useDevicePtrClause{
39093909
std::get<parser::OmpClause::UseDevicePtr>(clause->u)};
39103910
const auto &useDevicePtrList{useDevicePtrClause.v};
@@ -3933,7 +3933,8 @@ void OmpStructureChecker::Enter(const parser::OmpClause::UseDeviceAddr &x) {
39333933
SymbolSourceMap currSymbols;
39343934
GetSymbolsInObjectList(x.v, currSymbols);
39353935
semantics::UnorderedSymbolSet listVars;
3936-
for (auto [_, clause] : GetClauses(llvm::omp::Clause::OMPC_use_device_addr)) {
3936+
for (auto [_, clause] :
3937+
FindClauses(llvm::omp::Clause::OMPC_use_device_addr)) {
39373938
const auto &useDeviceAddrClause{
39383939
std::get<parser::OmpClause::UseDeviceAddr>(clause->u)};
39393940
const auto &useDeviceAddrList{useDeviceAddrClause.v};
@@ -3955,7 +3956,7 @@ void OmpStructureChecker::Enter(const parser::OmpClause::IsDevicePtr &x) {
39553956
SymbolSourceMap currSymbols;
39563957
GetSymbolsInObjectList(x.v, currSymbols);
39573958
semantics::UnorderedSymbolSet listVars;
3958-
for (auto [_, clause] : GetClauses(llvm::omp::Clause::OMPC_is_device_ptr)) {
3959+
for (auto [_, clause] : FindClauses(llvm::omp::Clause::OMPC_is_device_ptr)) {
39593960
const auto &isDevicePtrClause{
39603961
std::get<parser::OmpClause::IsDevicePtr>(clause->u)};
39613962
const auto &isDevicePtrList{isDevicePtrClause.v};
@@ -3987,7 +3988,8 @@ void OmpStructureChecker::Enter(const parser::OmpClause::HasDeviceAddr &x) {
39873988
SymbolSourceMap currSymbols;
39883989
GetSymbolsInObjectList(x.v, currSymbols);
39893990
semantics::UnorderedSymbolSet listVars;
3990-
for (auto [_, clause] : GetClauses(llvm::omp::Clause::OMPC_has_device_addr)) {
3991+
for (auto [_, clause] :
3992+
FindClauses(llvm::omp::Clause::OMPC_has_device_addr)) {
39913993
const auto &hasDeviceAddrClause{
39923994
std::get<parser::OmpClause::HasDeviceAddr>(clause->u)};
39933995
const auto &hasDeviceAddrList{hasDeviceAddrClause.v};

flang/lib/Semantics/check-omp-structure.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -144,9 +144,6 @@ class OmpStructureChecker
144144
#include "llvm/Frontend/OpenMP/OMP.inc"
145145

146146
private:
147-
inline llvm::iterator_range<typename ClauseMapTy::iterator> GetClauses(
148-
llvm::omp::Clause clauseId);
149-
150147
bool CheckAllowedClause(llvmOmpClause clause);
151148
bool IsVariableListItem(const Symbol &sym);
152149
bool IsExtendedListItem(const Symbol &sym);
@@ -298,10 +295,5 @@ const T *OmpStructureChecker::FindDuplicateEntry(const std::list<T> &list) {
298295
return nullptr;
299296
}
300297

301-
llvm::iterator_range<typename OmpStructureChecker::ClauseMapTy::iterator>
302-
OmpStructureChecker::GetClauses(llvm::omp::Clause clauseId) {
303-
return llvm::make_range(FindClauses(clauseId));
304-
}
305-
306298
} // namespace Fortran::semantics
307299
#endif // FORTRAN_SEMANTICS_CHECK_OMP_STRUCTURE_H_

0 commit comments

Comments
 (0)