Skip to content

Commit c2d8c55

Browse files
committed
Change mapper name field from parser::Name to std::string.
1 parent f852e36 commit c2d8c55

File tree

11 files changed

+149
-48
lines changed

11 files changed

+149
-48
lines changed

flang/include/flang/Parser/parse-tree.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3540,7 +3540,7 @@ WRAPPER_CLASS(OmpLocatorList, std::list<OmpLocator>);
35403540
struct OmpMapperSpecifier {
35413541
// Absent mapper-identifier is equivalent to DEFAULT.
35423542
TUPLE_CLASS_BOILERPLATE(OmpMapperSpecifier);
3543-
std::tuple<std::optional<Name>, TypeSpec, Name> t;
3543+
std::tuple<std::string, TypeSpec, Name> t;
35443544
};
35453545

35463546
// Ref: [4.5:222:1-5], [5.0:305:20-27], [5.1:337:11-19], [5.2:139:18-23],

flang/lib/Lower/OpenMP/ClauseProcessor.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1114,9 +1114,9 @@ void ClauseProcessor::processMapObjects(
11141114
typeSpec = &object.sym()->GetType()->derivedTypeSpec();
11151115

11161116
if (typeSpec) {
1117-
mapperIdName = typeSpec->name().ToString() + ".default";
1118-
mapperIdName =
1119-
converter.mangleName(mapperIdName, *typeSpec->GetScope());
1117+
mapperIdName = typeSpec->name().ToString() + ".omp.default.mapper";
1118+
if (auto *sym = converter.getCurrentScope().FindSymbol(mapperIdName))
1119+
mapperIdName = converter.mangleName(mapperIdName, sym->owner());
11201120
}
11211121
}
11221122
};

