Skip to content

Commit 3b2c7dc

Browse files
committed
Rebase patch with upstream.
1 parent 11105ed commit 3b2c7dc

File tree

2 files changed

+16
-14
lines changed

2 files changed

+16
-14
lines changed

flang/lib/Lower/OpenMP/OpenMP.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1053,9 +1053,10 @@ genTargetOp(Fortran::lower::AbstractConverter &converter,
10531053
llvm::SmallVector<mlir::Location> mapSymLocs;
10541054
llvm::SmallVector<const Fortran::semantics::Symbol *> mapSymbols;
10551055
llvm::SmallVector<mlir::Value> devicePtrOperands, deviceAddrOperands;
1056-
llvm::SmallVector<mlir::Type> useDeviceTypes;
1057-
llvm::SmallVector<mlir::Location> useDeviceLocs;
1058-
llvm::SmallVector<const Fortran::semantics::Symbol *> useDeviceSymbols;
1056+
llvm::SmallVector<mlir::Type> devicePtrTypes, deviceAddrTypes;
1057+
llvm::SmallVector<mlir::Location> devicePtrLocs, deviceAddrLocs;
1058+
llvm::SmallVector<const Fortran::semantics::Symbol *> devicePtrSymbols,
1059+
deviceAddrSymbols;
10591060

10601061
ClauseProcessor cp(converter, semaCtx, clauseList);
10611062
cp.processIf(Fortran::parser::OmpIfClause::DirectiveNameModifier::Target,
@@ -1066,10 +1067,11 @@ genTargetOp(Fortran::lower::AbstractConverter &converter,
10661067
cp.processNowait(nowaitAttr);
10671068
cp.processMap(currentLocation, directive, stmtCtx, mapOperands, &mapSymTypes,
10681069
&mapSymLocs, &mapSymbols);
1069-
cp.processIsDevicePtr(devicePtrOperands, useDeviceTypes, useDeviceLocs,
1070-
useDeviceSymbols);
1071-
cp.processHasDeviceAddr(deviceAddrOperands, useDeviceTypes, useDeviceLocs,
1072-
useDeviceSymbols);
1070+
cp.processIsDevicePtr(devicePtrOperands, devicePtrTypes, devicePtrLocs,
1071+
devicePtrSymbols);
1072+
cp.processHasDeviceAddr(deviceAddrOperands, deviceAddrTypes, deviceAddrLocs,
1073+
deviceAddrSymbols);
1074+
10731075
cp.processTODO<Fortran::parser::OmpClause::Private,
10741076
Fortran::parser::OmpClause::Firstprivate,
10751077
Fortran::parser::OmpClause::Reduction,

flang/test/Lower/OpenMP/FIR/target.f90

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -515,15 +515,15 @@ end subroutine omp_target_parallel_do
515515
!CHECK-LABEL: func.func @_QPomp_target_is_device_ptr() {
516516
subroutine omp_target_is_device_ptr
517517
use iso_c_binding, only : c_ptr, c_loc
518-
!CHECK: %[[DEV_PTR:.*]] = fir.alloca !fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}> {bindc_name = "a", uniq_name = "_QFomp_target_is_device_ptrEa"}
518+
!CHECK: %[[VAL_0:.*]] = fir.alloca !fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}> {bindc_name = "a", uniq_name = "_QFomp_target_is_device_ptrEa"}
519519
type(c_ptr) :: a
520-
!CHECK %[[VAL_0:.*]] = fir.alloca i32 {bindc_name = "b", fir.target, uniq_name = "_QFomp_target_is_device_ptrEb"}
520+
!CHECK: %[[VAL_1:.*]] = fir.alloca i32 {bindc_name = "b", fir.target, uniq_name = "_QFomp_target_is_device_ptrEb"}
521521
integer, target :: b
522-
!CHECK: %[[MAP_0:.*]] = omp.map_info var_ptr(%[[DEV_PTR:.*]] : !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>, !fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>) map_clauses(tofrom) capture(ByRef) -> !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>> {name = "a"}
523-
!CHECK: %[[MAP_1:.*]] = omp.map_info var_ptr(%[[VAL_0:.*]] : !fir.ref<i32>, i32) map_clauses(tofrom) capture(ByRef) -> !fir.ref<i32> {name = "b"}
524-
!CHECK: omp.target is_device_ptr(%[[DEV_PTR:.*]] : !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>) map_entries(%[[MAP_0:.*]], %[[MAP_1:.*]] : !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>, !fir.ref<i32>, !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>) {
522+
!CHECK: %[[VAL_2:.*]] = omp.map_info var_ptr(%[[VAL_0:.*]] : !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>, !fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>) map_clauses(tofrom) capture(ByRef) -> !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>> {name = "a"}
523+
!CHECK: %[[VAL_3:.*]] = omp.map_info var_ptr(%[[VAL_1:.*]] : !fir.ref<i32>, i32) map_clauses(tofrom) capture(ByRef) -> !fir.ref<i32> {name = "b"}
524+
!CHECK: omp.target is_device_ptr(%[[VAL_0:.*]] : !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>) map_entries(%[[VAL_2:.*]] -> {{.*}}, %[[VAL_0:.*]] -> {{.*}}, {{.*}} -> {{.*}} : !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>, !fir.ref<i32>, !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>) {
525525
!$omp target map(tofrom: a,b) is_device_ptr(a)
526-
!CHECK: {{.*}} = fir.coordinate_of %[[DEV_PTR:.*]], {{.*}} : (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>, !fir.field) -> !fir.ref<i64>
526+
!CHECK: {{.*}} = fir.coordinate_of %[[VAL_0:.*]], {{.*}} : (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>, !fir.field) -> !fir.ref<i64>
527527
a = c_loc(b)
528528
!CHECK: omp.terminator
529529
!$omp end target
@@ -536,8 +536,8 @@ end subroutine omp_target_is_device_ptr
536536

537537
!CHECK-LABEL: func.func @_QPomp_target_has_device_addr() {
538538
subroutine omp_target_has_device_addr
539-
integer, pointer :: a
540539
!CHECK: %[[VAL_0:.*]] = fir.alloca !fir.box<!fir.ptr<i32>> {bindc_name = "a", uniq_name = "_QFomp_target_has_device_addrEa"}
540+
integer, pointer :: a
541541
!CHECK: omp.target has_device_addr(%[[VAL_0:.*]] : !fir.ref<!fir.box<!fir.ptr<i32>>>) map_entries({{.*}} -> {{.*}}, {{.*}} -> {{.*}} : !fir.llvm_ptr<!fir.ref<i32>>, !fir.ref<!fir.box<!fir.ptr<i32>>>) {
542542
!$omp target has_device_addr(a)
543543
!CHECK: {{.*}} = fir.load %[[VAL_0:.*]] : !fir.ref<!fir.box<!fir.ptr<i32>>>

0 commit comments

Comments
 (0)