43 lines · plain
1! Tests delayed privatization works for implicit capture of scalars similarly to2! the way it works for explicitly firstprivitized scalars.3 4! RUN: %flang_fc1 -emit-mlir -fopenmp -mmlir --enable-delayed-privatization-staging \5! RUN: -o - %s 2>&1 | FileCheck %s6 7! CHECK-LABEL: omp.private {type = firstprivate} @_QFExdgfx_firstprivate_i32 : i32 copy {8! CHECK: ^bb0(%{{.*}}: !fir.ref<i32>, %{{.*}}: !fir.ref<i32>):9! CHECK: %{{.*}} = fir.load %{{.*}} : !fir.ref<i32>10! CHECK: fir.store %{{.*}} to %{{.*}} : !fir.ref<i32>11! CHECK: omp.yield(%{{.*}} : !fir.ref<i32>)12! CHECK: }13 14! CHECK-LABEL: omp.private {type = firstprivate} @_QFExfpvx_firstprivate_i32 : i32 copy {15! CHECK: ^bb0(%{{.*}}: !fir.ref<i32>, %{{.*}}: !fir.ref<i32>):16! CHECK: %{{.*}} = fir.load %{{.*}} : !fir.ref<i32>17! CHECK: fir.store %{{.*}} to %{{.*}} : !fir.ref<i32>18! CHECK: omp.yield(%{{.*}} : !fir.ref<i32>)19! CHECK: }20 21! CHECK: %[[VAL_0:.*]] = fir.alloca i32 {bindc_name = "xdgfx", uniq_name = "_QFExdgfx"}22! CHECK: %[[VAL_1:.*]] = fir.declare %[[VAL_0]] {uniq_name = "_QFExdgfx"} : (!fir.ref<i32>) -> !fir.ref<i32>23! CHECK: %[[VAL_2:.*]] = fir.alloca i32 {bindc_name = "xfpvx", uniq_name = "_QFExfpvx"}24! CHECK: %[[VAL_3:.*]] = fir.declare %[[VAL_2]] {uniq_name = "_QFExfpvx"} : (!fir.ref<i32>) -> !fir.ref<i32>25! CHECK: %[[VAL_4:.*]] = omp.map.info var_ptr(%[[VAL_3]] : !fir.ref<i32>, i32) map_clauses(to) capture(ByCopy) -> !fir.ref<i32>26! CHECK: %[[VAL_5:.*]] = omp.map.info var_ptr(%[[VAL_1]] : !fir.ref<i32>, i32) map_clauses(to) capture(ByCopy) -> !fir.ref<i32>27 28! CHECK: omp.target map_entries(%[[VAL_4]] -> %{{.*}}, %[[VAL_5]] -> %{{.*}} : !fir.ref<i32>, !fir.ref<i32>) private(@_QFExfpvx_firstprivate_i32 %[[VAL_3]] -> %[[VAL_6:.*]] [map_idx=0], @_QFExdgfx_firstprivate_i32 %[[VAL_1]] -> %[[VAL_7:.*]] [map_idx=1] : !fir.ref<i32>, !fir.ref<i32>) {29! CHECK: %{{.*}} = fir.declare %[[VAL_6]] {uniq_name = "_QFExfpvx"} : (!fir.ref<i32>) -> !fir.ref<i32>30! CHECK: %{{.*}} = fir.declare %[[VAL_7]] {uniq_name = "_QFExdgfx"} : (!fir.ref<i32>) -> !fir.ref<i32>31 32program test_default_implicit_firstprivate33 implicit none34 integer :: xdgfx, xfpvx35 xdgfx = 136 xfpvx = 237 !$omp target firstprivate(xfpvx)38 xdgfx = 4239 xfpvx = 4340 !$omp end target41 write(*,*) xdgfx, xfpvx42end program43