diff options
author | Devang Patel <dpatel@apple.com> | 2012-01-13 19:28:58 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2012-01-13 19:28:58 +0000 |
commit | 85d5aaecd03ca4bc6e406ee88c72a4ba8878bb2b (patch) | |
tree | 4c0bbdcac909d54b11aeb12323773b0ae5a55a9a /lib | |
parent | 5dab2bf2932cd8efb7db70ee41473258328e79cb (diff) | |
download | external_llvm-85d5aaecd03ca4bc6e406ee88c72a4ba8878bb2b.zip external_llvm-85d5aaecd03ca4bc6e406ee88c72a4ba8878bb2b.tar.gz external_llvm-85d5aaecd03ca4bc6e406ee88c72a4ba8878bb2b.tar.bz2 |
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.cpp | 86 |
1 files changed, 40 insertions, 46 deletions
diff --git a/lib/Target/X86/AsmParser/X86AsmParser.cpp b/lib/Target/X86/AsmParser/X86AsmParser.cpp index 0a8f00d..ce3831f 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; |