Skip to content

Commit dadc147

Browse files
authored
reland 4 [MLIR][OpenMP] patches (llvm#757)
2 parents f13ef07 + a51e621 commit dadc147

File tree

33 files changed

+718
-297
lines changed

33 files changed

+718
-297
lines changed

clang/lib/CodeGen/CGOpenMPRuntime.cpp

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8921,17 +8921,17 @@ static void emitOffloadingArraysAndArgs(
89218921
};
89228922

89238923
auto CustomMapperCB = [&](unsigned int I) {
8924-
llvm::Value *MFunc = nullptr;
8924+
llvm::Function *MFunc = nullptr;
89258925
if (CombinedInfo.Mappers[I]) {
89268926
Info.HasMapper = true;
89278927
MFunc = CGM.getOpenMPRuntime().getOrCreateUserDefinedMapperFunc(
89288928
cast<OMPDeclareMapperDecl>(CombinedInfo.Mappers[I]));
89298929
}
89308930
return MFunc;
89318931
};
8932-
OMPBuilder.emitOffloadingArraysAndArgs(
8933-
AllocaIP, CodeGenIP, Info, Info.RTArgs, CombinedInfo, IsNonContiguous,
8934-
ForEndCall, DeviceAddrCB, CustomMapperCB);
8932+
cantFail(OMPBuilder.emitOffloadingArraysAndArgs(
8933+
AllocaIP, CodeGenIP, Info, Info.RTArgs, CombinedInfo, CustomMapperCB,
8934+
IsNonContiguous, ForEndCall, DeviceAddrCB));
89358935
}
89368936

89378937
/// Check for inner distribute directive.
@@ -9124,24 +9124,24 @@ void CGOpenMPRuntime::emitUserDefinedMapper(const OMPDeclareMapperDecl *D,
91249124
return CombinedInfo;
91259125
};
91269126