flang/lib/Lower/OpenMP/OpenMP.cpp

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2422,8 +2422,10 @@ genTargetOp(lower::AbstractConverter &converter, lower::SymMap &symTable,
24222422
mlir::FlatSymbolRefAttr mapperId;
24232423
if (sym.GetType()->category() == semantics::DeclTypeSpec::TypeDerived) {
24242424
auto &typeSpec = sym.GetType()->derivedTypeSpec();
2425-
std::string mapperIdName = typeSpec.name().ToString() + ".default";
2426-
mapperIdName = converter.mangleName(mapperIdName, *typeSpec.GetScope());
2425+
std::string mapperIdName =
2426+
typeSpec.name().ToString() + ".omp.default.mapper";
2427+
if (auto *sym = converter.getCurrentScope().FindSymbol(mapperIdName))
2428+
mapperIdName = converter.mangleName(mapperIdName, sym->owner());
24272429
if (converter.getModuleOp().lookupSymbol(mapperIdName))
24282430
mapperId = mlir::FlatSymbolRefAttr::get(&converter.getMLIRContext(),
24292431
mapperIdName);
@@ -4005,24 +4007,16 @@ genOMP(lower::AbstractConverter &converter, lower::SymMap &symTable,
40054007
lower::StatementContext stmtCtx;
40064008
const auto &spec =
40074009
std::get<parser::OmpMapperSpecifier>(declareMapperConstruct.t);
4008-
const auto &mapperName{std::get<std::optional<parser::Name>>(spec.t)};
4010+
const auto &mapperName{std::get<std::string>(spec.t)};
40094011
const auto &varType{std::get<parser::TypeSpec>(spec.t)};
40104012
const auto &varName{std::get<parser::Name>(spec.t)};
40114013
assert(varType.declTypeSpec->category() ==
40124014
semantics::DeclTypeSpec::Category::TypeDerived &&
40134015
"Expected derived type");
40144016

4015-
std::string mapperNameStr;
4016-
if (mapperName.has_value()) {
4017-
mapperNameStr = mapperName->ToString();
4018-
mapperNameStr =
4019-
converter.mangleName(mapperNameStr, mapperName->symbol->owner());
4020-
} else {
4021-
mapperNameStr =
4022-
varType.declTypeSpec->derivedTypeSpec().name().ToString() + ".default";
4023-
mapperNameStr = converter.mangleName(
4024-
mapperNameStr, *varType.declTypeSpec->derivedTypeSpec().GetScope());
4025-
}
4017+
std::string mapperNameStr = mapperName;
4018+
if (auto *sym = converter.getCurrentScope().FindSymbol(mapperNameStr))
4019+
mapperNameStr = converter.mangleName(mapperNameStr, sym->owner());
40264020

40274021
// Save current insertion point before moving to the module scope to create
40284022
// the DeclareMapperOp

flang/lib/Parser/openmp-parsers.cpp

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1389,8 +1389,28 @@ TYPE_PARSER(
13891389
TYPE_PARSER(sourced(construct<OpenMPDeclareTargetConstruct>(
13901390
verbatim("DECLARE TARGET"_tok), Parser<OmpDeclareTargetSpecifier>{})))
13911391

1392+
static OmpMapperSpecifier ConstructOmpMapperSpecifier(
1393+
std::optional<Name> &&mapperName, TypeSpec &&typeSpec, Name &&varName) {
1394+
// If a name is present, parse: name ":" typeSpec "::" name
1395+
// This matches the syntax: <mapper-name> : <type-spec> :: <variable-name>
1396+
if (mapperName.has_value() && mapperName->ToString() != "default") {
1397+
return OmpMapperSpecifier{
1398+
mapperName->ToString(), std::move(typeSpec), std::move(varName)};
1399+
}
1400+
// If the name is missing, use the DerivedTypeSpec name to construct the
1401+
// default mapper name.
1402+
// This matches the syntax: <type-spec> :: <variable-name>
1403+
if (auto *derived = std::get_if<DerivedTypeSpec>(&typeSpec.u)) {
1404+
return OmpMapperSpecifier{
1405+
std::get<Name>(derived->t).ToString() + ".omp.default.mapper",
1406+
std::move(typeSpec), std::move(varName)};
1407+
}
1408+
return OmpMapperSpecifier{std::string("omp.default.mapper"),
1409+
std::move(typeSpec), std::move(varName)};
1410+
}
1411+
13921412
// mapper-specifier
1393-
TYPE_PARSER(construct<OmpMapperSpecifier>(
1413+
TYPE_PARSER(applyFunction<OmpMapperSpecifier>(ConstructOmpMapperSpecifier,
13941414
maybe(name / ":" / !":"_tok), typeSpec / "::", name))
13951415

13961416
// OpenMP 5.2: 5.8.8 Declare Mapper Construct

flang/lib/Parser/unparse.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2093,7 +2093,11 @@ class UnparseVisitor {
20932093
Walk(x.v, ",");
20942094
}
20952095
void Unparse(const OmpMapperSpecifier &x) {
2096-
Walk(std::get<std::optional<Name>>(x.t), ":");
2096+
const auto &mapperName = std::get<std::string>(x.t);
2097+
if (mapperName.find("omp.default.mapper") == std::string::npos) {
2098+
Walk(mapperName);
2099+
Put(":");
2100+
}
20972101
Walk(std::get<TypeSpec>(x.t));
20982102
Put("::");
20992103
Walk(std::get<Name>(x.t));
@@ -2796,8 +2800,9 @@ class UnparseVisitor {
27962800
BeginOpenMP();
27972801
Word("!$OMP DECLARE MAPPER (");
27982802
const auto &spec{std::get<OmpMapperSpecifier>(z.t)};
2799-
if (auto mapname{std::get<std::optional<Name>>(spec.t)}) {
2800-
Walk(mapname);
2803+
const auto &mapperName = std::get<std::string>(spec.t);
2804+
if (mapperName.find("omp.default.mapper") == std::string::npos) {
2805+
Walk(mapperName);
28012806
Put(":");
28022807
}
28032808
Walk(std::get<TypeSpec>(spec.t));

flang/lib/Semantics/resolve-names.cpp

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1767,7 +1767,9 @@ void OmpVisitor::ProcessMapperSpecifier(const parser::OmpMapperSpecifier &spec,
17671767
// just following the natural flow, the map clauses gets processed before
17681768
// the type has been fully processed.
17691769
BeginDeclTypeSpec();
1770-
1770+
auto &mapperName{std::get<std::string>(spec.t)};
1771+
MakeSymbol(parser::CharBlock(mapperName), Attrs{},
1772+
MiscDetails{MiscDetails::Kind::ConstructName});
17711773
PushScope(Scope::Kind::OtherConstruct, nullptr);
17721774
Walk(std::get<parser::TypeSpec>(spec.t));
17731775
auto &varName{std::get<parser::Name>(spec.t)};
@@ -1776,18 +1778,6 @@ void OmpVisitor::ProcessMapperSpecifier(const parser::OmpMapperSpecifier &spec,
17761778
Walk(clauses);
17771779
EndDeclTypeSpec();
17781780
PopScope();
1779-
1780-
if (auto &mapperName{std::get<std::optional<parser::Name>>(spec.t)}) {
1781-
mapperName->symbol =
1782-
&MakeSymbol(*mapperName, MiscDetails{MiscDetails::Kind::ConstructName});
1783-
} else {
1784-
const auto &type = std::get<parser::TypeSpec>(spec.t);
1785-
static llvm::SmallVector<std::string> defaultNames;
1786-
defaultNames.emplace_back(
1787-
type.declTypeSpec->derivedTypeSpec().name().ToString() + ".default");
1788-
MakeSymbol(defaultNames.back(), Attrs{},
1789-
MiscDetails{MiscDetails::Kind::ConstructName});
1790-
}
17911781
}
17921782

17931783
void OmpVisitor::ProcessReductionSpecifier(

flang/test/Lower/OpenMP/declare-mapper.f90

Lines changed: 93 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
! RUN: %flang_fc1 -emit-hlfir -fopenmp -fopenmp-version=50 %t/omp-declare-mapper-2.f90 -o - | FileCheck %t/omp-declare-mapper-2.f90
66
! RUN: %flang_fc1 -emit-hlfir -fopenmp -fopenmp-version=50 %t/omp-declare-mapper-3.f90 -o - | FileCheck %t/omp-declare-mapper-3.f90
77
! RUN: %flang_fc1 -emit-hlfir -fopenmp -fopenmp-version=50 %t/omp-declare-mapper-4.f90 -o - | FileCheck %t/omp-declare-mapper-4.f90
8+
! RUN: %flang_fc1 -emit-hlfir -fopenmp -fopenmp-version=50 %t/omp-declare-mapper-5.f90 -o - | FileCheck %t/omp-declare-mapper-5.f90
89

910
!--- omp-declare-mapper-1.f90
1011
subroutine declare_mapper_1
@@ -22,7 +23,7 @@ subroutine declare_mapper_1
2223
end type
2324
type(my_type2) :: t
2425
real :: x, y(nvals)
25-
!CHECK:omp.declare_mapper @[[MY_TYPE_MAPPER:_QQFdeclare_mapper_1my_type\.default]] : [[MY_TYPE:!fir\.type<_QFdeclare_mapper_1Tmy_type\{num_vals:i32,values:!fir\.box<!fir\.heap<!fir\.array<\?xi32>>>\}>]] {
26+
!CHECK:omp.declare_mapper @[[MY_TYPE_MAPPER:_QQFdeclare_mapper_1my_type\.omp\.default\.mapper]] : [[MY_TYPE:!fir\.type<_QFdeclare_mapper_1Tmy_type\{num_vals:i32,values:!fir\.box<!fir\.heap<!fir\.array<\?xi32>>>\}>]] {
2627
!CHECK: ^bb0(%[[VAL_0:.*]]: !fir.ref<[[MY_TYPE]]>):
2728
!CHECK: %[[VAL_1:.*]]:2 = hlfir.declare %[[VAL_0]] {uniq_name = "_QFdeclare_mapper_1Evar"} : (!fir.ref<[[MY_TYPE]]>) -> (!fir.ref<[[MY_TYPE]]>, !fir.ref<[[MY_TYPE]]>)
2829
!CHECK: %[[VAL_2:.*]] = hlfir.designate %[[VAL_1]]#0{"values"} {fortran_attrs = #fir.var_attrs<allocatable>} : (!fir.ref<[[MY_TYPE]]>) -> !fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>>
@@ -149,7 +150,7 @@ subroutine declare_mapper_4
149150
integer :: num
150151
end type
151152

152-
!CHECK: omp.declare_mapper @[[MY_TYPE_MAPPER:_QQFdeclare_mapper_4my_type.default]] : [[MY_TYPE:!fir\.type<_QFdeclare_mapper_4Tmy_type\{num:i32\}>]]
153+
!CHECK: omp.declare_mapper @[[MY_TYPE_MAPPER:_QQFdeclare_mapper_4my_type.omp.default.mapper]] : [[MY_TYPE:!fir\.type<_QFdeclare_mapper_4Tmy_type\{num:i32\}>]]
153154
!$omp declare mapper (my_type :: var) map (var%num)
154155

155156
type(my_type) :: a
@@ -171,3 +172,93 @@ subroutine declare_mapper_4
171172
a%num = 40
172173
!$omp end target
173174
end subroutine declare_mapper_4
175+
176+
!--- omp-declare-mapper-5.f90
177+
program declare_mapper_5
178+
implicit none
179+
180+
type :: mytype
181+
integer :: x, y
182+
end type
183+
184+
!CHECK: omp.declare_mapper @[[INNER_MAPPER_NAMED:_QQFFuse_innermy_mapper]] : [[MY_TYPE:!fir\.type<_QFTmytype\{x:i32,y:i32\}>]]
185+
!CHECK: omp.declare_mapper @[[INNER_MAPPER_DEFAULT:_QQFFuse_innermytype.omp.default.mapper]] : [[MY_TYPE]]
186+
!CHECK: omp.declare_mapper @[[OUTER_MAPPER_NAMED:_QQFmy_mapper]] : [[MY_TYPE]]
187+
!CHECK: omp.declare_mapper @[[OUTER_MAPPER_DEFAULT:_QQFmytype.omp.default.mapper]] : [[MY_TYPE]]
188+
!$omp declare mapper(mytype :: var) map(tofrom: var%x)
189+
!$omp declare mapper(my_mapper : mytype :: var) map(tofrom: var%y)
190+
191+
type(mytype) :: a
192+
193+
!CHECK: %{{.*}} = omp.map.info var_ptr(%{{.*}}#1 : !fir.ref<[[MY_TYPE]]>, [[MY_TYPE]]) map_clauses(implicit, tofrom) capture(ByRef) mapper(@[[OUTER_MAPPER_DEFAULT]]) -> !fir.ref<[[MY_TYPE]]> {name = "a"}
194+
!$omp target
195+
a%x = 10
196+
!$omp end target
197+
198+
!CHECK: %{{.*}} = omp.map.info var_ptr(%{{.*}}#1 : !fir.ref<[[MY_TYPE]]>, [[MY_TYPE]]) map_clauses(tofrom) capture(ByRef) mapper(@[[OUTER_MAPPER_DEFAULT]]) -> !fir.ref<[[MY_TYPE]]> {name = "a"}
199+
!$omp target map(a)
200+
a%x = 10
201+
!$omp end target
202+
203+
!CHECK: %{{.*}} = omp.map.info var_ptr(%{{.*}}#1 : !fir.ref<[[MY_TYPE]]>, [[MY_TYPE]]) map_clauses(tofrom) capture(ByRef) mapper(@[[OUTER_MAPPER_DEFAULT]]) -> !fir.ref<[[MY_TYPE]]> {name = "a"}
204+
!$omp target map(mapper(default) : a)
205+
a%x = 10
206+
!$omp end target
207+
208+
!CHECK: %{{.*}} = omp.map.info var_ptr(%{{.*}}#1 : !fir.ref<[[MY_TYPE]]>, [[MY_TYPE]]) map_clauses(tofrom) capture(ByRef) mapper(@[[OUTER_MAPPER_NAMED]]) -> !fir.ref<[[MY_TYPE]]> {name = "a"}
209+
!$omp target map(mapper(my_mapper) : a)
210+
a%y = 10
211+
!$omp end target
212+
213+
contains
214+
subroutine use_outer()
215+
type(mytype) :: a
216+
217+
!CHECK: %{{.*}} = omp.map.info var_ptr(%{{.*}}#1 : !fir.ref<[[MY_TYPE]]>, [[MY_TYPE]]) map_clauses(implicit, tofrom) capture(ByRef) mapper(@[[OUTER_MAPPER_DEFAULT]]) -> !fir.ref<[[MY_TYPE]]> {name = "a"}
218+
!$omp target
219+
a%x = 10
220+
!$omp end target
221+
222+
!CHECK: %{{.*}} = omp.map.info var_ptr(%{{.*}}#1 : !fir.ref<[[MY_TYPE]]>, [[MY_TYPE]]) map_clauses(tofrom) capture(ByRef) mapper(@[[OUTER_MAPPER_DEFAULT]]) -> !fir.ref<[[MY_TYPE]]> {name = "a"}
223+
!$omp target map(a)
224+
a%x = 10
225+
!$omp end target
226+
227+
!CHECK: %{{.*}} = omp.map.info var_ptr(%{{.*}}#1 : !fir.ref<[[MY_TYPE]]>, [[MY_TYPE]]) map_clauses(tofrom) capture(ByRef) mapper(@[[OUTER_MAPPER_DEFAULT]]) -> !fir.ref<[[MY_TYPE]]> {name = "a"}
228+
!$omp target map(mapper(default) : a)
229+
a%x = 10
230+
!$omp end target
231+
232+
!CHECK: %{{.*}} = omp.map.info var_ptr(%{{.*}}#1 : !fir.ref<[[MY_TYPE]]>, [[MY_TYPE]]) map_clauses(tofrom) capture(ByRef) mapper(@[[OUTER_MAPPER_NAMED]]) -> !fir.ref<[[MY_TYPE]]> {name = "a"}
233+
!$omp target map(mapper(my_mapper) : a)
234+
a%y = 10
235+
!$omp end target
236+
end subroutine
237+
238+
subroutine use_inner()
239+
!$omp declare mapper(mytype :: var) map(tofrom: var%x)
240+
!$omp declare mapper(my_mapper : mytype :: var) map(tofrom: var%y)
241+
242+
type(mytype) :: a
243+
244+
!CHECK: %{{.*}} = omp.map.info var_ptr(%{{.*}}#1 : !fir.ref<[[MY_TYPE]]>, [[MY_TYPE]]) map_clauses(implicit, tofrom) capture(ByRef) mapper(@[[INNER_MAPPER_DEFAULT]]) -> !fir.ref<[[MY_TYPE]]> {name = "a"}
245+
!$omp target
246+
a%x = 10
247+
!$omp end target
248+
249+
!CHECK: %{{.*}} = omp.map.info var_ptr(%{{.*}}#1 : !fir.ref<[[MY_TYPE]]>, [[MY_TYPE]]) map_clauses(tofrom) capture(ByRef) mapper(@[[INNER_MAPPER_DEFAULT]]) -> !fir.ref<[[MY_TYPE]]> {name = "a"}
250+
!$omp target map(a)
251+
a%x = 10
252+
!$omp end target
253+
254+
!CHECK: %{{.*}} = omp.map.info var_ptr(%{{.*}}#1 : !fir.ref<[[MY_TYPE]]>, [[MY_TYPE]]) map_clauses(tofrom) capture(ByRef) mapper(@[[INNER_MAPPER_DEFAULT]]) -> !fir.ref<[[MY_TYPE]]> {name = "a"}
255+
!$omp target map(mapper(default) : a)
256+
a%x = 10
257+
!$omp end target
258+
259+
!CHECK: %{{.*}} = omp.map.info var_ptr(%{{.*}}#1 : !fir.ref<[[MY_TYPE]]>, [[MY_TYPE]]) map_clauses(tofrom) capture(ByRef) mapper(@[[INNER_MAPPER_NAMED]]) -> !fir.ref<[[MY_TYPE]]> {name = "a"}
260+
!$omp target map(mapper(my_mapper) : a)
261+
a%y = 10
262+
!$omp end target
263+
end subroutine
264+
end program declare_mapper_5

flang/test/Lower/OpenMP/map-mapper.f90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ program p
88
!$omp declare mapper(xx : t1 :: nn) map(to: nn, nn%x)
99
!$omp declare mapper(t1 :: nn) map(from: nn)
1010

11-
!CHECK-LABEL: omp.declare_mapper @_QQFt1.default : !fir.type<_QFTt1{x:!fir.array<256xi32>}>
11+
!CHECK-LABEL: omp.declare_mapper @_QQFt1.omp.default.mapper : !fir.type<_QFTt1{x:!fir.array<256xi32>}>
1212
!CHECK-LABEL: omp.declare_mapper @_QQFxx : !fir.type<_QFTt1{x:!fir.array<256xi32>}>
1313

1414
type(t1) :: a, b
@@ -20,7 +20,7 @@ program p
2020
end do
2121
!$omp end target
2222

23-
!CHECK: %[[MAP_B:.*]] = omp.map.info var_ptr(%{{.*}} : {{.*}}, {{.*}}) map_clauses(tofrom) capture(ByRef) mapper(@_QQFt1.default) -> {{.*}} {name = "b"}
23+
!CHECK: %[[MAP_B:.*]] = omp.map.info var_ptr(%{{.*}} : {{.*}}, {{.*}}) map_clauses(tofrom) capture(ByRef) mapper(@_QQFt1.omp.default.mapper) -> {{.*}} {name = "b"}
2424
!CHECK: omp.target map_entries(%[[MAP_B]] -> %{{.*}}, %{{.*}} -> %{{.*}} : {{.*}}, {{.*}}) {
2525
!$omp target map(mapper(default) : b)
2626
do i = 1, n

flang/test/Parser/OpenMP/declare-mapper-unparse.f90

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,36 +7,37 @@ program main
77
type ty
88
integer :: x
99
end type ty
10-
10+
1111

1212
!CHECK: !$OMP DECLARE MAPPER (mymapper:ty::mapped) MAP(mapped,mapped%x)
1313
!$omp declare mapper(mymapper : ty :: mapped) map(mapped, mapped%x)
1414

1515
!PARSE-TREE: OpenMPDeclareMapperConstruct
1616
!PARSE-TREE: OmpMapperSpecifier
17-
!PARSE-TREE: Name = 'mymapper'
17+
!PARSE-TREE: string = 'mymapper'
1818
!PARSE-TREE: TypeSpec -> DerivedTypeSpec
1919
!PARSE-TREE: Name = 'ty'
20-
!PARSE-TREE: Name = 'mapped'
20+
!PARSE-TREE: Name = 'mapped'
2121
!PARSE-TREE: OmpMapClause
2222
!PARSE-TREE: OmpObjectList -> OmpObject -> Designator -> DataRef -> Name = 'mapped'
2323
!PARSE-TREE: OmpObject -> Designator -> DataRef -> StructureComponent
2424
!PARSE-TREE: DataRef -> Name = 'mapped'
25-
!PARSE-TREE: Name = 'x'
25+
!PARSE-TREE: Name = 'x'
2626

2727
!CHECK: !$OMP DECLARE MAPPER (ty::mapped) MAP(mapped,mapped%x)
2828
!$omp declare mapper(ty :: mapped) map(mapped, mapped%x)
29-
29+
3030
!PARSE-TREE: OpenMPDeclareMapperConstruct
3131
!PARSE-TREE: OmpMapperSpecifier
32+
!PARSE-TREE: string = 'ty.omp.default.mapper'
3233
!PARSE-TREE: TypeSpec -> DerivedTypeSpec
3334
!PARSE-TREE: Name = 'ty'
34-
!PARSE-TREE: Name = 'mapped'
35+
!PARSE-TREE: Name = 'mapped'
3536
!PARSE-TREE: OmpMapClause
3637
!PARSE-TREE: OmpObjectList -> OmpObject -> Designator -> DataRef -> Name = 'mapped'
3738
!PARSE-TREE: OmpObject -> Designator -> DataRef -> StructureComponent
3839
!PARSE-TREE: DataRef -> Name = 'mapped'
3940
!PARSE-TREE: Name = 'x'
40-
41+
4142
end program main
4243
!CHECK-LABEL: end program main

flang/test/Parser/OpenMP/metadirective-dirspec.f90

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ subroutine f02
7878
!PARSE-TREE: | | OmpDirectiveSpecification
7979
!PARSE-TREE: | | | OmpDirectiveName -> llvm::omp::Directive = declare mapper
8080
!PARSE-TREE: | | | OmpArgumentList -> OmpArgument -> OmpMapperSpecifier
81-
!PARSE-TREE: | | | | Name = 'mymapper'
81+
!PARSE-TREE: | | | | string = 'mymapper'
8282
!PARSE-TREE: | | | | TypeSpec -> IntrinsicTypeSpec -> IntegerTypeSpec ->
8383
!PARSE-TREE: | | | | Name = 'v'
8484
!PARSE-TREE: | | | OmpClauseList -> OmpClause -> Map -> OmpMapClause

flang/test/Semantics/OpenMP/declare-mapper-symbols.f90

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ program main
1313
!! Note, symbols come out in their respective scope, but not in declaration order.
1414
!CHECK: mymapper: Misc ConstructName
1515
!CHECK: ty: DerivedType components: x
16-
!CHECK: ty.default: Misc ConstructName
16+
!CHECK: ty.omp.default.mapper: Misc ConstructName
1717
!CHECK: DerivedType scope: ty
1818
!CHECK: OtherConstruct scope:
1919
!CHECK: mapped (OmpMapToFrom) {{.*}} ObjectEntity type: TYPE(ty)

0 commit comments

Comments
 (0)