summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/CodeGen/MIRParser/MIParser.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/MIRParser/MIParser.cpp b/llvm/lib/CodeGen/MIRParser/MIParser.cpp
index c71cdbb6d6f..af599a5cc3b 100644
--- a/llvm/lib/CodeGen/MIRParser/MIParser.cpp
+++ b/llvm/lib/CodeGen/MIRParser/MIParser.cpp
@@ -123,6 +123,7 @@ public:
bool parseTargetIndexOperand(MachineOperand &Dest);
bool parseMachineOperand(MachineOperand &Dest);
bool parseMachineOperandAndTargetFlags(MachineOperand &Dest);
+ bool parseOffset(int64_t &Offset);
bool parseOperandsOffset(MachineOperand &Op);
bool parseIRValue(Value *&V);
bool parseMemoryOperandFlag(unsigned &Flags);
@@ -1014,7 +1015,7 @@ bool MIParser::parseMachineOperandAndTargetFlags(MachineOperand &Dest) {
return false;
}
-bool MIParser::parseOperandsOffset(MachineOperand &Op) {
+bool MIParser::parseOffset(int64_t &Offset) {
if (Token.isNot(MIToken::plus) && Token.isNot(MIToken::minus))
return false;
StringRef Sign = Token.range();
@@ -1024,10 +1025,17 @@ bool MIParser::parseOperandsOffset(MachineOperand &Op) {
return error("expected an integer literal after '" + Sign + "'");
if (Token.integerValue().getMinSignedBits() > 64)
return error("expected 64-bit integer (too large)");
- int64_t Offset = Token.integerValue().getExtValue();
+ Offset = Token.integerValue().getExtValue();
if (IsNegative)
Offset = -Offset;
lex();
+ return false;
+}
+
+bool MIParser::parseOperandsOffset(MachineOperand &Op) {
+ int64_t Offset = 0;
+ if (parseOffset(Offset))
+ return true;
Op.setOffset(Offset);
return false;
}
OpenPOWER on IntegriCloud