@@ -3094,7 +3094,6 @@ static mlir::omp::DistributeOp genCompositeDistributeSimd(
30943094 /* useDelayedPrivatization=*/ false , symTable);
30953095 dsp.processStep1 ();
30963096 dsp.processStep2 ();
3097-
30983097 // Pass the innermost leaf construct's clauses because that's where COLLAPSE
30993098 // is placed by construct decomposition.
31003099 mlir::omp::LoopNestOperands loopNestClauseOps;
@@ -3144,12 +3143,18 @@ static mlir::omp::WsloopOp genCompositeDoSimd(
31443143 genSimdClauses (converter, semaCtx, simdItem->clauses , loc, simdClauseOps,
31453144 simdReductionSyms);
31463145
3147- // TODO: Support delayed privatization.
3148- DataSharingProcessor dsp (converter, semaCtx, simdItem->clauses , eval,
3149- /* shouldCollectPreDeterminedSymbols=*/ true ,
3150- /* useDelayedPrivatization=*/ false , symTable);
3151- dsp.processStep1 ();
3152- dsp.processStep2 ();
3146+ DataSharingProcessor wsloopItemDSP (
3147+ converter, semaCtx, doItem->clauses , eval,
3148+ /* shouldCollectPreDeterminedSymbols=*/ false ,
3149+ /* useDelayedPrivatization=*/ true , symTable);
3150+ wsloopItemDSP.processStep1 ();
3151+ wsloopItemDSP.processStep2 (&wsloopClauseOps);
3152+
3153+ DataSharingProcessor simdItemDSP (converter, semaCtx, simdItem->clauses , eval,
3154+ /* shouldCollectPreDeterminedSymbols=*/ true ,
3155+ /* useDelayedPrivatization=*/ true , symTable);
3156+ simdItemDSP.processStep1 ();
3157+ simdItemDSP.processStep2 (&simdClauseOps);
31533158
31543159 // Pass the innermost leaf construct's clauses because that's where COLLAPSE
31553160 // is placed by construct decomposition.
@@ -3160,15 +3165,17 @@ static mlir::omp::WsloopOp genCompositeDoSimd(
31603165
31613166 // Operation creation.
31623167 EntryBlockArgs wsloopArgs;
3163- // TODO: Add private syms and vars.
3168+ wsloopArgs.priv .syms = wsloopItemDSP.getDelayedPrivSymbols ();
3169+ wsloopArgs.priv .vars = wsloopClauseOps.privateVars ;
31643170 wsloopArgs.reduction .syms = wsloopReductionSyms;
31653171 wsloopArgs.reduction .vars = wsloopClauseOps.reductionVars ;
31663172 auto wsloopOp = genWrapperOp<mlir::omp::WsloopOp>(
31673173 converter, loc, wsloopClauseOps, wsloopArgs);
31683174 wsloopOp.setComposite (/* val=*/ true );
31693175
31703176 EntryBlockArgs simdArgs;
3171- // TODO: Add private syms and vars.
3177+ simdArgs.priv .syms = simdItemDSP.getDelayedPrivSymbols ();
3178+ simdArgs.priv .vars = simdClauseOps.privateVars ;
31723179 simdArgs.reduction .syms = simdReductionSyms;
31733180 simdArgs.reduction .vars = simdClauseOps.reductionVars ;
31743181 auto simdOp =
@@ -3178,7 +3185,7 @@ static mlir::omp::WsloopOp genCompositeDoSimd(
31783185 genLoopNestOp (converter, symTable, semaCtx, eval, loc, queue, simdItem,
31793186 loopNestClauseOps, iv,
31803187 {{wsloopOp, wsloopArgs}, {simdOp, simdArgs}},
3181- llvm::omp::Directive::OMPD_do_simd, dsp );
3188+ llvm::omp::Directive::OMPD_do_simd, simdItemDSP );
31823189 return wsloopOp;
31833190}
31843191
0 commit comments