Skip to content

Commit 0210c6d

Browse files
authored
[flang] Handle namelist group in deconstruct
1 parent 6f2557d commit 0210c6d

File tree

3 files changed

+13
-1
lines changed

3 files changed

+13
-1
lines changed

flang/include/flang/Optimizer/Support/InternalNames.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ struct NameUniquer {
4141
INTRINSIC_TYPE_DESC,
4242
PROCEDURE,
4343
TYPE_DESC,
44-
VARIABLE
44+
VARIABLE,
45+
NAMELIST_GROUP
4546
};
4647

4748
/// Components of an unparsed unique name

flang/lib/Optimizer/Support/InternalNames.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,10 @@ fir::NameUniquer::deconstruct(llvm::StringRef uniq) {
288288
else
289289
kinds.push_back(readInt(uniq, i, i + 1, end));
290290
break;
291+
case 'G':
292+
nk = NameKind::NAMELIST_GROUP;
293+
name = readName(uniq, i, i + 1, end);
294+
break;
291295

292296
default:
293297
assert(false && "unknown uniquing code");

flang/unittests/Optimizer/InternalNamesTest.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,11 @@ TEST(InternalNamesTest, complexdeconstructTest) {
208208
expectedNameKind = NameKind::DISPATCH_TABLE;
209209
expectedComponents = {{}, {}, "t", {}};
210210
validateDeconstructedName(actual, expectedNameKind, expectedComponents);
211+
212+
actual = NameUniquer::deconstruct("_QFmstartGmpitop");
213+
expectedNameKind = NameKind::NAMELIST_GROUP;
214+
expectedComponents = {{}, {"mstart"}, "mpitop", {}};
215+
validateDeconstructedName(actual, expectedNameKind, expectedComponents);
211216
}
212217

213218
TEST(InternalNamesTest, needExternalNameMangling) {
@@ -217,6 +222,8 @@ TEST(InternalNamesTest, needExternalNameMangling) {
217222
ASSERT_FALSE(NameUniquer::needExternalNameMangling(""));
218223
ASSERT_FALSE(NameUniquer::needExternalNameMangling("_QDTmytypeK2K8K18"));
219224
ASSERT_FALSE(NameUniquer::needExternalNameMangling("exit_"));
225+
ASSERT_FALSE(NameUniquer::needExternalNameMangling("_QFfooEx"));
226+
ASSERT_FALSE(NameUniquer::needExternalNameMangling("_QFmstartGmpitop"));
220227
ASSERT_TRUE(NameUniquer::needExternalNameMangling("_QPfoo"));
221228
ASSERT_TRUE(NameUniquer::needExternalNameMangling("_QPbar"));
222229
ASSERT_TRUE(NameUniquer::needExternalNameMangling("_QBa"));

0 commit comments

Comments
 (0)