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.cpp23
-rw-r--r--llvm/lib/CodeGen/TargetRegisterInfo.cpp6
2 files changed, 19 insertions, 10 deletions
diff --git a/llvm/lib/CodeGen/MIRParser/MILexer.cpp b/llvm/lib/CodeGen/MIRParser/MILexer.cpp
index 9f41660684a..7104c020912 100644
--- a/llvm/lib/CodeGen/MIRParser/MILexer.cpp
+++ b/llvm/lib/CodeGen/MIRParser/MILexer.cpp
@@ -410,17 +410,26 @@ static bool isRegisterChar(char C) {
return isIdentifierChar(C) && C != '.';
}
-static Cursor maybeLexRegister(Cursor C, MIToken &Token) {
- if (C.peek() != '%')
+static Cursor maybeLexRegister(Cursor C, MIToken &Token,
+ ErrorCallbackType ErrorCallback) {
+ if (C.peek() != '%' && C.peek() != '$')
return None;
- if (isdigit(C.peek(1)))
- return lexVirtualRegister(C, Token);
+
+ if (C.peek() == '%') {
+ if (isdigit(C.peek(1)))
+ return lexVirtualRegister(C, Token);
+
+ // ErrorCallback(Token.location(), "Named vregs are not yet supported.");
+ return None;
+ }
+
+ assert(C.peek() == '$');
auto Range = C;
- C.advance(); // Skip '%'
+ C.advance(); // Skip '$'
while (isRegisterChar(C.peek()))
C.advance();
Token.reset(MIToken::NamedRegister, Range.upto(C))
- .setStringValue(Range.upto(C).drop_front(1)); // Drop the '%'
+ .setStringValue(Range.upto(C).drop_front(1)); // Drop the '$'
return C;
}
@@ -642,7 +651,7 @@ StringRef llvm::lexMIToken(StringRef Source, MIToken &Token,
return R.remaining();
if (Cursor R = maybeLexIRValue(C, Token, ErrorCallback))
return R.remaining();
- if (Cursor R = maybeLexRegister(C, Token))
+ if (Cursor R = maybeLexRegister(C, Token, ErrorCallback))
return R.remaining();
if (Cursor R = maybeLexGlobalValue(C, Token, ErrorCallback))
return R.remaining();
diff --git a/llvm/lib/CodeGen/TargetRegisterInfo.cpp b/llvm/lib/CodeGen/TargetRegisterInfo.cpp
index f03c3b8300f..d6064ca6b6f 100644
--- a/llvm/lib/CodeGen/TargetRegisterInfo.cpp
+++ b/llvm/lib/CodeGen/TargetRegisterInfo.cpp
@@ -89,15 +89,15 @@ Printable printReg(unsigned Reg, const TargetRegisterInfo *TRI,
unsigned SubIdx) {
return Printable([Reg, TRI, SubIdx](raw_ostream &OS) {
if (!Reg)
- OS << "%noreg";
+ OS << "$noreg";
else if (TargetRegisterInfo::isStackSlot(Reg))
OS << "SS#" << TargetRegisterInfo::stackSlot2Index(Reg);
else if (TargetRegisterInfo::isVirtualRegister(Reg))
OS << '%' << TargetRegisterInfo::virtReg2Index(Reg);
else if (!TRI)
- OS << '%' << "physreg" << Reg;
+ OS << '$' << "physreg" << Reg;
else if (Reg < TRI->getNumRegs()) {
- OS << '%';
+ OS << '$';
printLowerCase(TRI->getName(Reg), OS);
} else
llvm_unreachable("Register kind is unsupported.");
OpenPOWER on IntegriCloud