@@ -3088,12 +3088,20 @@ static mlir::omp::DistributeOp genCompositeDistributeSimd(
30883088 genSimdClauses (converter, semaCtx, simdItem->clauses , loc, simdClauseOps,
30893089 simdReductionSyms);
30903090
3091- // TODO: Support delayed privatization.
3092- DataSharingProcessor dsp (converter, semaCtx, simdItem->clauses , eval,
3093- /* shouldCollectPreDeterminedSymbols=*/ true ,
3094- /* useDelayedPrivatization=*/ false , symTable);
3095- dsp.processStep1 ();
3096- dsp.processStep2 ();
3091+
3092+ DataSharingProcessor distributeItemDSP (
3093+ converter, semaCtx, distributeItem->clauses , eval,
3094+ /* shouldCollectPreDeterminedSymbols=*/ false ,
3095+ /* useDelayedPrivatization=*/ true , symTable);
3096+ distributeItemDSP.processStep1 ();
3097+ distributeItemDSP.processStep2 (&distributeClauseOps);
3098+
3099+ DataSharingProcessor simdItemDSP (converter, semaCtx, simdItem->clauses , eval,
3100+ /* shouldCollectPreDeterminedSymbols=*/ true ,
3101+ /* useDelayedPrivatization=*/ true , symTable);
3102+ simdItemDSP.processStep1 ();
3103+ simdItemDSP.processStep2 (&simdClauseOps);
3104+
30973105 // Pass the innermost leaf construct's clauses because that's where COLLAPSE
30983106 // is placed by construct decomposition.
30993107 mlir::omp::LoopNestOperands loopNestClauseOps;
@@ -3103,13 +3111,15 @@ static mlir::omp::DistributeOp genCompositeDistributeSimd(
31033111
31043112 // Operation creation.
31053113 EntryBlockArgs distributeArgs;
3106- // TODO: Add private syms and vars.
3114+ distributeArgs.priv .syms = distributeItemDSP.getDelayedPrivSymbols ();
3115+ distributeArgs.priv .vars = distributeClauseOps.privateVars ;
31073116 auto distributeOp = genWrapperOp<mlir::omp::DistributeOp>(
31083117 converter, loc, distributeClauseOps, distributeArgs);
31093118 distributeOp.setComposite (/* val=*/ true );
31103119
31113120 EntryBlockArgs simdArgs;
3112- // TODO: Add private syms and vars.
3121+ simdArgs.priv .syms = simdItemDSP.getDelayedPrivSymbols ();
3122+ simdArgs.priv .vars = simdClauseOps.privateVars ;
31133123 simdArgs.reduction .syms = simdReductionSyms;
31143124 simdArgs.reduction .vars = simdClauseOps.reductionVars ;
31153125 auto simdOp =
@@ -3119,7 +3129,7 @@ static mlir::omp::DistributeOp genCompositeDistributeSimd(
31193129 genLoopNestOp (converter, symTable, semaCtx, eval, loc, queue, simdItem,
31203130 loopNestClauseOps, iv,
31213131 {{distributeOp, distributeArgs}, {simdOp, simdArgs}},
3122- llvm::omp::Directive::OMPD_distribute_simd, dsp );
3132+ llvm::omp::Directive::OMPD_distribute_simd, simdItemDSP );
31233133 return distributeOp;
31243134}
31253135
0 commit comments