diff options
author | Alex Lorenz <arphaman@gmail.com> | 2015-07-29 18:57:23 +0000 |
---|---|---|
committer | Alex Lorenz <arphaman@gmail.com> | 2015-07-29 18:57:23 +0000 |
commit | b139323f217ac3414950454047a9057801dc096f (patch) | |
tree | 4c0426cc4f656e92b254c38a48090e0a0b97c3ae /llvm/lib/CodeGen/MIRParser | |
parent | fbe9c04c5f72cf3eca39793aafc92071ef13c046 (diff) | |
download | bcm5719-llvm-b139323f217ac3414950454047a9057801dc096f.tar.gz bcm5719-llvm-b139323f217ac3414950454047a9057801dc096f.zip |
MIR Serialization: Serialize the '.cfi_def_cfa' CFI instruction.
llvm-svn: 243554
Diffstat (limited to 'llvm/lib/CodeGen/MIRParser')
-rw-r--r-- | llvm/lib/CodeGen/MIRParser/MILexer.cpp | 1 | ||||
-rw-r--r-- | llvm/lib/CodeGen/MIRParser/MILexer.h | 1 | ||||
-rw-r--r-- | llvm/lib/CodeGen/MIRParser/MIParser.cpp | 9 |
3 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/MIRParser/MILexer.cpp b/llvm/lib/CodeGen/MIRParser/MILexer.cpp index f7475a10ba9..3c0dc4c0ded 100644 --- a/llvm/lib/CodeGen/MIRParser/MILexer.cpp +++ b/llvm/lib/CodeGen/MIRParser/MILexer.cpp @@ -147,6 +147,7 @@ static MIToken::TokenKind getIdentifierKind(StringRef Identifier) { .Case(".cfi_offset", MIToken::kw_cfi_offset) .Case(".cfi_def_cfa_register", MIToken::kw_cfi_def_cfa_register) .Case(".cfi_def_cfa_offset", MIToken::kw_cfi_def_cfa_offset) + .Case(".cfi_def_cfa", MIToken::kw_cfi_def_cfa) .Case("blockaddress", MIToken::kw_blockaddress) .Case("target-index", MIToken::kw_target_index) .Default(MIToken::Identifier); diff --git a/llvm/lib/CodeGen/MIRParser/MILexer.h b/llvm/lib/CodeGen/MIRParser/MILexer.h index 7693c1015d8..31c3575bba9 100644 --- a/llvm/lib/CodeGen/MIRParser/MILexer.h +++ b/llvm/lib/CodeGen/MIRParser/MILexer.h @@ -51,6 +51,7 @@ struct MIToken { kw_cfi_offset, kw_cfi_def_cfa_register, kw_cfi_def_cfa_offset, + kw_cfi_def_cfa, kw_blockaddress, kw_target_index, diff --git a/llvm/lib/CodeGen/MIRParser/MIParser.cpp b/llvm/lib/CodeGen/MIRParser/MIParser.cpp index 6c0cd9d6ef8..c71eeb99fca 100644 --- a/llvm/lib/CodeGen/MIRParser/MIParser.cpp +++ b/llvm/lib/CodeGen/MIRParser/MIParser.cpp @@ -754,6 +754,14 @@ bool MIParser::parseCFIOperand(MachineOperand &Dest) { CFIIndex = MMI.addFrameInst( MCCFIInstruction::createDefCfaOffset(nullptr, -Offset)); break; + case MIToken::kw_cfi_def_cfa: + if (parseCFIRegister(Reg) || expectAndConsume(MIToken::comma) || + parseCFIOffset(Offset)) + return true; + // NB: MCCFIInstruction::createDefCfa negates the offset. + CFIIndex = + MMI.addFrameInst(MCCFIInstruction::createDefCfa(nullptr, Reg, -Offset)); + break; default: // TODO: Parse the other CFI operands. llvm_unreachable("The current token should be a cfi operand"); @@ -874,6 +882,7 @@ bool MIParser::parseMachineOperand(MachineOperand &Dest) { case MIToken::kw_cfi_offset: case MIToken::kw_cfi_def_cfa_register: case MIToken::kw_cfi_def_cfa_offset: + case MIToken::kw_cfi_def_cfa: return parseCFIOperand(Dest); case MIToken::kw_blockaddress: return parseBlockAddressOperand(Dest); |