From 860775c2b05a0d0ecadcbf2e9283912061fb5235 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 30 Dec 2009 04:13:37 +0000 Subject: [PATCH] fix parsing of mdstring values. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92290 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/AsmParser/LLParser.cpp | 11 ++++------- test/Assembler/metadata.ll | 8 ++++++++ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/AsmParser/LLParser.cpp b/lib/AsmParser/LLParser.cpp index db2a5a92ab9..1ef4209dae3 100644 --- a/lib/AsmParser/LLParser.cpp +++ b/lib/AsmParser/LLParser.cpp @@ -1888,7 +1888,7 @@ bool LLParser::ParseValID(ValID &ID) { ID.StrVal = Lex.getStrVal(); ID.Kind = ValID::t_LocalName; break; - case lltok::Metadata: { // !{...} MDNode, !"foo" MDString + case lltok::Metadata: // !{...} MDNode, !"foo" MDString Lex.Lex(); // FIXME: This doesn't belong here. @@ -1905,20 +1905,17 @@ bool LLParser::ParseValID(ValID &ID) { // Standalone metadata reference // !{ ..., !42, ... } - // FIXME: Split MetadataVal into one for MDNode and one for MDString. - if (!ParseMDNode(ID.MDNodeVal)) { + if (Lex.getKind() == lltok::APSInt) { + if (ParseMDNode(ID.MDNodeVal)) return true; ID.Kind = ValID::t_MDNode; return false; } - // FIXME: This can't work. - // MDString: // ::= '!' STRINGCONSTANT if (ParseMDString(ID.MDStringVal)) return true; ID.Kind = ValID::t_MDString; return false; - } case lltok::APSInt: ID.APSIntVal = Lex.getAPSIntVal(); ID.Kind = ValID::t_APSInt; @@ -2473,7 +2470,7 @@ bool LLParser::ConvertValIDToValue(const Type *Ty, ValID &ID, Value *&V, case ValID::t_LocalID: V = PFS.GetVal(ID.UIntVal, Ty, ID.Loc); break; case ValID::t_LocalName: V = PFS.GetVal(ID.StrVal, Ty, ID.Loc); break; case ValID::t_MDNode: V = ID.MDNodeVal; break; - case ValID::t_MDString: V = ID.MDStringVal; + case ValID::t_MDString: V = ID.MDStringVal; break; case ValID::t_InlineAsm: { const PointerType *PTy = dyn_cast(Ty); const FunctionType *FTy = diff --git a/test/Assembler/metadata.ll b/test/Assembler/metadata.ll index 57e1dae1cae..cdb69788584 100644 --- a/test/Assembler/metadata.ll +++ b/test/Assembler/metadata.ll @@ -2,8 +2,16 @@ define void @test() { add i32 2, 1, !bar !0 add i32 1, 2, !foo !1 + + call void @llvm.dbg.func.start(metadata !"foo") + ret void, !foo !0, !bar !1 } !0 = metadata !{i32 662302, i32 26, metadata !1, null} !1 = metadata !{i32 4} + +declare void @llvm.dbg.func.start(metadata) nounwind readnone + + +; !foo = !{ !0, !"foo" } \ No newline at end of file -- 2.34.1