[flang-commits] [flang] [flang][OpenMP] Fix LASTPRIVATE for iteration variables (PR #69773)
via flang-commits
flang-commits at lists.llvm.org
Sun Oct 22 21:46:14 PDT 2023
================
@@ -349,34 +354,55 @@ void DataSharingProcessor::insertLastPrivateCompare(mlir::Operation *op) {
}
}
} else if (mlir::isa<mlir::omp::WsLoopOp>(op)) {
- mlir::Operation *lastOper = op->getRegion(0).back().getTerminator();
- firOpBuilder.setInsertionPoint(lastOper);
-
// Update the original variable just before exiting the worksharing
// loop. Conversion as follows:
//
// omp.wsloop {
// omp.wsloop { ...
// ... store
- // store ===> %cmp = llvm.icmp "eq" %iv %ub
- // omp.yield fir.if %cmp {
- // } ^%lpv_update_blk:
+ // store ===> %v = arith.addi %iv, %step
+ // omp.yield %cmp = %step < 0 ? %v < %ub : %v > %ub
+ // } fir.if %cmp {
+ // fir.store %v to %loopIV
----------------
NimishMishra wrote:
Nit: An additional `fit.store` here is redundant. We expect all last private operations to be abstracted within `^%lpv_update_blk`
https://github.com/llvm/llvm-project/pull/69773
More information about the flang-commits
mailing list