MC/X86: Warn on scale factors > 1 without index register, instead of erroring,

for 'as' compatibility.

llvm-svn: 111945
This commit is contained in:
Daniel Dunbar 2010-08-24 19:13:38 +00:00
parent 0c3eb7ca50
commit 75e77b0063
2 changed files with 12 additions and 4 deletions

View File

@ -588,7 +588,7 @@ X86Operand *X86ATTAsmParser::ParseMemOperand(unsigned SegReg, SMLoc MemStart) {
}
}
} else if (getLexer().isNot(AsmToken::RParen)) {
// Otherwise we have the unsupported form of a scale amount without an
// A scale amount without an index is ignored.
// index.
SMLoc Loc = Parser.getTok().getLoc();
@ -596,8 +596,9 @@ X86Operand *X86ATTAsmParser::ParseMemOperand(unsigned SegReg, SMLoc MemStart) {
if (getParser().ParseAbsoluteExpression(Value))
return 0;
Error(Loc, "cannot have scale factor without index register");
return 0;
if (Value != 1)
Warning(Loc, "scale factor without index register is ignored");
Scale = 1;
}
}

View File

@ -1,4 +1,6 @@
// RUN: llvm-mc -triple x86_64-unknown-unknown %s | FileCheck %s
// RUN: llvm-mc -triple x86_64-unknown-unknown %s > %t 2> %t.err
// RUN: FileCheck < %t %s
// RUN: FileCheck --check-prefix=CHECK-STDERR < %t.err %s
// CHECK: subb %al, %al
subb %al, %al
@ -151,3 +153,8 @@ fadd %st(7)
// CHECK: int3
INT3
// Allow scale factor without index register.
// CHECK: movaps %xmm3, (%esi)
// CHECK-STDERR: warning: scale factor without index register is ignored
movaps %xmm3, (%esi, 2)