| !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 |