Intel syntax: Robustify parsing of memory operand's displacement experssion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148737 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Devang Patel
2012-01-23 22:35:25 +00:00
parent c1bddefc56
commit f2d213745e
2 changed files with 11 additions and 4 deletions

View File

@@ -655,8 +655,13 @@ X86Operand *X86AsmParser::ParseIntelBracExpression(unsigned SegReg,
Disp = isPlus ? ValExpr : MCConstantExpr::Create(0-Val, getContext());
} else
return ErrorOperand(PlusLoc, "unexpected token after +");
} else if (getLexer().is(AsmToken::Identifier))
ParseRegister(IndexReg, Start, End);
} else if (getLexer().is(AsmToken::Identifier)) {
// This could be an index registor or a displacement expression.
End = Parser.getTok().getLoc();
if (!IndexReg)
ParseRegister(IndexReg, Start, End);
else if (getParser().ParseExpression(Disp, End)) return 0;
}
}
if (getLexer().isNot(AsmToken::RBrac))