[Mlir-commits] [mlir] [flang] [MLIR][OpenMP] Changes to function-filtering pass (PR #71850)

Sergio Afonso llvmlistbot at llvm.org
Fri Nov 10 03:27:02 PST 2023


================
@@ -2496,8 +2496,6 @@ convertDeclareTargetAttr(Operation *op, mlir::omp::DeclareTargetAttr attribute,
       if (declareType == omp::DeclareTargetDeviceType::host) {
         llvm::Function *llvmFunc =
             moduleTranslation.lookupFunction(funcOp.getName());
-        llvmFunc->replaceAllUsesWith(
----------------
skatrak wrote:

I think this code or similar should remain, because otherwise host functions containing target regions calling other host functions containing target regions will give problems. This example should work, and I think this change may have broken it:

```fortran
subroutine before(x)
  integer, intent(out) :: x
  !$omp target map(from: x)
    x = 1
  !$omp end target
end subroutine

subroutine middle()
  integer :: x
  !$omp target map(from: x)
    x = 0
  !$omp end target
  call before(x)
  call after(x)
end subroutine

subroutine after(x)
  integer, intent(out) :: x
  !$omp target map(from:x)
    x = 2
  !$omp end target
end subroutine
```

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


More information about the Mlir-commits mailing list