Skip to content

Commit 3c454f5

Browse files
committed
Rebase patch with upstream.
1 parent d879ead commit 3c454f5

File tree

2 files changed

+21
-19
lines changed

2 files changed

+21
-19
lines changed

flang/lib/Lower/OpenMP.cpp

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2103,15 +2103,15 @@ bool ClauseProcessor::processIsDevicePtr(
21032103

21042104
bool ClauseProcessor::processHasDeviceAddr(
21052105
llvm::SmallVectorImpl<mlir::Value> &operands,
2106-
llvm::SmallVectorImpl<mlir::Type> &isDeviceTypes,
2107-
llvm::SmallVectorImpl<mlir::Location> &isDeviceLocs,
2108-
llvm::SmallVectorImpl<const Fortran::semantics::Symbol *> &isDeviceSymbols)
2106+
llvm::SmallVectorImpl<mlir::Type> &hasDeviceTypes,
2107+
llvm::SmallVectorImpl<mlir::Location> &hasDeviceLocs,
2108+
llvm::SmallVectorImpl<const Fortran::semantics::Symbol *> &hasDeviceSymbols)
21092109
const {
21102110
return findRepeatableClause<ClauseTy::HasDeviceAddr>(
21112111
[&](const ClauseTy::HasDeviceAddr *devAddrClause,
21122112
const Fortran::parser::CharBlock &) {
2113-
addUseDeviceClause(converter, devAddrClause->v, operands, isDeviceTypes,
2114-
isDeviceLocs, isDeviceSymbols);
2113+
addUseDeviceClause(converter, devAddrClause->v, operands,
2114+
hasDeviceTypes, hasDeviceLocs, hasDeviceSymbols);
21152115
});
21162116
}
21172117

@@ -3040,9 +3040,10 @@ genTargetOp(Fortran::lower::AbstractConverter &converter,
30403040
llvm::SmallVector<mlir::Location> mapSymLocs;
30413041
llvm::SmallVector<const Fortran::semantics::Symbol *> mapSymbols;
30423042
llvm::SmallVector<mlir::Value> devicePtrOperands, deviceAddrOperands;
3043-
llvm::SmallVector<mlir::Type> useDeviceTypes;
3044-
llvm::SmallVector<mlir::Location> useDeviceLocs;
3045-
llvm::SmallVector<const Fortran::semantics::Symbol *> useDeviceSymbols;
3043+
llvm::SmallVector<mlir::Type> devicePtrTypes, deviceAddrTypes;
3044+
llvm::SmallVector<mlir::Location> devicePtrLocs, deviceAddrLocs;
3045+
llvm::SmallVector<const Fortran::semantics::Symbol *> devicePtrSymbols,
3046+
deviceAddrSymbols;
30463047

30473048
ClauseProcessor cp(converter, semaCtx, clauseList);
30483049
cp.processIf(Fortran::parser::OmpIfClause::DirectiveNameModifier::Target,
@@ -3052,10 +3053,11 @@ genTargetOp(Fortran::lower::AbstractConverter &converter,
30523053
cp.processNowait(nowaitAttr);
30533054
cp.processMap(currentLocation, directive, stmtCtx, mapOperands, &mapSymTypes,
30543055
&mapSymLocs, &mapSymbols);
3055-
cp.processIsDevicePtr(devicePtrOperands, useDeviceTypes, useDeviceLocs,
3056-
useDeviceSymbols);
3057-
cp.processHasDeviceAddr(deviceAddrOperands, useDeviceTypes, useDeviceLocs,
3058-
useDeviceSymbols);
3056+
cp.processIsDevicePtr(devicePtrOperands, devicePtrTypes, devicePtrLocs,
3057+
devicePtrSymbols);
3058+
cp.processHasDeviceAddr(deviceAddrOperands, deviceAddrTypes, deviceAddrLocs,
3059+
deviceAddrSymbols);
3060+
30593061
cp.processTODO<Fortran::parser::OmpClause::Private,
30603062
Fortran::parser::OmpClause::Depend,
30613063
Fortran::parser::OmpClause::Firstprivate,

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)