9127-
auto CustomMapperCB = [&](unsigned I, llvm::Function **MapperFunc) {
9127+
auto CustomMapperCB = [&](unsigned I) {
9128+
llvm::Function *MapperFunc = nullptr;
91289129
if (CombinedInfo.Mappers[I]) {
91299130
// Call the corresponding mapper function.
9130-
*MapperFunc = getOrCreateUserDefinedMapperFunc(
9131+
MapperFunc = getOrCreateUserDefinedMapperFunc(
91319132
cast<OMPDeclareMapperDecl>(CombinedInfo.Mappers[I]));
9132-
assert(*MapperFunc && "Expect a valid mapper function is available.");
9133-
return true;
9133+
assert(MapperFunc && "Expect a valid mapper function is available.");
91349134
}
9135-
return false;
9135+
return MapperFunc;
91369136
};
91379137

91389138
SmallString<64> TyStr;
91399139
llvm::raw_svector_ostream Out(TyStr);
91409140
CGM.getCXXABI().getMangleContext().mangleCanonicalTypeName(Ty, Out);
91419141
std::string Name = getName({"omp_mapper", TyStr, D->getName()});
91429142

9143-
auto *NewFn = OMPBuilder.emitUserDefinedMapper(PrivatizeAndGenMapInfoCB,
9144-
ElemTy, Name, CustomMapperCB);
9143+
llvm::Function *NewFn = cantFail(OMPBuilder.emitUserDefinedMapper(
9144+
PrivatizeAndGenMapInfoCB, ElemTy, Name, CustomMapperCB));
91459145
UDMMap.try_emplace(D, NewFn);
91469146
if (CGF)
91479147
FunctionUDMMap[CGF->CurFn].push_back(D);
@@ -10493,7 +10493,7 @@ void CGOpenMPRuntime::emitTargetDataCalls(
1049310493
};
1049410494

1049510495
auto CustomMapperCB = [&](unsigned int I) {
10496-
llvm::Value *MFunc = nullptr;
10496+
llvm::Function *MFunc = nullptr;
1049710497
if (CombinedInfo.Mappers[I]) {
1049810498
Info.HasMapper = true;
1049910499
MFunc = CGF.CGM.getOpenMPRuntime().getOrCreateUserDefinedMapperFunc(
@@ -10513,7 +10513,8 @@ void CGOpenMPRuntime::emitTargetDataCalls(
1051310513
llvm::OpenMPIRBuilder::InsertPointTy AfterIP =
1051410514
cantFail(OMPBuilder.createTargetData(
1051510515
OmpLoc, AllocaIP, CodeGenIP, DeviceID, IfCondVal, Info, GenMapInfoCB,
10516-
/*MapperFunc=*/nullptr, BodyCB, DeviceAddrCB, CustomMapperCB, RTLoc));
10516+
CustomMapperCB,
10517+
/*MapperFunc=*/nullptr, BodyCB, DeviceAddrCB, RTLoc));
1051710518
CGF.Builder.restoreIP(AfterIP);
1051810519
}
1051910520

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,8 @@ createMapInfoOp(fir::FirOpBuilder &builder, mlir::Location loc,
116116
llvm::ArrayRef<mlir::Value> members,
117117
mlir::ArrayAttr membersIndex, uint64_t mapType,
118118
mlir::omp::VariableCaptureKind mapCaptureType, mlir::Type retTy,
119-
bool partialMap = false);
119+
bool partialMap = false,
120+
mlir::FlatSymbolRefAttr mapperId = mlir::FlatSymbolRefAttr());
120121

121122
void insertChildMapInfoIntoParent(
122123
Fortran::lower::AbstractConverter &converter,

flang/lib/Lower/OpenMP/ClauseProcessor.cpp

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -969,8 +969,11 @@ void ClauseProcessor::processMapObjects(
969969
llvm::omp::OpenMPOffloadMappingFlags mapTypeBits,
970970
std::map<Object, OmpMapParentAndMemberData> &parentMemberIndices,
971971
llvm::SmallVectorImpl<mlir::Value> &mapVars,
972-
llvm::SmallVectorImpl<const semantics::Symbol *> &mapSyms) const {
972+
llvm::SmallVectorImpl<const semantics::Symbol *> &mapSyms,
973+
llvm::StringRef mapperIdNameRef) const {
973974
fir::FirOpBuilder &firOpBuilder = converter.getFirOpBuilder();
975+
mlir::FlatSymbolRefAttr mapperId;
976+
std::string mapperIdName = mapperIdNameRef.str();
974977

975978
for (const omp::Object &object : objects) {
976979
llvm::SmallVector<mlir::Value> bounds;
@@ -1003,6 +1006,20 @@ void ClauseProcessor::processMapObjects(
10031006
}
10041007
}
10051008

1009+
if (!mapperIdName.empty()) {
1010+
if (mapperIdName == "default") {
1011+
auto &typeSpec = object.sym()->owner().IsDerivedType()
1012+
? *object.sym()->owner().derivedTypeSpec()
1013+
: object.sym()->GetType()->derivedTypeSpec();
1014+
mapperIdName = typeSpec.name().ToString() + ".default";
1015+
mapperIdName = converter.mangleName(mapperIdName, *typeSpec.GetScope());
1016+
}
1017+
assert(converter.getModuleOp().lookupSymbol(mapperIdName) &&
1018+
"mapper not found");
1019+
mapperId = mlir::FlatSymbolRefAttr::get(&converter.getMLIRContext(),
1020+
mapperIdName);
1021+
mapperIdName.clear();
1022+
}
10061023
// Explicit map captures are captured ByRef by default,
10071024
// optimisation passes may alter this to ByCopy or other capture
10081025
// types to optimise
@@ -1016,7 +1033,8 @@ void ClauseProcessor::processMapObjects(
10161033
static_cast<
10171034
std::underlying_type_t<llvm::omp::OpenMPOffloadMappingFlags>>(
10181035
mapTypeBits),
1019-
mlir::omp::VariableCaptureKind::ByRef, baseOp.getType());
1036+
mlir::omp::VariableCaptureKind::ByRef, baseOp.getType(),
1037+
/*partialMap=*/false, mapperId);
10201038

10211039
if (parentObj.has_value()) {
10221040
parentMemberIndices[parentObj.value()].addChildIndexAndMapToParent(
@@ -1047,6 +1065,7 @@ bool ClauseProcessor::processMap(
10471065
const auto &[mapType, typeMods, mappers, iterator, objects] = clause.t;
10481066
llvm::omp::OpenMPOffloadMappingFlags mapTypeBits =
10491067
llvm::omp::OpenMPOffloadMappingFlags::OMP_MAP_NONE;
1068+
std::string mapperIdName;
10501069
// If the map type is specified, then process it else Tofrom is the
10511070
// default.
10521071
Map::MapType type = mapType.value_or(Map::MapType::Tofrom);
@@ -1090,13 +1109,17 @@ bool ClauseProcessor::processMap(
10901109
"Support for iterator modifiers is not implemented yet");
10911110
}
10921111
if (mappers) {
1093-
TODO(currentLocation,
1094-
"Support for mapper modifiers is not implemented yet");
1112+
assert(mappers->size() == 1 && "more than one mapper");
1113+
mapperIdName = mappers->front().v.id().symbol->name().ToString();
1114+
if (mapperIdName != "default")
1115+
mapperIdName = converter.mangleName(
1116+
mapperIdName, mappers->front().v.id().symbol->owner());
10951117
}
10961118

10971119
processMapObjects(stmtCtx, clauseLocation,
10981120
std::get<omp::ObjectList>(clause.t), mapTypeBits,
1099-
parentMemberIndices, result.mapVars, *ptrMapSyms);
1121+
parentMemberIndices, result.mapVars, *ptrMapSyms,
1122+
mapperIdName);
11001123
};
11011124

11021125
bool clauseFound = findRepeatableClause<omp::clause::Map>(process);

flang/lib/Lower/OpenMP/ClauseProcessor.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,8 @@ class ClauseProcessor {
176176
llvm::omp::OpenMPOffloadMappingFlags mapTypeBits,
177177
std::map<Object, OmpMapParentAndMemberData> &parentMemberIndices,
178178
llvm::SmallVectorImpl<mlir::Value> &mapVars,
179-
llvm::SmallVectorImpl<const semantics::Symbol *> &mapSyms) const;
179+
llvm::SmallVectorImpl<const semantics::Symbol *> &mapSyms,
180+
llvm::StringRef mapperIdNameRef = "") const;
180181

181182
lower::AbstractConverter &converter;
182183
semantics::SemanticsContext &semaCtx;

flang/lib/Lower/OpenMP/DataSharingProcessor.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -508,8 +508,6 @@ void DataSharingProcessor::doPrivatize(const semantics::Symbol *sym,
508508

509509
lower::SymbolBox hsb = converter.lookupOneLevelUpSymbol(*sym);
510510
assert(hsb && "Host symbol box not found");
511-
hlfir::Entity entity{hsb.getAddr()};
512-
bool cannotHaveNonDefaultLowerBounds = !entity.mayHaveNonDefaultLowerBounds();
513511

514512
mlir::Location symLoc = hsb.getAddr().getLoc();
515513
std::string privatizerName = sym->name().ToString() + ".privatizer";
@@ -530,6 +528,7 @@ void DataSharingProcessor::doPrivatize(const semantics::Symbol *sym,
530528
// an alloca for a fir.array type there. Get around this by boxing all
531529
// arrays.
532530
if (mlir::isa<fir::SequenceType>(allocType)) {
531+
hlfir::Entity entity{hsb.getAddr()};
533532
entity = genVariableBox(symLoc, firOpBuilder, entity);
534533
privVal = entity.getBase();
535534
allocType = privVal.getType();
@@ -591,7 +590,7 @@ void DataSharingProcessor::doPrivatize(const semantics::Symbol *sym,
591590
result.getDeallocRegion(),
592591
isFirstPrivate ? DeclOperationKind::FirstPrivate
593592
: DeclOperationKind::Private,
594-
sym, cannotHaveNonDefaultLowerBounds);
593+
sym);
595594
// TODO: currently there are false positives from dead uses of the mold
596595
// arg
597596
if (!result.getInitMoldArg().getUses().empty())

flang/lib/Lower/OpenMP/PrivateReductionUtils.cpp

Lines changed: 20 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -122,40 +122,25 @@ static void createCleanupRegion(Fortran::lower::AbstractConverter &converter,
122122
typeError();
123123
}
124124

125-
fir::ShapeShiftOp
126-
Fortran::lower::omp::getShapeShift(fir::FirOpBuilder &builder,
127-
mlir::Location loc, mlir::Value box,
128-
bool cannotHaveNonDefaultLowerBounds) {
125+
fir::ShapeShiftOp Fortran::lower::omp::getShapeShift(fir::FirOpBuilder &builder,
126+
mlir::Location loc,
127+
mlir::Value box) {
129128
fir::SequenceType sequenceType = mlir::cast<fir::SequenceType>(
130129
hlfir::getFortranElementOrSequenceType(box.getType()));
131130
const unsigned rank = sequenceType.getDimension();
132-
133131
llvm::SmallVector<mlir::Value> lbAndExtents;
134132
lbAndExtents.reserve(rank * 2);
135-
mlir::Type idxTy = builder.getIndexType();
136133

137-
if (cannotHaveNonDefaultLowerBounds && !sequenceType.hasDynamicExtents()) {
138-
// We don't need fir::BoxDimsOp if all of the extents are statically known
139-
// and we can assume default lower bounds. This helps avoids reads from the
140-
// mold arg.
141-
mlir::Value one = builder.createIntegerConstant(loc, idxTy, 1);
142-
for (int64_t extent : sequenceType.getShape()) {
143-
assert(extent != sequenceType.getUnknownExtent());
144-
mlir::Value extentVal = builder.createIntegerConstant(loc, idxTy, extent);
145-
lbAndExtents.push_back(one);
146-
lbAndExtents.push_back(extentVal);
147-
}
148-
} else {
149-
for (unsigned i = 0; i < rank; ++i) {
150-
// TODO: ideally we want to hoist box reads out of the critical section.
151-
// We could do this by having box dimensions in block arguments like
152-
// OpenACC does
153-
mlir::Value dim = builder.createIntegerConstant(loc, idxTy, i);
154-
auto dimInfo =
155-
builder.create<fir::BoxDimsOp>(loc, idxTy, idxTy, idxTy, box, dim);
156-
lbAndExtents.push_back(dimInfo.getLowerBound());
157-
lbAndExtents.push_back(dimInfo.getExtent());
158-
}
134+
mlir::Type idxTy = builder.getIndexType();
135+
for (unsigned i = 0; i < rank; ++i) {
136+
// TODO: ideally we want to hoist box reads out of the critical section.
137+
// We could do this by having box dimensions in block arguments like
138+
// OpenACC does
139+
mlir::Value dim = builder.createIntegerConstant(loc, idxTy, i);
140+
auto dimInfo =
141+
builder.create<fir::BoxDimsOp>(loc, idxTy, idxTy, idxTy, box, dim);
142+
lbAndExtents.push_back(dimInfo.getLowerBound());
143+
lbAndExtents.push_back(dimInfo.getExtent());
159144
}
160145

161146
auto shapeShiftTy = fir::ShapeShiftType::get(builder.getContext(), rank);
@@ -263,13 +248,12 @@ class PopulateInitAndCleanupRegionsHelper {
263248
mlir::Type argType, mlir::Value scalarInitValue,
264249
mlir::Value allocatedPrivVarArg, mlir::Value moldArg,
265250
mlir::Block *initBlock, mlir::Region &cleanupRegion,
266-
DeclOperationKind kind, const Fortran::semantics::Symbol *sym,
267-
bool cannotHaveLowerBounds)
251+
DeclOperationKind kind, const Fortran::semantics::Symbol *sym)
268252
: converter{converter}, builder{converter.getFirOpBuilder()}, loc{loc},
269253
argType{argType}, scalarInitValue{scalarInitValue},
270254
allocatedPrivVarArg{allocatedPrivVarArg}, moldArg{moldArg},
271255
initBlock{initBlock}, cleanupRegion{cleanupRegion}, kind{kind},
272-
sym{sym}, cannotHaveNonDefaultLowerBounds{cannotHaveLowerBounds} {
256+
sym{sym} {
273257
valType = fir::unwrapRefType(argType);
274258
}
275259

@@ -311,10 +295,6 @@ class PopulateInitAndCleanupRegionsHelper {
311295
/// Any length parameters which have been fetched for the type
312296
mlir::SmallVector<mlir::Value> lenParams;
313297

314-
/// If the source variable being privatized definitely can't have non-default
315-
/// lower bounds then we don't need to generate code to read them.
316-
bool cannotHaveNonDefaultLowerBounds;
317-
318298
void createYield(mlir::Value ret) {
319299
builder.create<mlir::omp::YieldOp>(loc, ret);
320300
}
@@ -452,8 +432,7 @@ void PopulateInitAndCleanupRegionsHelper::initAndCleanupBoxedArray(
452432
// Special case for (possibly allocatable) arrays of polymorphic types
453433
// e.g. !fir.class<!fir.heap<!fir.array<?x!fir.type<>>>>
454434
if (source.isPolymorphic()) {
455-
fir::ShapeShiftOp shape =
456-
getShapeShift(builder, loc, source, cannotHaveNonDefaultLowerBounds);
435+
fir::ShapeShiftOp shape = getShapeShift(builder, loc, source);
457436
mlir::Type arrayType = source.getElementOrSequenceType();
458437
mlir::Value allocatedArray = builder.create<fir::AllocMemOp>(
459438
loc, arrayType, /*typeparams=*/mlir::ValueRange{}, shape.getExtents());
@@ -501,8 +480,8 @@ void PopulateInitAndCleanupRegionsHelper::initAndCleanupBoxedArray(
501480
// Put the temporary inside of a box:
502481
// hlfir::genVariableBox doesn't handle non-default lower bounds
503482
mlir::Value box;
504-
fir::ShapeShiftOp shapeShift = getShapeShift(builder, loc, getLoadedMoldArg(),
505-
cannotHaveNonDefaultLowerBounds);
483+
fir::ShapeShiftOp shapeShift =
484+
getShapeShift(builder, loc, getLoadedMoldArg());
506485
mlir::Type boxType = getLoadedMoldArg().getType();
507486
if (mlir::isa<fir::BaseBoxType>(temp.getType()))
508487
// the box created by the declare form createTempFromMold is missing
@@ -637,10 +616,10 @@ void Fortran::lower::omp::populateByRefInitAndCleanupRegions(
637616
mlir::Type argType, mlir::Value scalarInitValue, mlir::Block *initBlock,
638617
mlir::Value allocatedPrivVarArg, mlir::Value moldArg,
639618
mlir::Region &cleanupRegion, DeclOperationKind kind,
640-
const Fortran::semantics::Symbol *sym, bool cannotHaveLowerBounds) {
619+
const Fortran::semantics::Symbol *sym) {
641620
PopulateInitAndCleanupRegionsHelper helper(
642621
converter, loc, argType, scalarInitValue, allocatedPrivVarArg, moldArg,
643-
initBlock, cleanupRegion, kind, sym, cannotHaveLowerBounds);
622+
initBlock, cleanupRegion, kind, sym);
644623
helper.populateByRefInitAndCleanupRegions();
645624

646625
// Often we load moldArg to check something (e.g. length parameters, shape)

flang/lib/Lower/OpenMP/PrivateReductionUtils.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,11 @@ void populateByRefInitAndCleanupRegions(
5555
mlir::Value scalarInitValue, mlir::Block *initBlock,
5656
mlir::Value allocatedPrivVarArg, mlir::Value moldArg,
5757
mlir::Region &cleanupRegion, DeclOperationKind kind,
58-
const Fortran::semantics::Symbol *sym = nullptr,
59-
bool cannotHaveNonDefaultLowerBounds = false);
58+
const Fortran::semantics::Symbol *sym = nullptr);
6059

6160
/// Generate a fir::ShapeShift op describing the provided boxed array.
6261
fir::ShapeShiftOp getShapeShift(fir::FirOpBuilder &builder, mlir::Location loc,
63-
mlir::Value box,
64-
bool cannotHaveNonDefaultLowerBounds = false);
62+
mlir::Value box);
6563

6664
} // namespace omp
6765
} // namespace lower

flang/lib/Lower/OpenMP/Utils.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ createMapInfoOp(fir::FirOpBuilder &builder, mlir::Location loc,
130130
llvm::ArrayRef<mlir::Value> members,
131131
mlir::ArrayAttr membersIndex, uint64_t mapType,
132132
mlir::omp::VariableCaptureKind mapCaptureType, mlir::Type retTy,
133-
bool partialMap) {
133+
bool partialMap, mlir::FlatSymbolRefAttr mapperId) {
134134
if (auto boxTy = llvm::dyn_cast<fir::BaseBoxType>(baseAddr.getType())) {
135135
baseAddr = builder.create<fir::BoxAddrOp>(loc, baseAddr);
136136
retTy = baseAddr.getType();
@@ -149,6 +149,7 @@ createMapInfoOp(fir::FirOpBuilder &builder, mlir::Location loc,
149149
mlir::omp::MapInfoOp op = builder.create<mlir::omp::MapInfoOp>(
150150
loc, retTy, baseAddr, varType, varPtrPtr, members, membersIndex, bounds,
151151
builder.getIntegerAttr(builder.getIntegerType(64, false), mapType),
152+
mapperId,
152153
builder.getAttr<mlir::omp::VariableCaptureKindAttr>(mapCaptureType),
153154
builder.getStringAttr(name), builder.getBoolAttr(partialMap));
154155
return op;

flang/lib/Optimizer/OpenMP/DoConcurrentConversion.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ mlir::omp::MapInfoOp createMapInfoOp(
5151
mlir::Value varPtrPtr, std::string name, llvm::ArrayRef<mlir::Value> bounds,
5252
llvm::ArrayRef<mlir::Value> members, mlir::ArrayAttr membersIndex,
5353
uint64_t mapType, mlir::omp::VariableCaptureKind mapCaptureType,
54-
mlir::Type retTy, bool partialMap = false) {
54+
mlir::Type retTy, bool partialMap = false,
55+
mlir::FlatSymbolRefAttr mapperId = mlir::FlatSymbolRefAttr()) {
5556
if (auto boxTy = llvm::dyn_cast<fir::BaseBoxType>(baseAddr.getType())) {
5657
baseAddr = builder.create<fir::BoxAddrOp>(loc, baseAddr);
5758
retTy = baseAddr.getType();
@@ -70,6 +71,7 @@ mlir::omp::MapInfoOp createMapInfoOp(
7071
mlir::omp::MapInfoOp op = builder.create<mlir::omp::MapInfoOp>(
7172
loc, retTy, baseAddr, varType, varPtrPtr, members, membersIndex, bounds,
7273
builder.getIntegerAttr(builder.getIntegerType(64, false), mapType),
74+
mapperId,
7375
builder.getAttr<mlir::omp::VariableCaptureKindAttr>(mapCaptureType),
7476
builder.getStringAttr(name), builder.getBoolAttr(partialMap));
7577

flang/lib/Optimizer/OpenMP/MapInfoFinalization.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ class MapInfoFinalizationPass
184184
/*members=*/mlir::SmallVector<mlir::Value>{},
185185
/*membersIndex=*/mlir::ArrayAttr{}, bounds,
186186
builder.getIntegerAttr(builder.getIntegerType(64, false), mapType),
187+
/*mapperId*/ mlir::FlatSymbolRefAttr(),
187188
builder.getAttr<mlir::omp::VariableCaptureKindAttr>(
188189
mlir::omp::VariableCaptureKind::ByRef),
189190
/*name=*/builder.getStringAttr(""),
@@ -331,7 +332,8 @@ class MapInfoFinalizationPass
331332
builder.getIntegerAttr(
332333
builder.getIntegerType(64, false),
333334
getDescriptorMapType(op.getMapType().value_or(0), target)),
334-
op.getMapCaptureTypeAttr(), op.getNameAttr(),
335+
/*mapperId*/ mlir::FlatSymbolRefAttr(), op.getMapCaptureTypeAttr(),
336+
op.getNameAttr(),
335337
/*partial_map=*/builder.getBoolAttr(false));
336338
op.replaceAllUsesWith(newDescParentMapOp.getResult());
337339
op->erase();
@@ -629,6 +631,7 @@ class MapInfoFinalizationPass
629631
// /*members=*/mlir::ValueRange{},
630632
// /*members_index=*/mlir::ArrayAttr{},
631633
// /*bounds=*/bounds, op.getMapTypeAttr(),
634+
// /*mapperId*/ mlir::FlatSymbolRefAttr(),
632635
// builder.getAttr<mlir::omp::VariableCaptureKindAttr>(
633636
// mlir::omp::VariableCaptureKind::ByRef),
634637
// builder.getStringAttr(op.getNameAttr().strref() + "." +

0 commit comments

Comments
 (0)