diff options
author | Devang Patel <dpatel@apple.com> | 2012-01-27 19:48:28 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2012-01-27 19:48:28 +0000 |
commit | 63fe5697f4d9f760fef8ec828d535deec296d119 (patch) | |
tree | 703559d8674a70077d1ee2a5320293f934e344fd /llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp | |
parent | 9620f466af1470d57411bf83dc82a7c1b5a22465 (diff) | |
download | bcm5719-llvm-63fe5697f4d9f760fef8ec828d535deec296d119.tar.gz bcm5719-llvm-63fe5697f4d9f760fef8ec828d535deec296d119.zip |
Intel Syntax: Parse mem operand with seg reg. QWORD PTR FS:[320]
llvm-svn: 149142
Diffstat (limited to 'llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp')
-rw-r--r-- | llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp index 3afdaf2d754..266f521b70b 100644 --- a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -610,7 +610,6 @@ X86Operand *X86AsmParser::ParseIntelBracExpression(unsigned SegReg, // Parse BaseReg if (ParseRegister(BaseReg, Start, End)) { // Handle '[' 'symbol' ']' - const MCExpr *Disp = MCConstantExpr::Create(0, getParser().getContext()); if (getParser().ParseExpression(Disp, End)) return 0; if (getLexer().isNot(AsmToken::RBrac)) return ErrorOperand(Start, "Expected ']' token!"); @@ -624,8 +623,11 @@ X86Operand *X86AsmParser::ParseIntelBracExpression(unsigned SegReg, if (getLexer().is(AsmToken::RBrac)) { // Handle '[' number ']' Parser.Lex(); - return X86Operand::CreateMem(MCConstantExpr::Create(Val, getContext()), - Start, End, Size); + const MCExpr *Disp = MCConstantExpr::Create(Val, getContext()); + if (SegReg) + return X86Operand::CreateMem(SegReg, Disp, 0, 0, Scale, + Start, End, Size); + return X86Operand::CreateMem(Disp, Start, End, Size); } else if (getLexer().is(AsmToken::Star)) { // Handle '[' Scale*IndexReg ']' Parser.Lex(); |