@@ -1167,19 +1167,26 @@ void ClauseProcessor::processMapObjects(
1167
1167
1168
1168
auto getDefaultMapperID = [&](const omp::Object &object,
1169
1169
std::string &mapperIdName) {
1170
- const semantics::DerivedTypeSpec *typeSpec = nullptr ;
1171
-
1172
- if (object.sym ()->GetType () && object.sym ()->GetType ()->category () ==
1173
- semantics::DeclTypeSpec::TypeDerived)
1174
- typeSpec = &object.sym ()->GetType ()->derivedTypeSpec ();
1175
- else if (object.sym ()->owner ().IsDerivedType ())
1176
- typeSpec = object.sym ()->owner ().derivedTypeSpec ();
1177
-
1178
- if (typeSpec) {
1179
- mapperIdName =
1180
- typeSpec->name ().ToString () + llvm::omp::OmpDefaultMapperName;
1181
- if (auto *sym = converter.getCurrentScope ().FindSymbol (mapperIdName))
1182
- mapperIdName = converter.mangleName (mapperIdName, sym->owner ());
1170
+ if (!mlir::isa<mlir::omp::DeclareMapperOp>(
1171
+ firOpBuilder.getRegion ().getParentOp ())) {
1172
+ const semantics::DerivedTypeSpec *typeSpec = nullptr ;
1173
+
1174
+ if (object.sym ()->owner ().IsDerivedType ())
1175
+ typeSpec = object.sym ()->owner ().derivedTypeSpec ();
1176
+ else if (object.sym ()->GetType () &&
1177
+ object.sym ()->GetType ()->category () ==
1178
+ semantics::DeclTypeSpec::TypeDerived)
1179
+ typeSpec = &object.sym ()->GetType ()->derivedTypeSpec ();
1180
+
1181
+ if (typeSpec) {
1182
+ mapperIdName =
1183
+ typeSpec->name ().ToString () + llvm::omp::OmpDefaultMapperName;
1184
+ if (auto *sym = converter.getCurrentScope ().FindSymbol (mapperIdName))
1185
+ mapperIdName = converter.mangleName (mapperIdName, sym->owner ());
1186
+ else
1187
+ mapperIdName =
1188
+ converter.mangleName (mapperIdName, *typeSpec->GetScope ());
1189
+ }
1183
1190
}
1184
1191
1185
1192
// Make sure we don't return a mapper to self
0 commit comments