@@ -3148,11 +3148,16 @@ static mlir::omp::DistributeOp genCompositeDistributeSimd(
31483148 genSimdClauses (converter, semaCtx, simdItem->clauses , loc, simdClauseOps,
31493149 simdReductionSyms);
31503150
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);
31563161
31573162 // Pass the innermost leaf construct's clauses because that's where COLLAPSE
31583163 // is placed by construct decomposition.
@@ -3163,13 +3168,15 @@ static mlir::omp::DistributeOp genCompositeDistributeSimd(
31633168
31643169 // Operation creation.
31653170 EntryBlockArgs distributeArgs;
3166- // TODO: Add private syms and vars.
3171+ distributeArgs.priv .syms = distributeItemDSP.getDelayedPrivSymbols ();
3172+ distributeArgs.priv .vars = distributeClauseOps.privateVars ;
31673173 auto distributeOp = genWrapperOp<mlir::omp::DistributeOp>(
31683174 converter, loc, distributeClauseOps, distributeArgs);
31693175 distributeOp.setComposite (/* val=*/ true );
31703176
31713177 EntryBlockArgs simdArgs;
3172- // TODO: Add private syms and vars.
3178+ simdArgs.priv .syms = simdItemDSP.getDelayedPrivSymbols ();
3179+ simdArgs.priv .vars = simdClauseOps.privateVars ;
31733180 simdArgs.reduction .syms = simdReductionSyms;
31743181 simdArgs.reduction .vars = simdClauseOps.reductionVars ;
31753182 auto simdOp =
@@ -3179,7 +3186,7 @@ static mlir::omp::DistributeOp genCompositeDistributeSimd(
31793186 genLoopNestOp (converter, symTable, semaCtx, eval, loc, queue, simdItem,
31803187 loopNestClauseOps, iv,
31813188 {{distributeOp, distributeArgs}, {simdOp, simdArgs}},
3182- llvm::omp::Directive::OMPD_distribute_simd, dsp );
3189+ llvm::omp::Directive::OMPD_distribute_simd, simdItemDSP );
31833190 return distributeOp;
31843191}
31853192
0 commit comments