@@ -1055,8 +1055,9 @@ static void genFlushClauses(lower::AbstractConverter &converter,
10551055 if (!objects.empty ())
10561056 genObjectList (objects, converter, operandRange);
10571057
1058- if (!clauses.empty ())
1059- TODO (converter.getCurrentLocation (), " Handle OmpMemoryOrderClause" );
1058+ ClauseProcessor cp (converter, semaCtx, clauses);
1059+ cp.processTODO <clause::AcqRel, clause::Acquire, clause::Release,
1060+ clause::SeqCst>(loc, llvm::omp::OMPD_flush);
10601061}
10611062
10621063static void
@@ -1096,7 +1097,6 @@ static void genParallelClauses(
10961097 llvm::SmallVectorImpl<const semantics::Symbol *> &reductionSyms) {
10971098 ClauseProcessor cp (converter, semaCtx, clauses);
10981099 cp.processAllocate (clauseOps);
1099- cp.processDefault ();
11001100 cp.processIf (llvm::omp::Directive::OMPD_parallel, clauseOps);
11011101 cp.processNumThreads (stmtCtx, clauseOps);
11021102 cp.processProcBind (clauseOps);
@@ -1129,7 +1129,7 @@ static void genSimdClauses(lower::AbstractConverter &converter,
11291129 cp.processSimdlen (clauseOps);
11301130
11311131 // TODO Support delayed privatization.
1132- cp.processTODO <clause::Allocate, clause:: Linear, clause::Nontemporal>(
1132+ cp.processTODO <clause::Linear, clause::Nontemporal>(
11331133 loc, llvm::omp::Directive::OMPD_simd);
11341134}
11351135
@@ -1167,15 +1167,15 @@ static void genTargetClauses(
11671167 cp.processIsDevicePtr (clauseOps, devicePtrTypes, devicePtrLocs,
11681168 devicePtrSyms);
11691169 cp.processMap (loc, stmtCtx, clauseOps, &mapSyms, &mapLocs, &mapTypes);
1170- cp.processThreadLimit (stmtCtx, clauseOps);
11711170
11721171 if (processHostOnlyClauses)
11731172 cp.processNowait (clauseOps);
11741173
1174+ cp.processThreadLimit (stmtCtx, clauseOps);
1175+
11751176 cp.processTODO <clause::Allocate, clause::Defaultmap, clause::Firstprivate,
1176- clause::InReduction, clause::Reduction,
1177- clause::UsesAllocators>(loc,
1178- llvm::omp::Directive::OMPD_target);
1177+ clause::InReduction, clause::UsesAllocators>(
1178+ loc, llvm::omp::Directive::OMPD_target);
11791179
11801180 // `target private(..)` is only supported in delayed privatization mode.
11811181 if (!enableDelayedPrivatizationStaging)
@@ -1223,14 +1223,15 @@ static void genTargetEnterExitUpdateDataClauses(
12231223 cp.processDepend (clauseOps);
12241224 cp.processDevice (stmtCtx, clauseOps);
12251225 cp.processIf (directive, clauseOps);
1226- cp.processNowait (clauseOps);
12271226
12281227 if (directive == llvm::omp::Directive::OMPD_target_update) {
12291228 cp.processMotionClauses <clause::To>(stmtCtx, clauseOps);
12301229 cp.processMotionClauses <clause::From>(stmtCtx, clauseOps);
12311230 } else {
12321231 cp.processMap (loc, stmtCtx, clauseOps);
12331232 }
1233+
1234+ cp.processNowait (clauseOps);
12341235}
12351236
12361237static void genTaskClauses (lower::AbstractConverter &converter,
@@ -1240,7 +1241,6 @@ static void genTaskClauses(lower::AbstractConverter &converter,
12401241 mlir::omp::TaskOperands &clauseOps) {
12411242 ClauseProcessor cp (converter, semaCtx, clauses);
12421243 cp.processAllocate (clauseOps);
1243- cp.processDefault ();
12441244 cp.processDepend (clauseOps);
12451245 cp.processFinal (stmtCtx, clauseOps);
12461246 cp.processIf (llvm::omp::Directive::OMPD_task, clauseOps);
@@ -1279,7 +1279,6 @@ static void genTeamsClauses(lower::AbstractConverter &converter,
12791279 mlir::omp::TeamsOperands &clauseOps) {
12801280 ClauseProcessor cp (converter, semaCtx, clauses);
12811281 cp.processAllocate (clauseOps);
1282- cp.processDefault ();
12831282 cp.processIf (llvm::omp::Directive::OMPD_teams, clauseOps);
12841283 cp.processNumTeams (stmtCtx, clauseOps);
12851284 cp.processThreadLimit (stmtCtx, clauseOps);
0 commit comments