@@ -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 *> &);
@@ -2077,40 +2069,34 @@ void OmpAttributeVisitor::CollectAssociatedLoopLevelsFromInnerLoopContruct(
2077
2069
}
2078
2070
}
2079
2071
2080
- template <typename T>
2081
- void OmpAttributeVisitor::CollectAssociatedLoopLevelFromClauseValue (
2082
- const parser::OmpClause &clause, llvm::SmallVector<std::int64_t > &levels,
2083
- llvm::SmallVector<const parser::OmpClause *> &clauses) {
2084
- if (const auto tclause{std::get_if<T>(&clause.u )}) {
2085
- std::int64_t level = 0 ;
2086
- if (const auto v{EvaluateInt64 (context_, tclause->v )}) {
2087
- level = *v;
2088
- }
2089
- levels.push_back (level);
2090
- clauses.push_back (&clause);
2091
- }
2092
- }
2093
-
2094
- template <typename T>
2095
- void OmpAttributeVisitor::CollectAssociatedLoopLevelFromClauseSize (
2096
- const parser::OmpClause &clause, llvm::SmallVector<std::int64_t > &levels,
2097
- llvm::SmallVector<const parser::OmpClause *> &clauses) {
2098
- if (const auto tclause{std::get_if<T>(&clause.u )}) {
2099
- levels.push_back (tclause->v .size ());
2100
- clauses.push_back (&clause);
2101
- }
2102
- }
2103
-
2104
2072
void OmpAttributeVisitor::CollectAssociatedLoopLevelsFromClauses (
2105
2073
const parser::OmpClauseList &x, llvm::SmallVector<std::int64_t > &levels,
2106
2074
llvm::SmallVector<const parser::OmpClause *> &clauses) {
2107
2075
for (const auto &clause : x.v ) {
2108
- CollectAssociatedLoopLevelFromClauseValue<parser::OmpClause::Ordered>(
2109
- clause, levels, clauses);
2110
- CollectAssociatedLoopLevelFromClauseValue<parser::OmpClause::Collapse>(
2111
- clause, levels, clauses);
2112
- CollectAssociatedLoopLevelFromClauseSize<parser::OmpClause::Sizes>(
2113
- clause, levels, clauses);
2076
+ if (const auto oclause{
2077
+ std::get_if<parser::OmpClause::Ordered>(&clause.u )}) {
2078
+ std::int64_t level = 0 ;
2079
+ if (const auto v{EvaluateInt64 (context_, oclause->v )}) {
2080
+ level = *v;
2081
+ }
2082
+ levels.push_back (level);
2083
+ clauses.push_back (&clause);
2084
+ }
2085
+
2086
+ if (const auto cclause{
2087
+ std::get_if<parser::OmpClause::Collapse>(&clause.u )}) {
2088
+ std::int64_t level = 0 ;
2089
+ if (const auto v{EvaluateInt64 (context_, cclause->v )}) {
2090
+ level = *v;
2091
+ }
2092
+ levels.push_back (level);
2093
+ clauses.push_back (&clause);
2094
+ }
2095
+
2096
+ if (const auto tclause{std::get_if<parser::OmpClause::Sizes>(&clause.u )}) {
2097
+ levels.push_back (tclause->v .size ());
2098
+ clauses.push_back (&clause);
2099
+ }
2114
2100
}
2115
2101
}
2116
2102
0 commit comments