[flang-commits] [flang] [flang][MLIR][OpenMP] Extend delayed privatization for scalar allocatables (PR #84740)
    Kareem Ergawy via flang-commits 
    flang-commits at lists.llvm.org
       
    Tue Mar 12 01:36:54 PDT 2024
    
    
  
ergawy wrote:
> Would pointers come in a separate patch?
@kiranchandramohan, I just tried delayed privatization with pointers and there is a difference between the copy logic in eager privatization vs. the delayed case:
Eager privatization:
```
      %6 = fir.load %3#0 : !fir.ref<!fir.box<!fir.ptr<i32>>>
      fir.store %6 to %5#0 : !fir.ref<!fir.box<!fir.ptr<i32>>>
```
Delayed privatization:
```
copy {
  ^bb0(%arg0: !fir.ref<!fir.box<!fir.ptr<i32>>>, %arg1: !fir.ref<!fir.box<!fir.ptr<i32>>>):
    %0 = fir.load %arg0 : !fir.ref<!fir.box<!fir.ptr<i32>>>
    %1 = fir.box_addr %0 : (!fir.box<!fir.ptr<i32>>) -> !fir.ptr<i32>
    %2 = fir.load %1 : !fir.ptr<i32>
    hlfir.assign %2 to %arg1 temporary_lhs : i32, !fir.ref<!fir.box<!fir.ptr<i32>>>
    omp.yield(%arg1 : !fir.ref<!fir.box<!fir.ptr<i32>>>)
  }
```
So this will need proper handling which I think makes sense to defer to a follow-up PR.
As far as I understand, `firstprivate` should initialize the clone to the same target of the original value which does not happen now with delayed privatization (it changes the value of the target).
https://github.com/llvm/llvm-project/pull/84740
    
    
More information about the flang-commits
mailing list