https://github.com/kparzysz updated https://github.com/llvm/llvm-project/pull/81627
>From 7e785c4caa8d66457dabab31eca2bab505a05c0d Mon Sep 17 00:00:00 2001 From: Krzysztof Parzyszek <krzysztof.parzys...@amd.com> Date: Wed, 21 Feb 2024 16:56:47 -0600 Subject: [PATCH] [flang][OpenMP] Convert processTODO and remove unused objects Remove `ClauseIterator2` and `clauses2` from ClauseProcessor. --- flang/lib/Lower/OpenMP/ClauseProcessor.h | 16 +++---- flang/lib/Lower/OpenMP/OpenMP.cpp | 54 +++++++++--------------- 2 files changed, 25 insertions(+), 45 deletions(-) diff --git a/flang/lib/Lower/OpenMP/ClauseProcessor.h b/flang/lib/Lower/OpenMP/ClauseProcessor.h index 47d80024295121..f2d8bcebf0b07a 100644 --- a/flang/lib/Lower/OpenMP/ClauseProcessor.h +++ b/flang/lib/Lower/OpenMP/ClauseProcessor.h @@ -46,13 +46,11 @@ namespace omp { /// methods that relate to clauses that can impact the lowering of that /// construct. class ClauseProcessor { - using ClauseTy = Fortran::parser::OmpClause; - public: ClauseProcessor(Fortran::lower::AbstractConverter &converter, Fortran::semantics::SemanticsContext &semaCtx, const Fortran::parser::OmpClauseList &clauses) - : converter(converter), semaCtx(semaCtx), clauses2(clauses), + : converter(converter), semaCtx(semaCtx), clauses(makeList(clauses, semaCtx)) {} // 'Unique' clauses: They can appear at most once in the clause list. @@ -157,7 +155,6 @@ class ClauseProcessor { private: using ClauseIterator = List<Clause>::const_iterator; - using ClauseIterator2 = std::list<ClauseTy>::const_iterator; /// Utility to find a clause within a range in the clause list. template <typename T> @@ -183,7 +180,6 @@ class ClauseProcessor { Fortran::lower::AbstractConverter &converter; Fortran::semantics::SemanticsContext &semaCtx; - const Fortran::parser::OmpClauseList &clauses2; List<Clause> clauses; }; @@ -239,19 +235,17 @@ bool ClauseProcessor::processMotionClauses( template <typename... Ts> void ClauseProcessor::processTODO(mlir::Location currentLocation, llvm::omp::Directive directive) const { - auto checkUnhandledClause = [&](const auto *x) { + auto checkUnhandledClause = [&](llvm::omp::Clause id, const auto *x) { if (!x) return; TODO(currentLocation, - "Unhandled clause " + - llvm::StringRef(Fortran::parser::ParseTreeDumper::GetNodeName(*x)) - .upper() + + "Unhandled clause " + llvm::omp::getOpenMPClauseName(id).upper() + " in " + llvm::omp::getOpenMPDirectiveName(directive).upper() + " construct"); }; - for (ClauseIterator2 it = clauses2.v.begin(); it != clauses2.v.end(); ++it) - (checkUnhandledClause(std::get_if<Ts>(&it->u)), ...); + for (ClauseIterator it = clauses.begin(); it != clauses.end(); ++it) + (checkUnhandledClause(it->id, std::get_if<Ts>(&it->u)), ...); } template <typename T> diff --git a/flang/lib/Lower/OpenMP/OpenMP.cpp b/flang/lib/Lower/OpenMP/OpenMP.cpp index c828fc7919b3bc..a07aba28bd76f6 100644 --- a/flang/lib/Lower/OpenMP/OpenMP.cpp +++ b/flang/lib/Lower/OpenMP/OpenMP.cpp @@ -683,9 +683,7 @@ genTaskOp(Fortran::lower::AbstractConverter &converter, cp.processMergeable(mergeableAttr); cp.processPriority(stmtCtx, priorityClauseOperand); cp.processDepend(dependTypeOperands, dependOperands); - cp.processTODO<Fortran::parser::OmpClause::InReduction, - Fortran::parser::OmpClause::Detach, - Fortran::parser::OmpClause::Affinity>( + cp.processTODO<clause::InReduction, clause::Detach, clause::Affinity>( currentLocation, llvm::omp::Directive::OMPD_task); return genOpWithBody<mlir::omp::TaskOp>( @@ -711,8 +709,8 @@ genTaskGroupOp(Fortran::lower::AbstractConverter &converter, llvm::SmallVector<mlir::Value> allocateOperands, allocatorOperands; ClauseProcessor cp(converter, semaCtx, clauseList); cp.processAllocate(allocatorOperands, allocateOperands); - cp.processTODO<Fortran::parser::OmpClause::TaskReduction>( - currentLocation, llvm::omp::Directive::OMPD_taskgroup); + cp.processTODO<clause::TaskReduction>(currentLocation, + llvm::omp::Directive::OMPD_taskgroup); return genOpWithBody<mlir::omp::TaskGroupOp>( OpWithBodyGenInfo(converter, semaCtx, currentLocation, eval) .setGenNested(genNested) @@ -983,16 +981,12 @@ genTargetOp(Fortran::lower::AbstractConverter &converter, cp.processMap(currentLocation, directive, stmtCtx, mapOperands, &mapSymTypes, &mapSymLocs, &mapSymbols); - cp.processTODO<Fortran::parser::OmpClause::Private, - Fortran::parser::OmpClause::Firstprivate, - Fortran::parser::OmpClause::IsDevicePtr, - Fortran::parser::OmpClause::HasDeviceAddr, - Fortran::parser::OmpClause::Reduction, - Fortran::parser::OmpClause::InReduction, - Fortran::parser::OmpClause::Allocate, - Fortran::parser::OmpClause::UsesAllocators, - Fortran::parser::OmpClause::Defaultmap>( - currentLocation, llvm::omp::Directive::OMPD_target); + cp.processTODO<clause::Private, clause::Firstprivate, clause::IsDevicePtr, + clause::HasDeviceAddr, clause::Reduction, clause::InReduction, + clause::Allocate, clause::UsesAllocators, + clause::Defaultmap>(currentLocation, + llvm::omp::Directive::OMPD_target); + // 5.8.1 Implicit Data-Mapping Attribute Rules // The following code follows the implicit data-mapping rules to map all the // symbols used inside the region that have not been explicitly mapped using @@ -1097,8 +1091,8 @@ genTeamsOp(Fortran::lower::AbstractConverter &converter, cp.processDefault(); cp.processNumTeams(stmtCtx, numTeamsClauseOperand); cp.processThreadLimit(stmtCtx, threadLimitClauseOperand); - cp.processTODO<Fortran::parser::OmpClause::Reduction>( - currentLocation, llvm::omp::Directive::OMPD_teams); + cp.processTODO<clause::Reduction>(currentLocation, + llvm::omp::Directive::OMPD_teams); return genOpWithBody<mlir::omp::TeamsOp>( OpWithBodyGenInfo(converter, semaCtx, currentLocation, eval) @@ -1150,9 +1144,8 @@ static mlir::omp::DeclareTargetDeviceType getDeclareTargetInfo( cp.processEnter(symbolAndClause); cp.processLink(symbolAndClause); cp.processDeviceType(deviceType); - cp.processTODO<Fortran::parser::OmpClause::Indirect>( - converter.getCurrentLocation(), - llvm::omp::Directive::OMPD_declare_target); + cp.processTODO<clause::Indirect>(converter.getCurrentLocation(), + llvm::omp::Directive::OMPD_declare_target); } return deviceType; @@ -1209,8 +1202,7 @@ genOmpSimpleStandalone(Fortran::lower::AbstractConverter &converter, break; case llvm::omp::Directive::OMPD_taskwait: ClauseProcessor(converter, semaCtx, opClauseList) - .processTODO<Fortran::parser::OmpClause::Depend, - Fortran::parser::OmpClause::Nowait>( + .processTODO<clause::Depend, clause::Nowait>( currentLocation, llvm::omp::Directive::OMPD_taskwait); firOpBuilder.create<mlir::omp::TaskwaitOp>(currentLocation); break; @@ -1412,11 +1404,8 @@ createSimdLoop(Fortran::lower::AbstractConverter &converter, cp.processIf(clause::If::DirectiveNameModifier::Simd, ifClauseOperand); cp.processSimdlen(simdlenClauseOperand); cp.processSafelen(safelenClauseOperand); - cp.processTODO<Fortran::parser::OmpClause::Aligned, - Fortran::parser::OmpClause::Allocate, - Fortran::parser::OmpClause::Linear, - Fortran::parser::OmpClause::Nontemporal, - Fortran::parser::OmpClause::Order>(loc, ompDirective); + cp.processTODO<clause::Aligned, clause::Allocate, clause::Linear, + clause::Nontemporal, clause::Order>(loc, ompDirective); convertLoopBounds(converter, loc, lowerBound, upperBound, step, loopVarTypeSize); @@ -1473,8 +1462,7 @@ static void createWsLoop(Fortran::lower::AbstractConverter &converter, cp.processScheduleChunk(stmtCtx, scheduleChunkClauseOperand); cp.processReduction(loc, reductionVars, reductionDeclSymbols, &reductionSymbols); - cp.processTODO<Fortran::parser::OmpClause::Linear, - Fortran::parser::OmpClause::Order>(loc, ompDirective); + cp.processTODO<clause::Linear, clause::Order>(loc, ompDirective); convertLoopBounds(converter, loc, lowerBound, upperBound, step, loopVarTypeSize); @@ -1541,11 +1529,9 @@ static void createSimdWsLoop( const Fortran::parser::OmpClauseList &beginClauseList, const Fortran::parser::OmpClauseList *endClauseList, mlir::Location loc) { ClauseProcessor cp(converter, semaCtx, beginClauseList); - cp.processTODO< - Fortran::parser::OmpClause::Aligned, Fortran::parser::OmpClause::Allocate, - Fortran::parser::OmpClause::Linear, Fortran::parser::OmpClause::Safelen, - Fortran::parser::OmpClause::Simdlen, Fortran::parser::OmpClause::Order>( - loc, ompDirective); + cp.processTODO<clause::Aligned, clause::Allocate, clause::Linear, + clause::Safelen, clause::Simdlen, clause::Order>(loc, + ompDirective); // TODO: Add support for vectorization - add vectorization hints inside loop // body. // OpenMP standard does not specify the length of vector instructions. _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits