blob: 726ac4899ba708afe89c549e2725c56d5a8ab806 [file] [log] [blame]
!This test checks that when compiling an OpenMP program for the target device
!CSE is not done across target op region boundaries. It also checks that when
!compiling for the host CSE is done.
!RUN: %flang_fc1 -fopenmp-is-target-device -emit-mlir -fopenmp %s -o - | fir-opt -cse | FileCheck %s -check-prefix=CHECK-DEVICE
!RUN: %flang_fc1 -emit-mlir -fopenmp %s -o - | fir-opt -cse | FileCheck %s -check-prefix=CHECK-HOST
!RUN: bbc -fopenmp-is-target-device -emit-fir -fopenmp %s -o - | fir-opt -cse | FileCheck %s -check-prefix=CHECK-DEVICE
!RUN: bbc -emit-fir -fopenmp %s -o - | fir-opt -cse | FileCheck %s -check-prefix=CHECK-HOST
!Constant should be present inside target region.
!CHECK-DEVICE: omp.target
!CHECK-DEVICE: arith.constant 10
!CHECK-DEVICE: omp.terminator
!Constant should not be present inside target region.
!CHECK-HOST: omp.target
!CHECK-NOT-HOST: arith.constant 10
!CHECK-HOST: omp.terminator
subroutine writeIndex(sum)
integer :: sum
integer :: myconst1
integer :: myconst2
myconst1 = 10
!$omp target map(from:myconst2)
myconst2 = 10
!$omp end target
sum = myconst2 + myconst2
end subroutine writeIndex