@@ -3092,7 +3092,6 @@ static mlir::omp::DistributeOp genCompositeDistributeSimd(
3092
3092
/* shouldCollectPreDeterminedSymbols=*/ true ,
3093
3093
/* useDelayedPrivatization=*/ false , symTable);
3094
3094
dsp.processStep1 ();
3095
- dsp.processStep2 ();
3096
3095
3097
3096
// Pass the innermost leaf construct's clauses because that's where COLLAPSE
3098
3097
// is placed by construct decomposition.
@@ -3143,12 +3142,16 @@ static mlir::omp::WsloopOp genCompositeDoSimd(
3143
3142
genSimdClauses (converter, semaCtx, simdItem->clauses , loc, simdClauseOps,
3144
3143
simdReductionSyms);
3145
3144
3146
- // TODO: Support delayed privatization.
3147
- DataSharingProcessor dsp (converter, semaCtx, simdItem->clauses , eval,
3148
- /* shouldCollectPreDeterminedSymbols=*/ true ,
3149
- /* useDelayedPrivatization=*/ false , symTable);
3150
- dsp.processStep1 ();
3151
- dsp.processStep2 ();
3145
+ DataSharingProcessor wsloopItemDSP (
3146
+ converter, semaCtx, doItem->clauses , eval,
3147
+ /* shouldCollectPreDeterminedSymbols=*/ false ,
3148
+ /* useDelayedPrivatization=*/ true , symTable);
3149
+ wsloopItemDSP.processStep1 (&wsloopClauseOps);
3150
+
3151
+ DataSharingProcessor simdItemDSP (converter, semaCtx, simdItem->clauses , eval,
3152
+ /* shouldCollectPreDeterminedSymbols=*/ true ,
3153
+ /* useDelayedPrivatization=*/ true , symTable);
3154
+ simdItemDSP.processStep1 (&simdClauseOps);
3152
3155
3153
3156
// Pass the innermost leaf construct's clauses because that's where COLLAPSE
3154
3157
// is placed by construct decomposition.
@@ -3159,15 +3162,17 @@ static mlir::omp::WsloopOp genCompositeDoSimd(
3159
3162
3160
3163
// Operation creation.
3161
3164
EntryBlockArgs wsloopArgs;
3162
- // TODO: Add private syms and vars.
3165
+ wsloopArgs.priv .syms = wsloopItemDSP.getDelayedPrivSymbols ();
3166
+ wsloopArgs.priv .vars = wsloopClauseOps.privateVars ;
3163
3167
wsloopArgs.reduction .syms = wsloopReductionSyms;
3164
3168
wsloopArgs.reduction .vars = wsloopClauseOps.reductionVars ;
3165
3169
auto wsloopOp = genWrapperOp<mlir::omp::WsloopOp>(
3166
3170
converter, loc, wsloopClauseOps, wsloopArgs);
3167
3171
wsloopOp.setComposite (/* val=*/ true );
3168
3172
3169
3173
EntryBlockArgs simdArgs;
3170
- // TODO: Add private syms and vars.
3174
+ simdArgs.priv .syms = simdItemDSP.getDelayedPrivSymbols ();
3175
+ simdArgs.priv .vars = simdClauseOps.privateVars ;
3171
3176
simdArgs.reduction .syms = simdReductionSyms;
3172
3177
simdArgs.reduction .vars = simdClauseOps.reductionVars ;
3173
3178
auto simdOp =
@@ -3177,7 +3182,7 @@ static mlir::omp::WsloopOp genCompositeDoSimd(
3177
3182
genLoopNestOp (converter, symTable, semaCtx, eval, loc, queue, simdItem,
3178
3183
loopNestClauseOps, iv,
3179
3184
{{wsloopOp, wsloopArgs}, {simdOp, simdArgs}},
3180
- llvm::omp::Directive::OMPD_do_simd, dsp );
3185
+ llvm::omp::Directive::OMPD_do_simd, simdItemDSP );
3181
3186
return wsloopOp;
3182
3187
}
3183
3188
0 commit comments