blob: a277c06d620669b8a5eb66f14c715f1b567f5f9f [file] [log] [blame]
! RUN: %flang_fc1 -fopenmp -flang-experimental-hlfir -emit-llvm %s -o - | FileCheck --check-prefixes=LLVM-HOST,LLVM-ALL %s
! RUN: %flang_fc1 -fopenmp -emit-hlfir %s -o - | FileCheck --check-prefixes=MLIR-HOST,MLIR-ALL %s
! RUN: %flang_fc1 -fopenmp -fopenmp-is-target-device -flang-experimental-hlfir -emit-llvm %s -o - | FileCheck --check-prefixes=LLVM-DEVICE,LLVM-ALL %s
! RUN: %flang_fc1 -fopenmp -fopenmp-is-target-device -emit-hlfir %s -o - | FileCheck --check-prefixes=MLIR-DEVICE,MLIR-ALL %s
! RUN: bbc -fopenmp -emit-hlfir %s -o - | FileCheck --check-prefixes=MLIR-HOST,MLIR-ALL %s
! RUN: bbc -fopenmp -fopenmp-is-target-device -emit-hlfir %s -o - | FileCheck --check-prefixes=MLIR-DEVICE,MLIR-ALL %s
! Check that the correct LLVM IR functions are kept for the host and device
! after running the whole set of translation and transformation passes from
! Fortran.
! MLIR-HOST: func.func @{{.*}}host_parent_procedure(
! MLIR-HOST: return
! MLIR-DEVICE-NOT: func.func {{.*}}host_parent_procedure(
! LLVM-HOST: define {{.*}} @host_parent_procedure{{.*}}(
! LLVM-DEVICE-NOT: {{.*}} @{{.*}}_host_parent_procedure{{.*}}(
subroutine host_parent_procedure(x)
integer, intent(out) :: x
call target_internal_proc(x)
contains
! MLIR-ALL: func.func {{.*}}@_QFhost_parent_procedurePtarget_internal_proc(
! LLVM-HOST: define {{.*}} @_QFhost_parent_procedurePtarget_internal_proc(
! LLVM-DEVICE-NOT: define {{.*}} @_QFhost_parent_procedurePtarget_internal_proc(
! LLVM-ALL: define {{.*}} @__omp_offloading_{{.*}}QFhost_parent_procedurePtarget_internal_proc{{.*}}(
subroutine target_internal_proc(x)
integer, intent(out) :: x
!$omp target map(from:x)
x = 10
!$omp end target
end subroutine
end subroutine