summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r--llvm/lib/CodeGen/MIRParser/MILexer.cpp1
-rw-r--r--llvm/lib/CodeGen/MIRParser/MILexer.h3
-rw-r--r--llvm/lib/CodeGen/MIRParser/MIParser.cpp6
-rw-r--r--llvm/lib/CodeGen/MIRPrinter.cpp2
4 files changed, 10 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/MIRParser/MILexer.cpp b/llvm/lib/CodeGen/MIRParser/MILexer.cpp
index 5134da9d455..13fad33d980 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("early-clobber", MIToken::kw_early_clobber)
.Case("debug-use", MIToken::kw_debug_use)
.Case("frame-setup", MIToken::kw_frame_setup)
.Case("debug-location", MIToken::kw_debug_location)
diff --git a/llvm/lib/CodeGen/MIRParser/MILexer.h b/llvm/lib/CodeGen/MIRParser/MILexer.h
index 9a403496351..14eb17aa9da 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_early_clobber,
kw_debug_use,
kw_frame_setup,
kw_debug_location,
@@ -120,7 +121,7 @@ public:
bool isRegisterFlag() const {
return Kind == kw_implicit || Kind == kw_implicit_define ||
Kind == kw_dead || Kind == kw_killed || Kind == kw_undef ||
- Kind == kw_debug_use;
+ Kind == kw_early_clobber || 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 7b9e45ea7f5..7f42013e613 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_early_clobber:
+ Flags |= RegState::EarlyClobber;
+ break;
case MIToken::kw_debug_use:
Flags |= RegState::Debug;
break;
@@ -535,7 +538,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, Flags & RegState::Debug);
+ Flags & RegState::EarlyClobber, SubReg, Flags & RegState::Debug);
return false;
}
@@ -885,6 +888,7 @@ bool MIParser::parseMachineOperand(MachineOperand &Dest) {
case MIToken::kw_dead:
case MIToken::kw_killed:
case MIToken::kw_undef:
+ case MIToken::kw_early_clobber:
case MIToken::kw_debug_use:
case MIToken::underscore:
case MIToken::NamedRegister:
diff --git a/llvm/lib/CodeGen/MIRPrinter.cpp b/llvm/lib/CodeGen/MIRPrinter.cpp
index 2eb5cbfc6ce..bba9518c299 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.isEarlyClobber())
+ OS << "early-clobber ";
if (Op.isDebug())
OS << "debug-use ";
printReg(Op.getReg(), OS, TRI);
OpenPOWER on IntegriCloud