summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorAlex Lorenz <arphaman@gmail.com>2015-08-05 17:41:17 +0000
committerAlex Lorenz <arphaman@gmail.com>2015-08-05 17:41:17 +0000
commit9075258b6a8fdb338d5110e56c37b9e6733d8a32 (patch)
tree097159fb832c41be8575cfac742841a87a41d193 /llvm/lib/CodeGen
parentf2a00e9d2a433bf0d4a9a3bee38d18771c3b75a0 (diff)
downloadbcm5719-llvm-9075258b6a8fdb338d5110e56c37b9e6733d8a32.tar.gz
bcm5719-llvm-9075258b6a8fdb338d5110e56c37b9e6733d8a32.zip
MIR Serialization: Serialize the 'debug-use' register operand flag.
llvm-svn: 244071
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r--llvm/lib/CodeGen/MIRParser/MILexer.cpp1
-rw-r--r--llvm/lib/CodeGen/MIRParser/MILexer.h4
-rw-r--r--llvm/lib/CodeGen/MIRParser/MIParser.cpp6
-rw-r--r--llvm/lib/CodeGen/MIRPrinter.cpp2
4 files changed, 11 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/MIRParser/MILexer.cpp b/llvm/lib/CodeGen/MIRParser/MILexer.cpp
index 624ef664620..5134da9d455 100644
--- a/llvm/lib/CodeGen/MIRParser/MILexer.cpp
+++ b/llvm/lib/CodeGen/MIRParser/MILexer.cpp
@@ -146,6 +146,7 @@ static MIToken::TokenKind getIdentifierKind(StringRef Identifier) {
.Case("dead", MIToken::kw_dead)
.Case("killed", MIToken::kw_killed)
.Case("undef", MIToken::kw_undef)
+ .Case("debug-use", MIToken::kw_debug_use)
.Case("frame-setup", MIToken::kw_frame_setup)
.Case("debug-location", MIToken::kw_debug_location)
.Case(".cfi_offset", MIToken::kw_cfi_offset)
diff --git a/llvm/lib/CodeGen/MIRParser/MILexer.h b/llvm/lib/CodeGen/MIRParser/MILexer.h
index f72897a5217..9a403496351 100644
--- a/llvm/lib/CodeGen/MIRParser/MILexer.h
+++ b/llvm/lib/CodeGen/MIRParser/MILexer.h
@@ -47,6 +47,7 @@ struct MIToken {
kw_dead,
kw_killed,
kw_undef,
+ kw_debug_use,
kw_frame_setup,
kw_debug_location,
kw_cfi_offset,
@@ -118,7 +119,8 @@ public:
bool isRegisterFlag() const {
return Kind == kw_implicit || Kind == kw_implicit_define ||
- Kind == kw_dead || Kind == kw_killed || Kind == kw_undef;
+ Kind == kw_dead || Kind == kw_killed || Kind == kw_undef ||
+ Kind == kw_debug_use;
}
bool isMemoryOperandFlag() const { return Kind == kw_volatile; }
diff --git a/llvm/lib/CodeGen/MIRParser/MIParser.cpp b/llvm/lib/CodeGen/MIRParser/MIParser.cpp
index 149e4dd1b61..7b9e45ea7f5 100644
--- a/llvm/lib/CodeGen/MIRParser/MIParser.cpp
+++ b/llvm/lib/CodeGen/MIRParser/MIParser.cpp
@@ -490,6 +490,9 @@ bool MIParser::parseRegisterFlag(unsigned &Flags) {
case MIToken::kw_undef:
Flags |= RegState::Undef;
break;
+ case MIToken::kw_debug_use:
+ Flags |= RegState::Debug;
+ break;
// TODO: report an error when we specify the same flag more than once.
// TODO: parse the other register flags.
default:
@@ -532,7 +535,7 @@ bool MIParser::parseRegisterOperand(MachineOperand &Dest, bool IsDef) {
Dest = MachineOperand::CreateReg(
Reg, Flags & RegState::Define, Flags & RegState::Implicit,
Flags & RegState::Kill, Flags & RegState::Dead, Flags & RegState::Undef,
- /*isEarlyClobber=*/false, SubReg);
+ /*isEarlyClobber=*/false, SubReg, Flags & RegState::Debug);
return false;
}
@@ -882,6 +885,7 @@ bool MIParser::parseMachineOperand(MachineOperand &Dest) {
case MIToken::kw_dead:
case MIToken::kw_killed:
case MIToken::kw_undef:
+ case MIToken::kw_debug_use:
case MIToken::underscore:
case MIToken::NamedRegister:
case MIToken::VirtualRegister:
diff --git a/llvm/lib/CodeGen/MIRPrinter.cpp b/llvm/lib/CodeGen/MIRPrinter.cpp
index fb5a36ce9a7..2eb5cbfc6ce 100644
--- a/llvm/lib/CodeGen/MIRPrinter.cpp
+++ b/llvm/lib/CodeGen/MIRPrinter.cpp
@@ -529,6 +529,8 @@ void MIPrinter::print(const MachineOperand &Op, const TargetRegisterInfo *TRI) {
OS << "killed ";
if (Op.isUndef())
OS << "undef ";
+ if (Op.isDebug())
+ OS << "debug-use ";
printReg(Op.getReg(), OS, TRI);
// Print the sub register.
if (Op.getSubReg() != 0)
OpenPOWER on IntegriCloud