diff options
author | Alex Lorenz <arphaman@gmail.com> | 2015-08-14 21:55:58 +0000 |
---|---|---|
committer | Alex Lorenz <arphaman@gmail.com> | 2015-08-14 21:55:58 +0000 |
commit | 577d271a75d3a7716df0e38648acef94e842575d (patch) | |
tree | 2a46f0e021be683f4ef61500f9af4b244975920c /llvm/lib/CodeGen | |
parent | 52ae023f9dd4322f46b22c7d8464044dfca2cde4 (diff) | |
download | bcm5719-llvm-577d271a75d3a7716df0e38648acef94e842575d.tar.gz bcm5719-llvm-577d271a75d3a7716df0e38648acef94e842575d.zip |
MIR Serialization: Serialize the '.cfi_same_value' CFI directive.
llvm-svn: 245103
Diffstat (limited to 'llvm/lib/CodeGen')
-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 | 7 | ||||
-rw-r--r-- | llvm/lib/CodeGen/MIRPrinter.cpp | 6 |
4 files changed, 15 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/MIRParser/MILexer.cpp b/llvm/lib/CodeGen/MIRParser/MILexer.cpp index e15a4d1e753..f607edddecc 100644 --- a/llvm/lib/CodeGen/MIRParser/MILexer.cpp +++ b/llvm/lib/CodeGen/MIRParser/MILexer.cpp @@ -196,6 +196,7 @@ static MIToken::TokenKind getIdentifierKind(StringRef Identifier) { .Case("debug-use", MIToken::kw_debug_use) .Case("frame-setup", MIToken::kw_frame_setup) .Case("debug-location", MIToken::kw_debug_location) + .Case(".cfi_same_value", MIToken::kw_cfi_same_value) .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) diff --git a/llvm/lib/CodeGen/MIRParser/MILexer.h b/llvm/lib/CodeGen/MIRParser/MILexer.h index e7abbb2dd89..747e6523e4b 100644 --- a/llvm/lib/CodeGen/MIRParser/MILexer.h +++ b/llvm/lib/CodeGen/MIRParser/MILexer.h @@ -57,6 +57,7 @@ struct MIToken { kw_debug_use, kw_frame_setup, kw_debug_location, + kw_cfi_same_value, kw_cfi_offset, kw_cfi_def_cfa_register, kw_cfi_def_cfa_offset, diff --git a/llvm/lib/CodeGen/MIRParser/MIParser.cpp b/llvm/lib/CodeGen/MIRParser/MIParser.cpp index b27a55b705d..c6383720e23 100644 --- a/llvm/lib/CodeGen/MIRParser/MIParser.cpp +++ b/llvm/lib/CodeGen/MIRParser/MIParser.cpp @@ -1093,6 +1093,12 @@ bool MIParser::parseCFIOperand(MachineOperand &Dest) { unsigned Reg; unsigned CFIIndex; switch (Kind) { + case MIToken::kw_cfi_same_value: + if (parseCFIRegister(Reg)) + return true; + CFIIndex = + MMI.addFrameInst(MCCFIInstruction::createSameValue(nullptr, Reg)); + break; case MIToken::kw_cfi_offset: if (parseCFIRegister(Reg) || expectAndConsume(MIToken::comma) || parseCFIOffset(Offset)) @@ -1273,6 +1279,7 @@ bool MIParser::parseMachineOperand(MachineOperand &Dest) { return parseExternalSymbolOperand(Dest); case MIToken::exclaim: return parseMetadataOperand(Dest); + case MIToken::kw_cfi_same_value: case MIToken::kw_cfi_offset: case MIToken::kw_cfi_def_cfa_register: case MIToken::kw_cfi_def_cfa_offset: diff --git a/llvm/lib/CodeGen/MIRPrinter.cpp b/llvm/lib/CodeGen/MIRPrinter.cpp index d70b5c412f1..248db52790e 100644 --- a/llvm/lib/CodeGen/MIRPrinter.cpp +++ b/llvm/lib/CodeGen/MIRPrinter.cpp @@ -794,6 +794,12 @@ static void printCFIRegister(unsigned DwarfReg, raw_ostream &OS, void MIPrinter::print(const MCCFIInstruction &CFI, const TargetRegisterInfo *TRI) { switch (CFI.getOperation()) { + case MCCFIInstruction::OpSameValue: + OS << ".cfi_same_value "; + if (CFI.getLabel()) + OS << "<mcsymbol> "; + printCFIRegister(CFI.getRegister(), OS, TRI); + break; case MCCFIInstruction::OpOffset: OS << ".cfi_offset "; if (CFI.getLabel()) |