Use the operand vector instead so inline assembly can be validated too
authorDavid Majnemer <david.majnemer@gmail.com>
Wed, 14 Jan 2015 06:14:36 +0000 (06:14 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Wed, 14 Jan 2015 06:14:36 +0000 (06:14 +0000)
The buildbots got upset after r225941, this should hopefully fix things.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225954 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/AsmParser/X86AsmParser.cpp

index 02d48470615b1d01efaac72d57adcf87b1522f21..d743aa6ef33343302de45ddbcfdd60383b5b8dac 100644 (file)
@@ -2277,11 +2277,11 @@ bool X86AsmParser::validateInstruction(MCInst &Inst, const OperandVector &Ops) {
   switch (Inst.getOpcode()) {
   default: return true;
   case X86::INT:
-    if (Inst.getNumOperands() == 0)
-      return true;
-    assert(Inst.getOperand(0).isImm() && "expected immediate");
-    if (Inst.getOperand(0).getImm() > 255) {
-      Error(Ops[1]->getStartLoc(), "interrupt vector must be in range [0-255]");
+    X86Operand &Op = static_cast<X86Operand &>(*Ops[1]);
+    assert(Op.isImm() && "expected immediate");
+    int64_t Res;
+    if (!Op.getImm()->EvaluateAsAbsolute(Res) || Res > 255) {
+      Error(Op.getStartLoc(), "interrupt vector must be in range [0-255]");
       return false;
     }
     return true;