@@ -1055,8 +1055,9 @@ static void genFlushClauses(lower::AbstractConverter &converter,
1055
1055
if (!objects.empty ())
1056
1056
genObjectList (objects, converter, operandRange);
1057
1057
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);
1060
1061
}
1061
1062
1062
1063
static void
@@ -1096,7 +1097,6 @@ static void genParallelClauses(
1096
1097
llvm::SmallVectorImpl<const semantics::Symbol *> &reductionSyms) {
1097
1098
ClauseProcessor cp (converter, semaCtx, clauses);
1098
1099
cp.processAllocate (clauseOps);
1099
- cp.processDefault ();
1100
1100
cp.processIf (llvm::omp::Directive::OMPD_parallel, clauseOps);
1101
1101
cp.processNumThreads (stmtCtx, clauseOps);
1102
1102
cp.processProcBind (clauseOps);
@@ -1129,7 +1129,7 @@ static void genSimdClauses(lower::AbstractConverter &converter,
1129
1129
cp.processSimdlen (clauseOps);
1130
1130
1131
1131
// TODO Support delayed privatization.
1132
- cp.processTODO <clause::Allocate, clause:: Linear, clause::Nontemporal>(
1132
+ cp.processTODO <clause::Linear, clause::Nontemporal>(
1133
1133
loc, llvm::omp::Directive::OMPD_simd);
1134
1134
}
1135
1135
@@ -1167,15 +1167,15 @@ static void genTargetClauses(
1167
1167
cp.processIsDevicePtr (clauseOps, devicePtrTypes, devicePtrLocs,
1168
1168
devicePtrSyms);
1169
1169
cp.processMap (loc, stmtCtx, clauseOps, &mapSyms, &mapLocs, &mapTypes);
1170
- cp.processThreadLimit (stmtCtx, clauseOps);
1171
1170
1172
1171
if (processHostOnlyClauses)
1173
1172
cp.processNowait (clauseOps);
1174
1173
1174
+ cp.processThreadLimit (stmtCtx, clauseOps);
1175
+
1175
1176
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);
1179
1179
1180
1180
// `target private(..)` is only supported in delayed privatization mode.
1181
1181
if (!enableDelayedPrivatizationStaging)
@@ -1223,14 +1223,15 @@ static void genTargetEnterExitUpdateDataClauses(
1223
1223
cp.processDepend (clauseOps);
1224
1224
cp.processDevice (stmtCtx, clauseOps);
1225
1225
cp.processIf (directive, clauseOps);
1226
- cp.processNowait (clauseOps);
1227
1226
1228
1227
if (directive == llvm::omp::Directive::OMPD_target_update) {
1229
1228
cp.processMotionClauses <clause::To>(stmtCtx, clauseOps);
1230
1229
cp.processMotionClauses <clause::From>(stmtCtx, clauseOps);
1231
1230
} else {
1232
1231
cp.processMap (loc, stmtCtx, clauseOps);
1233
1232
}
1233
+
1234
+ cp.processNowait (clauseOps);
1234
1235
}
1235
1236
1236
1237
static void genTaskClauses (lower::AbstractConverter &converter,
@@ -1240,7 +1241,6 @@ static void genTaskClauses(lower::AbstractConverter &converter,
1240
1241
mlir::omp::TaskOperands &clauseOps) {
1241
1242
ClauseProcessor cp (converter, semaCtx, clauses);
1242
1243
cp.processAllocate (clauseOps);
1243
- cp.processDefault ();
1244
1244
cp.processDepend (clauseOps);
1245
1245
cp.processFinal (stmtCtx, clauseOps);
1246
1246
cp.processIf (llvm::omp::Directive::OMPD_task, clauseOps);
@@ -1279,7 +1279,6 @@ static void genTeamsClauses(lower::AbstractConverter &converter,
1279
1279
mlir::omp::TeamsOperands &clauseOps) {
1280
1280
ClauseProcessor cp (converter, semaCtx, clauses);
1281
1281
cp.processAllocate (clauseOps);
1282
- cp.processDefault ();
1283
1282
cp.processIf (llvm::omp::Directive::OMPD_teams, clauseOps);
1284
1283
cp.processNumTeams (stmtCtx, clauseOps);
1285
1284
cp.processThreadLimit (stmtCtx, clauseOps);
0 commit comments