mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-14 07:31:53 +00:00
Parse debug info attached with an instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82063 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
95c1984e6b
commit
cea188aa5f
@ -530,6 +530,7 @@ lltok::Kind LLLexer::LexIdentifier() {
|
||||
KEYWORD(asm);
|
||||
KEYWORD(sideeffect);
|
||||
KEYWORD(gc);
|
||||
KEYWORD(dbg);
|
||||
|
||||
KEYWORD(ccc);
|
||||
KEYWORD(fastcc);
|
||||
|
@ -2624,6 +2624,23 @@ bool LLParser::ParseBasicBlock(PerFunctionState &PFS) {
|
||||
|
||||
if (ParseInstruction(Inst, BB, PFS)) return true;
|
||||
|
||||
// Parse optional debug info
|
||||
if (Lex.getKind() == lltok::comma) {
|
||||
Lex.Lex();
|
||||
if (Lex.getKind() == lltok::kw_dbg) {
|
||||
Lex.Lex();
|
||||
if (Lex.getKind() != lltok::Metadata)
|
||||
return TokError("Expected '!' here");
|
||||
Lex.Lex();
|
||||
MetadataBase *N = 0;
|
||||
if (ParseMDNode(N)) return true;
|
||||
Metadata &TheMetadata = M->getContext().getMetadata();
|
||||
unsigned MDDbgKind = TheMetadata.getMDKind("dbg");
|
||||
if (!MDDbgKind)
|
||||
MDDbgKind = TheMetadata.RegisterMDKind("dbg");
|
||||
TheMetadata.setMD(MDDbgKind, cast<MDNode>(N), Inst);
|
||||
}
|
||||
}
|
||||
BB->getInstList().push_back(Inst);
|
||||
|
||||
// Set the name on the instruction.
|
||||
|
@ -63,6 +63,7 @@ namespace lltok {
|
||||
kw_asm,
|
||||
kw_sideeffect,
|
||||
kw_gc,
|
||||
kw_dbg,
|
||||
kw_c,
|
||||
|
||||
kw_cc, kw_ccc, kw_fastcc, kw_coldcc,
|
||||
|
Loading…
Reference in New Issue
Block a user