From 9dc8ae110f4b23df8f42fe6a09087061938a06a7 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Tue, 13 Jul 2010 19:42:44 +0000 Subject: [PATCH] Add support for empty named metadata too. This isn't particularly useful, but it is nice for consistency. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108262 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/AsmParser/LLParser.cpp | 25 +++++++++++++------------ test/Feature/metadata.ll | 1 + 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/lib/AsmParser/LLParser.cpp b/lib/AsmParser/LLParser.cpp index 8c4d7348eb1..3948071c420 100644 --- a/lib/AsmParser/LLParser.cpp +++ b/lib/AsmParser/LLParser.cpp @@ -544,20 +544,21 @@ bool LLParser::ParseNamedMetadata() { return true; SmallVector Elts; - do { - // Null is a special case since it is typeless. - if (EatIfPresent(lltok::kw_null)) { - Elts.push_back(0); - continue; - } + if (Lex.getKind() != lltok::rbrace) + do { + // Null is a special case since it is typeless. + if (EatIfPresent(lltok::kw_null)) { + Elts.push_back(0); + continue; + } - if (ParseToken(lltok::exclaim, "Expected '!' here")) - return true; + if (ParseToken(lltok::exclaim, "Expected '!' here")) + return true; - MDNode *N = 0; - if (ParseMDNodeID(N)) return true; - Elts.push_back(N); - } while (EatIfPresent(lltok::comma)); + MDNode *N = 0; + if (ParseMDNodeID(N)) return true; + Elts.push_back(N); + } while (EatIfPresent(lltok::comma)); if (ParseToken(lltok::rbrace, "expected end of metadata node")) return true; diff --git a/test/Feature/metadata.ll b/test/Feature/metadata.ll index b34c947df4d..d43815be46a 100644 --- a/test/Feature/metadata.ll +++ b/test/Feature/metadata.ll @@ -9,6 +9,7 @@ define void @foo() { declare void @llvm.zonk(metadata, i64, metadata) nounwind readnone !named = !{!0} +!another_named = !{} !0 = metadata !{i8** null} !1 = metadata !{i8* null, metadata !2} !2 = metadata !{}