22 lines · plain
1! RUN: %flang_fc1 -emit-hlfir -fopenmp -fopenmp-version=50 %s -o - | FileCheck %s2!3! Checks:4! - C_PTR mappings expand to `__address` member with CLOSE under USM paths.5! - use_device_ptr does not implicitly expand member operands in the clause.6 7subroutine only_cptr_use_device_ptr8 use iso_c_binding9 type(c_ptr) :: cptr10 integer :: i11 12 !$omp target data use_device_ptr(cptr) map(tofrom: i)13 !$omp end target data14end subroutine15 16! CHECK-LABEL: func.func @_QPonly_cptr_use_device_ptr()17! CHECK: %[[I_MAP:.*]] = omp.map.info var_ptr(%{{.*}} : !fir.ref<i32>, i32) map_clauses(tofrom) capture(ByRef) -> !fir.ref<i32> {name = "i"}18! CHECK: %[[CP_MAP:.*]] = omp.map.info var_ptr(%{{.*}} : !fir.ref<!fir.type<{{.*}}__builtin_c_ptr{{.*}}>>, !fir.type<{{.*}}__builtin_c_ptr{{.*}}>) map_clauses(return_param) capture(ByRef) -> !fir.ref<!fir.type<{{.*}}__builtin_c_ptr{{.*}}>>19! CHECK: omp.target_data map_entries(%[[I_MAP]] : !fir.ref<i32>) use_device_ptr(%[[CP_MAP]] -> %{{.*}} : !fir.ref<!fir.type<{{.*}}__builtin_c_ptr{{.*}}>>) {20! CHECK: omp.terminator21! CHECK: }22