[llvm] [mlir] [MLIR][OpenMP] Support basic materialization for `omp.private` ops (PR #81715)

via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 20 11:56:58 PST 2024


================
@@ -1000,11 +1000,39 @@ convertOmpWsLoop(Operation &opInst, llvm::IRBuilderBase &builder,
   return success();
 }
 
+/// Replace the region arguments of the parallel op (which correspond to private
+/// variables) with the actual private varibles they correspond to. This
+/// prepares the parallel op so that it matches what is expected by the
+/// OMPIRBuilder. Instead of editing the original op in-place, this function
+/// does the required changes to a cloned version which should then be erased by
+/// the caller.
+static omp::ParallelOp
+prepareOmpParallelForPrivatization(omp::ParallelOp opInst) {
----------------
NimishMishra wrote:

Where is this function invoked from? One probable place is in `convertOmpParallel`, but that line is commented out. 

I read the other discussion, and it makes sense that if `%arg` is used within the region, then `CodeExtractor` will not really consider it as `Input` and involve the appropriate privatization callback. But I am not able to connect where exactly are we modifying the parallel op?

https://github.com/llvm/llvm-project/pull/81715


More information about the llvm-commits mailing list