summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-04-24 21:21:57 +0000
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-04-24 21:21:57 +0000
commit19717ea416b6ee135859c96e38f8d3ea809f3ab1 (patch)
treef10f9f3660c498f74e52dd9d15e1568d6cb56ed5 /llvm/lib
parent5bacf3722c018476b8712440c08dbcaf8df2a960 (diff)
downloadbcm5719-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.cpp19
-rw-r--r--llvm/lib/AsmParser/LLParser.h1
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>
OpenPOWER on IntegriCloud