diff options
author | Chris Lattner <sabre@nondot.org> | 2009-12-30 04:13:37 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-12-30 04:13:37 +0000 |
commit | 0f3bb7b25e9b32e74f64ba6c0cda39fbdc7cfa30 (patch) | |
tree | 9603af0ec8ba416dd48f824522c028e268fc81f4 /llvm/lib/AsmParser | |
parent | c712ce1b607d48bd6569bd880ea6da92c61a323e (diff) | |
download | bcm5719-llvm-0f3bb7b25e9b32e74f64ba6c0cda39fbdc7cfa30.tar.gz bcm5719-llvm-0f3bb7b25e9b32e74f64ba6c0cda39fbdc7cfa30.zip |
fix parsing of mdstring values.
llvm-svn: 92290
Diffstat (limited to 'llvm/lib/AsmParser')
-rw-r--r-- | llvm/lib/AsmParser/LLParser.cpp | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/llvm/lib/AsmParser/LLParser.cpp b/llvm/lib/AsmParser/LLParser.cpp index db2a5a92ab9..1ef4209dae3 100644 --- a/llvm/lib/AsmParser/LLParser.cpp +++ b/llvm/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<PointerType>(Ty); const FunctionType *FTy = |