Skip to content

Commit 65f253d

Browse files
authored
[OpenMP][Flang] PR 164043 reference merge PR (#333)
PR to (hopefully) help Ron merge the upstream PR into downstream with minmal issues
1 parent 53c2af1 commit 65f253d

40 files changed

+450
-349
lines changed

flang/include/flang/Lower/DirectivesCommon.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
#include "mlir/Dialect/OpenMP/OpenMPDialect.h"
4040
#include "mlir/Dialect/SCF/IR/SCF.h"
4141
#include "mlir/IR/Value.h"
42-
#include "llvm/Frontend/OpenMP/OMPConstants.h"
4342
#include <list>
4443
#include <type_traits>
4544

flang/include/flang/Lower/OpenMP/Utils.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ mlir::Value createParentSymAndGenIntermediateMaps(
134134
semantics::SemanticsContext &semaCtx, lower::StatementContext &stmtCtx,
135135
omp::ObjectList &objectList, llvm::SmallVectorImpl<int64_t> &indices,
136136
OmpMapParentAndMemberData &parentMemberIndices, llvm::StringRef asFortran,
137-
llvm::omp::OpenMPOffloadMappingFlags mapTypeBits);
137+
mlir::omp::ClauseMapFlags mapTypeBits);
138138

139139
omp::ObjectList gatherObjectsOf(omp::Object derivedTypeMember,
140140
semantics::SemanticsContext &semaCtx);

flang/include/flang/Utils/OpenMP.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,9 @@ mlir::omp::MapInfoOp createMapInfoOp(mlir::OpBuilder &builder,
2929
mlir::Location loc, mlir::Value baseAddr, mlir::Value varPtrPtr,
3030
llvm::StringRef name, llvm::ArrayRef<mlir::Value> bounds,
3131
llvm::ArrayRef<mlir::Value> members, mlir::ArrayAttr membersIndex,
32-
uint64_t mapType, mlir::omp::VariableCaptureKind mapCaptureType,
33-
mlir::Type retTy, bool partialMap = false,
32+
mlir::omp::ClauseMapFlags mapType,
33+
mlir::omp::VariableCaptureKind mapCaptureType, mlir::Type retTy,
34+
bool partialMap = false,
3435
mlir::FlatSymbolRefAttr mapperId = mlir::FlatSymbolRefAttr());
3536

3637
/// For an mlir value that does not have storage, allocate temporary storage

flang/lib/Lower/OpenMP/ClauseProcessor.cpp

