diff options
author | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2015-04-24 21:21:57 +0000 |
---|---|---|
committer | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2015-04-24 21:21:57 +0000 |
commit | 19717ea416b6ee135859c96e38f8d3ea809f3ab1 (patch) | |
tree | f10f9f3660c498f74e52dd9d15e1568d6cb56ed5 /llvm/lib | |
parent | 5bacf3722c018476b8712440c08dbcaf8df2a960 (diff) | |
download | bcm5719-llvm-19717ea416b6ee135859c96e38f8d3ea809f3ab1.tar.gz bcm5719-llvm-19717ea416b6ee135859c96e38f8d3ea809f3ab1.zip |
LLParser: Split out ParseMetadataAttachment(), NFC
Make the code reusable for `Function` metadata attachments (PR23340).
llvm-svn: 235778
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/AsmParser/LLParser.cpp | 19 | ||||
-rw-r--r-- | llvm/lib/AsmParser/LLParser.h | 1 |
2 files changed, 15 insertions, 5 deletions
diff --git a/llvm/lib/AsmParser/LLParser.cpp b/llvm/lib/AsmParser/LLParser.cpp index 441d36cb21d..18fa6978065 100644 --- a/llvm/lib/AsmParser/LLParser.cpp +++ b/llvm/lib/AsmParser/LLParser.cpp @@ -1490,6 +1490,18 @@ bool LLParser::ParseOptionalCallingConv(unsigned &CC) { return false; } +/// ParseMetadataAttachment +/// ::= !dbg !42 +bool LLParser::ParseMetadataAttachment(unsigned &Kind, MDNode *&MD) { + assert(Lex.getKind() == lltok::MetadataVar && "Expected metadata attachment"); + + std::string Name = Lex.getStrVal(); + Kind = M->getMDKindID(Name); + Lex.Lex(); + + return ParseMDNode(MD); +} + /// ParseInstructionMetadata /// ::= !dbg !42 (',' !dbg !57)* bool LLParser::ParseInstructionMetadata(Instruction *Inst, @@ -1498,12 +1510,9 @@ bool LLParser::ParseInstructionMetadata(Instruction *Inst, if (Lex.getKind() != lltok::MetadataVar) return TokError("expected metadata after comma"); - std::string Name = Lex.getStrVal(); - unsigned MDK = M->getMDKindID(Name); - Lex.Lex(); - + unsigned MDK; MDNode *N; - if (ParseMDNode(N)) + if (ParseMetadataAttachment(MDK, N)) return true; Inst->setMetadata(MDK, N); diff --git a/llvm/lib/AsmParser/LLParser.h b/llvm/lib/AsmParser/LLParser.h index 117cdcba255..9db50a7b173 100644 --- a/llvm/lib/AsmParser/LLParser.h +++ b/llvm/lib/AsmParser/LLParser.h @@ -392,6 +392,7 @@ namespace llvm { bool ParseMDNode(MDNode *&MD); bool ParseMDNodeTail(MDNode *&MD); bool ParseMDNodeVector(SmallVectorImpl<Metadata *> &MDs); + bool ParseMetadataAttachment(unsigned &Kind, MDNode *&MD); bool ParseInstructionMetadata(Instruction *Inst, PerFunctionState *PFS); template <class FieldTy> |