@@ -3092,7 +3092,6 @@ static mlir::omp::DistributeOp genCompositeDistributeSimd(
30923092 /* shouldCollectPreDeterminedSymbols=*/ true ,
30933093 /* useDelayedPrivatization=*/ false , symTable);
30943094 dsp.processStep1 ();
3095- dsp.processStep2 ();
30963095
30973096 // Pass the innermost leaf construct's clauses because that's where COLLAPSE
30983097 // is placed by construct decomposition.
@@ -3143,12 +3142,16 @@ static mlir::omp::WsloopOp genCompositeDoSimd(
31433142 genSimdClauses (converter, semaCtx, simdItem->clauses , loc, simdClauseOps,
31443143 simdReductionSyms);
31453144
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);
31523155
31533156 // Pass the innermost leaf construct's clauses because that's where COLLAPSE
31543157 // is placed by construct decomposition.
@@ -3159,15 +3162,17 @@ static mlir::omp::WsloopOp genCompositeDoSimd(
31593162
31603163 // Operation creation.
31613164 EntryBlockArgs wsloopArgs;
3162- // TODO: Add private syms and vars.
3165+ wsloopArgs.priv .syms = wsloopItemDSP.getDelayedPrivSymbols ();
3166+ wsloopArgs.priv .vars = wsloopClauseOps.privateVars ;
31633167 wsloopArgs.reduction .syms = wsloopReductionSyms;
31643168 wsloopArgs.reduction .vars = wsloopClauseOps.reductionVars ;
31653169 auto wsloopOp = genWrapperOp<mlir::omp::WsloopOp>(
31663170 converter, loc, wsloopClauseOps, wsloopArgs);
31673171 wsloopOp.setComposite (/* val=*/ true );
31683172
31693173 EntryBlockArgs simdArgs;
3170- // TODO: Add private syms and vars.
3174+ simdArgs.priv .syms = simdItemDSP.getDelayedPrivSymbols ();
3175+ simdArgs.priv .vars = simdClauseOps.privateVars ;
31713176 simdArgs.reduction .syms = simdReductionSyms;
31723177 simdArgs.reduction .vars = simdClauseOps.reductionVars ;
31733178 auto simdOp =
@@ -3177,7 +3182,7 @@ static mlir::omp::WsloopOp genCompositeDoSimd(
31773182 genLoopNestOp (converter, symTable, semaCtx, eval, loc, queue, simdItem,
31783183 loopNestClauseOps, iv,
31793184 {{wsloopOp, wsloopArgs}, {simdOp, simdArgs}},
3180- llvm::omp::Directive::OMPD_do_simd, dsp );
3185+ llvm::omp::Directive::OMPD_do_simd, simdItemDSP );
31813186 return wsloopOp;
31823187}
31833188
0 commit comments