diff --git a/lib/Target/X86/AsmParser/X86AsmParser.cpp b/lib/Target/X86/AsmParser/X86AsmParser.cpp index d91830f5667..e05b50c57e3 100644 --- a/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -876,8 +876,10 @@ X86Operand *X86AsmParser::ParseMemOperand(unsigned SegReg, SMLoc MemStart) { SMLoc Loc = Parser.getTok().getLoc(); int64_t ScaleVal; - if (getParser().ParseAbsoluteExpression(ScaleVal)) + if (getParser().ParseAbsoluteExpression(ScaleVal)){ + Error(Loc, "expected scale expression"); return 0; + } // Validate the scale amount. if (ScaleVal != 1 && ScaleVal != 2 && ScaleVal != 4 && ScaleVal != 8){ diff --git a/test/MC/X86/x86_errors.s b/test/MC/X86/x86_errors.s index 8de7444ea6c..8f2e1af40b5 100644 --- a/test/MC/X86/x86_errors.s +++ b/test/MC/X86/x86_errors.s @@ -20,3 +20,7 @@ movl 0(%rax), 0(%edx) // error: invalid operand for instruction // 32: error: instruction requires a CPU feature not currently enabled sysexitq + +// rdar://10710167 +// 64: error: expected scale expression +lea (%rsp, %rbp, $4), %rax