@@ -827,14 +827,6 @@ class OmpAttributeVisitor : DirectiveAttributeVisitor<llvm::omp::Directive> {
827
827
void CollectAssociatedLoopLevelsFromInnerLoopContruct (
828
828
const parser::OpenMPLoopConstruct &, llvm::SmallVector<std::int64_t > &,
829
829
llvm::SmallVector<const parser::OmpClause *> &);
830
- template <typename T>
831
- void CollectAssociatedLoopLevelFromClauseValue (
832
- const parser::OmpClause &clause, llvm::SmallVector<std::int64_t > &,
833
- llvm::SmallVector<const parser::OmpClause *> &);
834
- template <typename T>
835
- void CollectAssociatedLoopLevelFromClauseSize (const parser::OmpClause &,
836
- llvm::SmallVector<std::int64_t > &,
837
- llvm::SmallVector<const parser::OmpClause *> &);
838
830
void CollectAssociatedLoopLevelsFromClauses (const parser::OmpClauseList &,
839
831
llvm::SmallVector<std::int64_t > &,
840
832
llvm::SmallVector<const parser::OmpClause *> &);
@@ -2074,40 +2066,34 @@ void OmpAttributeVisitor::CollectAssociatedLoopLevelsFromInnerLoopContruct(
2074
2066
}
2075
2067
}
2076
2068
2077
- template <typename T>
2078
- void OmpAttributeVisitor::CollectAssociatedLoopLevelFromClauseValue (
2079
- const parser::OmpClause &clause, llvm::SmallVector<std::int64_t > &levels,
2080
- llvm::SmallVector<const parser::OmpClause *> &clauses) {
2081
- if (const auto tclause{std::get_if<T>(&clause.u )}) {
2082
- std::int64_t level = 0 ;
2083
- if (const auto v{EvaluateInt64 (context_, tclause->v )}) {
2084
- level = *v;
2085
- }
2086
- levels.push_back (level);
2087
- clauses.push_back (&clause);
2088
- }
2089
- }
2090
-
2091
- template <typename T>
2092
- void OmpAttributeVisitor::CollectAssociatedLoopLevelFromClauseSize (
2093
- const parser::OmpClause &clause, llvm::SmallVector<std::int64_t > &levels,
2094
- llvm::SmallVector<const parser::OmpClause *> &clauses) {
2095
- if (const auto tclause{std::get_if<T>(&clause.u )}) {
2096
- levels.push_back (tclause->v .size ());
2097
- clauses.push_back (&clause);
2098
- }
2099
- }
2100
-
2101
2069
void OmpAttributeVisitor::CollectAssociatedLoopLevelsFromClauses (
2102
2070
const parser::OmpClauseList &x, llvm::SmallVector<std::int64_t > &levels,
2103
2071
llvm::SmallVector<const parser::OmpClause *> &clauses) {
2104
2072
for (const auto &clause : x.v ) {
2105
- CollectAssociatedLoopLevelFromClauseValue<parser::OmpClause::Ordered>(
2106
- clause, levels, clauses);
2107
- CollectAssociatedLoopLevelFromClauseValue<parser::OmpClause::Collapse>(
2108
- clause, levels, clauses);
2109
- CollectAssociatedLoopLevelFromClauseSize<parser::OmpClause::Sizes>(
2110
- clause, levels, clauses);
2073
+ if (const auto oclause{
2074
+ std::get_if<parser::OmpClause::Ordered>(&clause.u )}) {
2075
+ std::int64_t level = 0 ;
2076
+ if (const auto v{EvaluateInt64 (context_, oclause->v )}) {
2077
+ level = *v;
2078
+ }
2079
+ levels.push_back (level);
2080
+ clauses.push_back (&clause);
2081
+ }
2082
+
2083
+ if (const auto cclause{
2084
+ std::get_if<parser::OmpClause::Collapse>(&clause.u )}) {
2085
+ std::int64_t level = 0 ;
2086
+ if (const auto v{EvaluateInt64 (context_, cclause->v )}) {
2087
+ level = *v;
2088
+ }
2089
+ levels.push_back (level);
2090
+ clauses.push_back (&clause);
2091
+ }
2092
+
2093
+ if (const auto tclause{std::get_if<parser::OmpClause::Sizes>(&clause.u )}) {
2094
+ levels.push_back (tclause->v .size ());
2095
+ clauses.push_back (&clause);
2096
+ }
2111
2097
}
2112
2098
}
2113
2099
0 commit comments