From: Reid Kleckner Date: Thu, 31 Jul 2014 23:26:35 +0000 (+0000) Subject: X86 MC: Don't crash on empty memory operand parens X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b7e2f6015ae8fe44580ed242a0bca9c0001612ac;p=platform%2Fupstream%2Fllvm.git X86 MC: Don't crash on empty memory operand parens Instead, create an absolute memory operand. Fixes PR20504. llvm-svn: 214457 --- diff --git a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp index 78b56b74..85de47b 100644 --- a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -1880,8 +1880,10 @@ std::unique_ptr X86AsmParser::ParseMemOperand(unsigned SegReg, return nullptr; } - return X86Operand::CreateMem(SegReg, Disp, BaseReg, IndexReg, Scale, - MemStart, MemEnd); + if (SegReg || BaseReg || IndexReg) + return X86Operand::CreateMem(SegReg, Disp, BaseReg, IndexReg, Scale, + MemStart, MemEnd); + return X86Operand::CreateMem(Disp, MemStart, MemEnd); } bool X86AsmParser::ParseInstruction(ParseInstructionInfo &Info, StringRef Name, diff --git a/llvm/test/MC/X86/x86_operands.s b/llvm/test/MC/X86/x86_operands.s index b34713d..2258a95 100644 --- a/llvm/test/MC/X86/x86_operands.s +++ b/llvm/test/MC/X86/x86_operands.s @@ -52,6 +52,11 @@ call *%eax # CHECK: calll *4(%eax) call *4(%eax) +foo: + calll foo() +# CHECK: calll foo{{$}} + calll foo(,) +# CHECK: calll foo{{$}} # CHECK: movl %gs:8, %eax movl %gs:8, %eax