@@ -3203,11 +3203,16 @@ static mlir::omp::WsloopOp genCompositeDoSimd(
3203
3203
genSimdClauses (converter, semaCtx, simdItem->clauses , loc, simdClauseOps,
3204
3204
simdReductionSyms);
3205
3205
3206
- // TODO: Support delayed privatization.
3207
- DataSharingProcessor dsp (converter, semaCtx, simdItem->clauses , eval,
3208
- /* shouldCollectPreDeterminedSymbols=*/ true ,
3209
- /* useDelayedPrivatization=*/ false , symTable);
3210
- dsp.processStep1 ();
3206
+ DataSharingProcessor wsloopItemDSP (
3207
+ converter, semaCtx, doItem->clauses , eval,
3208
+ /* shouldCollectPreDeterminedSymbols=*/ false ,
3209
+ /* useDelayedPrivatization=*/ true , symTable);
3210
+ wsloopItemDSP.processStep1 (&wsloopClauseOps);
3211
+
3212
+ DataSharingProcessor simdItemDSP (converter, semaCtx, simdItem->clauses , eval,
3213
+ /* shouldCollectPreDeterminedSymbols=*/ true ,
3214
+ /* useDelayedPrivatization=*/ true , symTable);
3215
+ simdItemDSP.processStep1 (&simdClauseOps);
3211
3216
3212
3217
// Pass the innermost leaf construct's clauses because that's where COLLAPSE
3213
3218
// is placed by construct decomposition.
@@ -3218,15 +3223,17 @@ static mlir::omp::WsloopOp genCompositeDoSimd(
3218
3223
3219
3224
// Operation creation.
3220
3225
EntryBlockArgs wsloopArgs;
3221
- // TODO: Add private syms and vars.
3226
+ wsloopArgs.priv .syms = wsloopItemDSP.getDelayedPrivSymbols ();
3227
+ wsloopArgs.priv .vars = wsloopClauseOps.privateVars ;
3222
3228
wsloopArgs.reduction .syms = wsloopReductionSyms;
3223
3229
wsloopArgs.reduction .vars = wsloopClauseOps.reductionVars ;
3224
3230
auto wsloopOp = genWrapperOp<mlir::omp::WsloopOp>(
3225
3231
converter, loc, wsloopClauseOps, wsloopArgs);
3226
3232
wsloopOp.setComposite (/* val=*/ true );
3227
3233
3228
3234
EntryBlockArgs simdArgs;
3229
- // TODO: Add private syms and vars.
3235
+ simdArgs.priv .syms = simdItemDSP.getDelayedPrivSymbols ();
3236
+ simdArgs.priv .vars = simdClauseOps.privateVars ;
3230
3237
simdArgs.reduction .syms = simdReductionSyms;
3231
3238
simdArgs.reduction .vars = simdClauseOps.reductionVars ;
3232
3239
auto simdOp =
@@ -3236,7 +3243,7 @@ static mlir::omp::WsloopOp genCompositeDoSimd(
3236
3243
genLoopNestOp (converter, symTable, semaCtx, eval, loc, queue, simdItem,
3237
3244
loopNestClauseOps, iv,
3238
3245
{{wsloopOp, wsloopArgs}, {simdOp, simdArgs}},
3239
- llvm::omp::Directive::OMPD_do_simd, dsp );
3246
+ llvm::omp::Directive::OMPD_do_simd, simdItemDSP );
3240
3247
return wsloopOp;
3241
3248
}
3242
3249
0 commit comments