Lines changed: 23 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1080,9 +1080,8 @@ bool ClauseProcessor::processHasDeviceAddr(
10801080
[&](const omp::clause::HasDeviceAddr &clause,
10811081
const parser::CharBlock &source) {
10821082
mlir::Location location = converter.genLocation(source);
1083-
llvm::omp::OpenMPOffloadMappingFlags mapTypeBits =
1084-
llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_TO |
1085-
llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_IMPLICIT;
1083+
mlir::omp::ClauseMapFlags mapTypeBits =
1084+
mlir::omp::ClauseMapFlags::to | mlir::omp::ClauseMapFlags::implicit;
10861085
omp::ObjectList baseObjects;
10871086
llvm::transform(clause.v, std::back_inserter(baseObjects),
10881087
[&](const omp::Object &object) {
@@ -1183,8 +1182,7 @@ bool ClauseProcessor::processLink(
11831182

11841183
void ClauseProcessor::processMapObjects(
11851184
lower::StatementContext &stmtCtx, mlir::Location clauseLocation,
1186-
const omp::ObjectList &objects,
1187-
llvm::omp::OpenMPOffloadMappingFlags mapTypeBits,
1185+
const omp::ObjectList &objects, mlir::omp::ClauseMapFlags mapTypeBits,
11881186
std::map<Object, OmpMapParentAndMemberData> &parentMemberIndices,
11891187
llvm::SmallVectorImpl<mlir::Value> &mapVars,
11901188
llvm::SmallVectorImpl<const semantics::Symbol *> &mapSyms,
@@ -1276,10 +1274,7 @@ void ClauseProcessor::processMapObjects(
12761274
mlir::omp::MapInfoOp mapOp = utils::openmp::createMapInfoOp(
12771275
firOpBuilder, location, baseOp,
12781276
/*varPtrPtr=*/mlir::Value{}, asFortran.str(), bounds,
1279-
/*members=*/{}, /*membersIndex=*/mlir::ArrayAttr{},
1280-
static_cast<
1281-
std::underlying_type_t<llvm::omp::OpenMPOffloadMappingFlags>>(
1282-
mapTypeBits),
1277+
/*members=*/{}, /*membersIndex=*/mlir::ArrayAttr{}, mapTypeBits,
12831278
mlir::omp::VariableCaptureKind::ByRef, baseOp.getType(),
12841279
/*partialMap=*/false, mapperId);
12851280

@@ -1313,8 +1308,7 @@ bool ClauseProcessor::processMap(
13131308
objects] = clause.t;
13141309
if (attachMod)
13151310
TODO(currentLocation, "ATTACH modifier is not implemented yet");
1316-
llvm::omp::OpenMPOffloadMappingFlags mapTypeBits =
1317-
llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_NONE;
1311+
mlir::omp::ClauseMapFlags mapTypeBits = mlir::omp::ClauseMapFlags::none;
13181312
std::string mapperIdName = "__implicit_mapper";
13191313
// If the map type is specified, then process it else set the appropriate
13201314
// default value
@@ -1330,36 +1324,32 @@ bool ClauseProcessor::processMap(
13301324

13311325
switch (type) {
13321326
case Map::MapType::To:
1333-
mapTypeBits |= llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_TO;
1327+
mapTypeBits |= mlir::omp::ClauseMapFlags::to;
13341328
break;
13351329
case Map::MapType::From:
1336-
mapTypeBits |= llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_FROM;
1330+
mapTypeBits |= mlir::omp::ClauseMapFlags::from;
13371331
break;
13381332
case Map::MapType::Tofrom:
1339-
mapTypeBits |= llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_TO |
1340-
llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_FROM;
1333+
mapTypeBits |=
1334+
mlir::omp::ClauseMapFlags::to | mlir::omp::ClauseMapFlags::from;
13411335
break;
13421336
case Map::MapType::Storage:
1343-
// alloc and release is the default map_type for the Target Data
1344-
// Ops, i.e. if no bits for map_type is supplied then alloc/release
1345-
// (aka storage in 6.0+) is implicitly assumed based on the target
1346-
// directive. Default value for Target Data and Enter Data is alloc
1347-
// and for Exit Data it is release.
1337+
mapTypeBits |= mlir::omp::ClauseMapFlags::storage;
13481338
break;
13491339
}
13501340

13511341
if (typeMods) {
13521342
// TODO: Still requires "self" modifier, an OpenMP 6.0+ feature
13531343
if (llvm::is_contained(*typeMods, Map::MapTypeModifier::Always))
1354-
mapTypeBits |= llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_ALWAYS;
1344+
mapTypeBits |= mlir::omp::ClauseMapFlags::always;
13551345
if (llvm::is_contained(*typeMods, Map::MapTypeModifier::Present))
1356-
mapTypeBits |= llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_PRESENT;
1346+
mapTypeBits |= mlir::omp::ClauseMapFlags::present;
13571347
if (llvm::is_contained(*typeMods, Map::MapTypeModifier::Close))
1358-
mapTypeBits |= llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_CLOSE;
1348+
mapTypeBits |= mlir::omp::ClauseMapFlags::close;
13591349
if (llvm::is_contained(*typeMods, Map::MapTypeModifier::Delete))
1360-
mapTypeBits |= llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_DELETE;
1350+
mapTypeBits |= mlir::omp::ClauseMapFlags::del;
13611351
if (llvm::is_contained(*typeMods, Map::MapTypeModifier::OmpxHold))
1362-
mapTypeBits |= llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_OMPX_HOLD;
1352+
mapTypeBits |= mlir::omp::ClauseMapFlags::ompx_hold;
13631353
}
13641354

13651355
if (iterator) {
@@ -1403,12 +1393,12 @@ bool ClauseProcessor::processMotionClauses(lower::StatementContext &stmtCtx,
14031393
TODO(clauseLocation, "Iterator modifier is not supported yet");
14041394
}
14051395

1406-
llvm::omp::OpenMPOffloadMappingFlags mapTypeBits =
1396+
mlir::omp::ClauseMapFlags mapTypeBits =
14071397
std::is_same_v<llvm::remove_cvref_t<decltype(clause)>, omp::clause::To>
1408-
? llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_TO
1409-
: llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_FROM;
1398+
? mlir::omp::ClauseMapFlags::to
1399+
: mlir::omp::ClauseMapFlags::from;
14101400
if (expectation && *expectation == omp::clause::To::Expectation::Present)
1411-
mapTypeBits |= llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_PRESENT;
1401+
mapTypeBits |= mlir::omp::ClauseMapFlags::present;
14121402
processMapObjects(stmtCtx, clauseLocation, objects, mapTypeBits,
14131403
parentMemberIndices, result.mapVars, mapSymbols, "",
14141404
true);
@@ -1535,8 +1525,8 @@ bool ClauseProcessor::processUseDeviceAddr(
15351525
[&](const omp::clause::UseDeviceAddr &clause,
15361526
const parser::CharBlock &source) {
15371527
mlir::Location location = converter.genLocation(source);
1538-
llvm::omp::OpenMPOffloadMappingFlags mapTypeBits =
1539-
llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_RETURN_PARAM;
1528+
mlir::omp::ClauseMapFlags mapTypeBits =
1529+
mlir::omp::ClauseMapFlags::return_param;
15401530
processMapObjects(stmtCtx, location, clause.v, mapTypeBits,
15411531
parentMemberIndices, result.useDeviceAddrVars,
15421532
useDeviceSyms);
@@ -1556,8 +1546,8 @@ bool ClauseProcessor::processUseDevicePtr(
15561546
[&](const omp::clause::UseDevicePtr &clause,
15571547
const parser::CharBlock &source) {
15581548
mlir::Location location = converter.genLocation(source);
1559-
llvm::omp::OpenMPOffloadMappingFlags mapTypeBits =
1560-
llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_RETURN_PARAM;
1549+
mlir::omp::ClauseMapFlags mapTypeBits =
1550+
mlir::omp::ClauseMapFlags::return_param;
15611551
processMapObjects(stmtCtx, location, clause.v, mapTypeBits,
15621552
parentMemberIndices, result.useDevicePtrVars,
15631553
useDeviceSyms);

flang/lib/Lower/OpenMP/ClauseProcessor.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,8 +193,7 @@ class ClauseProcessor {
193193

194194
void processMapObjects(
195195
lower::StatementContext &stmtCtx, mlir::Location clauseLocation,
196-
const omp::ObjectList &objects,
197-
llvm::omp::OpenMPOffloadMappingFlags mapTypeBits,
196+
const omp::ObjectList &objects, mlir::omp::ClauseMapFlags mapTypeBits,
198197
std::map<Object, OmpMapParentAndMemberData> &parentMemberIndices,
199198
llvm::SmallVectorImpl<mlir::Value> &mapVars,
200199
llvm::SmallVectorImpl<const semantics::Symbol *> &mapSyms,

flang/lib/Lower/OpenMP/Clauses.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616
#include "flang/Semantics/openmp-modifiers.h"
1717
#include "flang/Semantics/symbol.h"
1818

19-
#include "llvm/Frontend/OpenMP/OMPConstants.h"
20-
2119
#include <list>
2220
#include <optional>
2321
#include <tuple>

flang/lib/Lower/OpenMP/OpenMP.cpp

Lines changed: 17 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
#include "mlir/Support/StateStack.h"
4646
#include "mlir/Transforms/RegionUtils.h"
4747
#include "llvm/ADT/STLExtras.h"
48-
#include "llvm/Frontend/OpenMP/OMPConstants.h"
4948

5049
using namespace Fortran::lower::omp;
5150
using namespace Fortran::common::openmp;
@@ -945,8 +944,7 @@ getDefaultmapIfPresent(const DefaultMapsTy &defaultMaps, mlir::Type varType) {
945944
return DefMap::ImplicitBehavior::Default;
946945
}
947946

948-
static std::pair<llvm::omp::OpenMPOffloadMappingFlags,
949-
mlir::omp::VariableCaptureKind>
947+
static std::pair<mlir::omp::ClauseMapFlags, mlir::omp::VariableCaptureKind>
950948
getImplicitMapTypeAndKind(fir::FirOpBuilder &firOpBuilder,
951949
lower::AbstractConverter &converter,
952950
const DefaultMapsTy &defaultMaps, mlir::Type varType,
@@ -967,8 +965,7 @@ getImplicitMapTypeAndKind(fir::FirOpBuilder &firOpBuilder,
967965
return size <= ptrSize && align <= ptrAlign;
968966
};
969967

970-
llvm::omp::OpenMPOffloadMappingFlags mapFlag =
971-
llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_IMPLICIT;
968+
mlir::omp::ClauseMapFlags mapFlag = mlir::omp::ClauseMapFlags::implicit;
972969

973970
auto implicitBehaviour = getDefaultmapIfPresent(defaultMaps, varType);
974971
if (implicitBehaviour == DefMap::ImplicitBehavior::Default) {
@@ -989,8 +986,8 @@ getImplicitMapTypeAndKind(fir::FirOpBuilder &firOpBuilder,
989986
// a map clause with a map-type of tofrom
990987
if (declareTargetOp.getDeclareTargetDeviceType() !=
991988
mlir::omp::DeclareTargetDeviceType::nohost) {
992-
mapFlag |= llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_TO;
993-
mapFlag |= llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_FROM;
989+
mapFlag |= mlir::omp::ClauseMapFlags::to;
990+
mapFlag |= mlir::omp::ClauseMapFlags::from;
994991
}
995992
} else if (fir::isa_trivial(varType) || fir::isa_char(varType)) {
996993
// Scalars behave as if they were "firstprivate".
@@ -999,18 +996,18 @@ getImplicitMapTypeAndKind(fir::FirOpBuilder &firOpBuilder,
999996
if (isLiteralType(varType)) {
1000997
captureKind = mlir::omp::VariableCaptureKind::ByCopy;
1001998
} else {
1002-
mapFlag |= llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_TO;
999+
mapFlag |= mlir::omp::ClauseMapFlags::to;
10031000
}
10041001
} else if (!fir::isa_builtin_cptr_type(varType)) {
1005-
mapFlag |= llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_TO;
1006-
mapFlag |= llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_FROM;
1002+
mapFlag |= mlir::omp::ClauseMapFlags::to;
1003+
mapFlag |= mlir::omp::ClauseMapFlags::from;
10071004
}
10081005
return std::make_pair(mapFlag, captureKind);
10091006
}
10101007

10111008
switch (implicitBehaviour) {
10121009
case DefMap::ImplicitBehavior::Alloc:
1013-
return std::make_pair(llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_NONE,
1010+
return std::make_pair(mlir::omp::ClauseMapFlags::storage,
10141011
mlir::omp::VariableCaptureKind::ByRef);
10151012
break;
10161013
case DefMap::ImplicitBehavior::Firstprivate:
@@ -1019,26 +1016,22 @@ getImplicitMapTypeAndKind(fir::FirOpBuilder &firOpBuilder,
10191016
"behaviour");
10201017
break;
10211018
case DefMap::ImplicitBehavior::From:
1022-
return std::make_pair(mapFlag |=
1023-
llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_FROM,
1019+
return std::make_pair(mapFlag |= mlir::omp::ClauseMapFlags::from,
10241020
mlir::omp::VariableCaptureKind::ByRef);
10251021
break;
10261022
case DefMap::ImplicitBehavior::Present:
1027-
return std::make_pair(mapFlag |=
1028-
llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_PRESENT,
1023+
return std::make_pair(mapFlag |= mlir::omp::ClauseMapFlags::present,
10291024
mlir::omp::VariableCaptureKind::ByRef);
10301025
break;
10311026
case DefMap::ImplicitBehavior::To:
1032-
return std::make_pair(mapFlag |=
1033-
llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_TO,
1027+
return std::make_pair(mapFlag |= mlir::omp::ClauseMapFlags::to,
10341028
(fir::isa_trivial(varType) || fir::isa_char(varType))
10351029
? mlir::omp::VariableCaptureKind::ByCopy
10361030
: mlir::omp::VariableCaptureKind::ByRef);
10371031
break;
10381032
case DefMap::ImplicitBehavior::Tofrom:
1039-
return std::make_pair(mapFlag |=
1040-
llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_FROM |
1041-
llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_TO,
1033+
return std::make_pair(mapFlag |= mlir::omp::ClauseMapFlags::from |
1034+
mlir::omp::ClauseMapFlags::to,
10421035
mlir::omp::VariableCaptureKind::ByRef);
10431036
break;
10441037
case DefMap::ImplicitBehavior::Default:
@@ -1047,9 +1040,8 @@ getImplicitMapTypeAndKind(fir::FirOpBuilder &firOpBuilder,
10471040
break;
10481041
}
10491042

1050-
return std::make_pair(mapFlag |=
1051-
llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_FROM |
1052-
llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_TO,
1043+
return std::make_pair(mapFlag |= mlir::omp::ClauseMapFlags::from |
1044+
mlir::omp::ClauseMapFlags::to,
10531045
mlir::omp::VariableCaptureKind::ByRef);
10541046
}
10551047

@@ -2623,18 +2615,14 @@ genTargetOp(lower::AbstractConverter &converter, lower::SymMap &symTable,
26232615
if (auto refType = mlir::dyn_cast<fir::ReferenceType>(baseOp.getType()))
26242616
eleType = refType.getElementType();
26252617

2626-
std::pair<llvm::omp::OpenMPOffloadMappingFlags,
2627-
mlir::omp::VariableCaptureKind>
2618+
std::pair<mlir::omp::ClauseMapFlags, mlir::omp::VariableCaptureKind>
26282619
mapFlagAndKind = getImplicitMapTypeAndKind(
26292620
firOpBuilder, converter, defaultMaps, eleType, loc, sym);
26302621

26312622
mlir::Value mapOp = createMapInfoOp(
26322623
firOpBuilder, converter.getCurrentLocation(), baseOp,
26332624
/*varPtrPtr=*/mlir::Value{}, name.str(), bounds, /*members=*/{},
2634-
/*membersIndex=*/mlir::ArrayAttr{},
2635-
static_cast<
2636-
std::underlying_type_t<llvm::omp::OpenMPOffloadMappingFlags>>(
2637-
std::get<0>(mapFlagAndKind)),
2625+
/*membersIndex=*/mlir::ArrayAttr{}, std::get<0>(mapFlagAndKind),
26382626
std::get<1>(mapFlagAndKind), baseOp.getType(),
26392627
/*partialMap=*/false, mapperId);
26402628

flang/lib/Lower/OpenMP/Utils.cpp

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ mlir::Value createParentSymAndGenIntermediateMaps(
276276
semantics::SemanticsContext &semaCtx, lower::StatementContext &stmtCtx,
277277
omp::ObjectList &objectList, llvm::SmallVectorImpl<int64_t> &indices,
278278
OmpMapParentAndMemberData &parentMemberIndices, llvm::StringRef asFortran,
279-
llvm::omp::OpenMPOffloadMappingFlags mapTypeBits) {
279+
mlir::omp::ClauseMapFlags mapTypeBits) {
280280
fir::FirOpBuilder &firOpBuilder = converter.getFirOpBuilder();
281281

282282
/// Checks if an omp::Object is an array expression with a subscript, e.g.
@@ -417,11 +417,10 @@ mlir::Value createParentSymAndGenIntermediateMaps(
417417
// be safer to just pass OMP_MAP_NONE as the map type, but we may still
418418
// need some of the other map types the mapped member utilises, so for
419419
// now it's good to keep an eye on this.
420-
llvm::omp::OpenMPOffloadMappingFlags interimMapType = mapTypeBits;
421-
interimMapType &= ~llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_TO;
422-
interimMapType &= ~llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_FROM;
423-
interimMapType &=
424-
~llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_RETURN_PARAM;
420+
mlir::omp::ClauseMapFlags interimMapType = mapTypeBits;
421+
interimMapType &= ~mlir::omp::ClauseMapFlags::to;
422+
interimMapType &= ~mlir::omp::ClauseMapFlags::from;
423+
interimMapType &= ~mlir::omp::ClauseMapFlags::return_param;
425424

426425
// Create a map for the intermediate member and insert it and it's
427426
// indices into the parentMemberIndices list to track it.
@@ -430,10 +429,7 @@ mlir::Value createParentSymAndGenIntermediateMaps(
430429
/*varPtrPtr=*/mlir::Value{}, asFortran,
431430
/*bounds=*/interimBounds,
432431
/*members=*/{},
433-
/*membersIndex=*/mlir::ArrayAttr{},
434-
static_cast<
435-
std::underlying_type_t<llvm::omp::OpenMPOffloadMappingFlags>>(
436-
interimMapType),
432+
/*membersIndex=*/mlir::ArrayAttr{}, interimMapType,
437433
mlir::omp::VariableCaptureKind::ByRef, curValue.getType());
438434

439435
parentMemberIndices.memberPlacementIndices.push_back(interimIndices);
@@ -565,8 +561,7 @@ void insertChildMapInfoIntoParent(
565561
// selecting a childs can result in the incorrect map type being
566562
// applied to the parent and data being incorrectly moved to or
567563
// from device.
568-
uint64_t mapType = llvm::to_underlying(
569-
llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_NONE);
564+
mlir::omp::ClauseMapFlags mapType = mlir::omp::ClauseMapFlags::storage;
570565

571566
llvm::SmallVector<mlir::Value> members;
572567
members.reserve(indices.second.memberMap.size());

flang/lib/Optimizer/OpenMP/AutomapToTargetData.cpp

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020
#include "mlir/IR/Operation.h"
2121
#include "mlir/Pass/Pass.h"
2222

23-
#include "llvm/Frontend/OpenMP/OMPConstants.h"
24-
2523
namespace flangomp {
2624
#define GEN_PASS_DEF_AUTOMAPTOTARGETDATAPASS
2725
#include "flang/Optimizer/OpenMP/Passes.h.inc"
@@ -120,12 +118,9 @@ class AutomapToTargetDataPass
120118
builder, memOp.getLoc(), memOp.getMemref().getType(),
121119
memOp.getMemref(),
122120
TypeAttr::get(fir::unwrapRefType(memOp.getMemref().getType())),
123-
builder.getIntegerAttr(
124-
builder.getIntegerType(64, false),
125-
static_cast<unsigned>(
126-
isa<fir::StoreOp>(memOp)
127-
? llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_TO
128-
: llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_DELETE)),
121+
builder.getAttr<omp::ClauseMapFlagsAttr>(
122+
isa<fir::StoreOp>(memOp) ? omp::ClauseMapFlags::to
123+
: omp::ClauseMapFlags::del),
129124
builder.getAttr<omp::VariableCaptureKindAttr>(
130125
omp::VariableCaptureKind::ByCopy),
131126
/*var_ptr_ptr=*/mlir::Value{},

0 commit comments

Comments
 (0)