@@ -3148,11 +3148,16 @@ static mlir::omp::DistributeOp genCompositeDistributeSimd(
3148
3148
genSimdClauses (converter, semaCtx, simdItem->clauses , loc, simdClauseOps,
3149
3149
simdReductionSyms);
3150
3150
3151
- // TODO: Support delayed privatization.
3152
- DataSharingProcessor dsp (converter, semaCtx, simdItem->clauses , eval,
3153
- /* shouldCollectPreDeterminedSymbols=*/ true ,
3154
- /* useDelayedPrivatization=*/ false , symTable);
3155
- dsp.processStep1 ();
3151
+ DataSharingProcessor distributeItemDSP (
3152
+ converter, semaCtx, distributeItem->clauses , eval,
3153
+ /* shouldCollectPreDeterminedSymbols=*/ false ,
3154
+ /* useDelayedPrivatization=*/ true , symTable);
3155
+ distributeItemDSP.processStep1 (&distributeClauseOps);
3156
+
3157
+ DataSharingProcessor simdItemDSP (converter, semaCtx, simdItem->clauses , eval,
3158
+ /* shouldCollectPreDeterminedSymbols=*/ true ,
3159
+ /* useDelayedPrivatization=*/ true , symTable);
3160
+ simdItemDSP.processStep1 (&simdClauseOps);
3156
3161
3157
3162
// Pass the innermost leaf construct's clauses because that's where COLLAPSE
3158
3163
// is placed by construct decomposition.
@@ -3163,13 +3168,15 @@ static mlir::omp::DistributeOp genCompositeDistributeSimd(
3163
3168
3164
3169
// Operation creation.
3165
3170
EntryBlockArgs distributeArgs;
3166
- // TODO: Add private syms and vars.
3171
+ distributeArgs.priv .syms = distributeItemDSP.getDelayedPrivSymbols ();
3172
+ distributeArgs.priv .vars = distributeClauseOps.privateVars ;
3167
3173
auto distributeOp = genWrapperOp<mlir::omp::DistributeOp>(
3168
3174
converter, loc, distributeClauseOps, distributeArgs);
3169
3175
distributeOp.setComposite (/* val=*/ true );
3170
3176
3171
3177
EntryBlockArgs simdArgs;
3172
- // TODO: Add private syms and vars.
3178
+ simdArgs.priv .syms = simdItemDSP.getDelayedPrivSymbols ();
3179
+ simdArgs.priv .vars = simdClauseOps.privateVars ;
3173
3180
simdArgs.reduction .syms = simdReductionSyms;
3174
3181
simdArgs.reduction .vars = simdClauseOps.reductionVars ;
3175
3182
auto simdOp =
@@ -3179,7 +3186,7 @@ static mlir::omp::DistributeOp genCompositeDistributeSimd(
3179
3186
genLoopNestOp (converter, symTable, semaCtx, eval, loc, queue, simdItem,
3180
3187
loopNestClauseOps, iv,
3181
3188
{{distributeOp, distributeArgs}, {simdOp, simdArgs}},
3182
- llvm::omp::Directive::OMPD_distribute_simd, dsp );
3189
+ llvm::omp::Directive::OMPD_distribute_simd, simdItemDSP );
3183
3190
return distributeOp;
3184
3191
}
3185
3192
0 commit comments