summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2012-01-13 19:28:58 +0000
committerDevang Patel <dpatel@apple.com>2012-01-13 19:28:58 +0000
commit85d5aaecd03ca4bc6e406ee88c72a4ba8878bb2b (patch)
tree4c0bbdcac909d54b11aeb12323773b0ae5a55a9a /lib
parent5dab2bf2932cd8efb7db70ee41473258328e79cb (diff)
downloadllvm-85d5aaecd03ca4bc6e406ee88c72a4ba8878bb2b.tar.gz
llvm-85d5aaecd03ca4bc6e406ee88c72a4ba8878bb2b.tar.bz2
llvm-85d5aaecd03ca4bc6e406ee88c72a4ba8878bb2b.tar.xz
Revert r148131, it was committed before it was ready.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148134 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Target/X86/AsmParser/X86AsmParser.cpp86
1 files changed, 40 insertions, 46 deletions
diff --git a/lib/Target/X86/AsmParser/X86AsmParser.cpp b/lib/Target/X86/AsmParser/X86AsmParser.cpp
index 0a8f00d193..ce3831f2de 100644
--- a/lib/Target/X86/AsmParser/X86AsmParser.cpp
+++ b/lib/Target/X86/AsmParser/X86AsmParser.cpp
@@ -48,7 +48,6 @@ private:
X86Operand *ParseOperand();
X86Operand *ParseATTOperand();
X86Operand *ParseIntelOperand();
- X86Operand *ParseIntelMemOperand(StringRef TokenString, unsigned Size);
X86Operand *ParseMemOperand(unsigned SegReg, SMLoc StartLoc);
bool ParseDirectiveWord(unsigned Size, SMLoc L);
@@ -574,63 +573,58 @@ static bool isIntelMemOperand(StringRef OpStr, unsigned &Size) {
return Size != 0;
}
-/// ParseIntelMemOperand - Parse intel style memory operand.
-X86Operand *X86AsmParser::ParseIntelMemOperand(StringRef TokenString,
- unsigned Size) {
- SMLoc Start = Parser.getTok().getLoc(), End;
- unsigned SegReg = 0, BaseReg = 0, IndexReg = 0, Scale = 1;
- Parser.Lex();
- if (TokenString == "PTR")
- Parser.Lex();
- else {
- Error(Start, "unexpected token!");
- return 0;
- }
-
- if (TokenString == "[")
- Parser.Lex();
- else {
- Error(Start, "unexpected token!");
- return 0;
- }
-
- SMLoc LParenLoc = Parser.getTok().getLoc();
- BaseReg = getIntelRegisterOperand(TokenString);
- if (BaseReg == 0) {
- Error(LParenLoc, "unexpected token!");
- return 0;
- }
- Parser.Lex();
- const MCExpr *Disp = MCConstantExpr::Create(0, getParser().getContext());
- SMLoc ExprEnd;
- if (getParser().ParseExpression(Disp, ExprEnd)) return 0;
- End = Parser.getTok().getLoc();
- if (TokenString == "]")
- Parser.Lex();
- if (BaseReg == 0) {
- Error(End, "unexpected token!");
- return 0;
- }
- return X86Operand::CreateMem(SegReg, Disp, BaseReg, IndexReg, Scale,
- Start, End, Size);
-}
-
X86Operand *X86AsmParser::ParseIntelOperand() {
- StringRef TokenString = Parser.getTok().getString();
+ const AsmToken &Tok = Parser.getTok();
SMLoc Start = Parser.getTok().getLoc(), End;
// register
- if(unsigned RegNo = getIntelRegisterOperand(TokenString)) {
+ if(unsigned RegNo = getIntelRegisterOperand(Tok.getString())) {
Parser.Lex();
End = Parser.getTok().getLoc();
return X86Operand::CreateReg(RegNo, Start, End);
}
// mem operand
+ unsigned SegReg = 0, BaseReg = 0, IndexReg = 0, Scale = 1;
+ StringRef OpStr = Tok.getString();
unsigned Size = 0;
- if (isIntelMemOperand(TokenString, Size))
- ParseIntelMemOperand(TokenString, Size);
+ if (isIntelMemOperand(OpStr, Size)) {
+ Parser.Lex();
+ if (Tok.getString() == "PTR")
+ Parser.Lex();
+ else {
+ Error(Start, "unexpected token!");
+ return 0;
+ }
+
+ if (Tok.getString() == "[")
+ Parser.Lex();
+ else {
+ Error(Start, "unexpected token!");
+ return 0;
+ }
+
+ SMLoc LParenLoc = Parser.getTok().getLoc();
+ BaseReg = getIntelRegisterOperand(Tok.getString());
+ if (BaseReg == 0) {
+ Error(LParenLoc, "unexpected token!");
+ return 0;
+ }
+ Parser.Lex();
+ const MCExpr *Disp = MCConstantExpr::Create(0, getParser().getContext());
+ SMLoc ExprEnd;
+ if (getParser().ParseExpression(Disp, ExprEnd)) return 0;
+ End = Parser.getTok().getLoc();
+ if (Tok.getString() == "]")
+ Parser.Lex();
+ if (BaseReg == 0) {
+ Error(End, "unexpected token!");
+ return 0;
+ }
+ return X86Operand::CreateMem(SegReg, Disp, BaseReg, IndexReg, Scale,
+ Start, End, Size);
+ }
// immediate.
const MCExpr *Val;