mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-18 18:42:46 +02:00
fix an x86-64 encoding bug Daniel found.
llvm-svn: 98855
This commit is contained in:
parent
6a86068718
commit
bf3e096258
@ -278,7 +278,10 @@ void X86MCCodeEmitter::EmitMemModRMByte(const MCInst &MI, unsigned Op,
|
||||
// Emit the normal disp32 encoding.
|
||||
EmitByte(ModRMByte(2, RegOpcodeField, 4), CurByte, OS);
|
||||
ForceDisp32 = true;
|
||||
} else if (Disp.getImm() == 0 && BaseReg != X86::EBP) {
|
||||
} else if (Disp.getImm() == 0 &&
|
||||
// Base reg can't be anything that ends up with '5' as the base
|
||||
// reg, it is the magic [*] nomenclature that indicates no base.
|
||||
BaseRegNo != N86::EBP) {
|
||||
// Emit no displacement ModR/M byte
|
||||
EmitByte(ModRMByte(0, RegOpcodeField, 4), CurByte, OS);
|
||||
} else if (isDisp8(Disp.getImm())) {
|
||||
|
@ -35,3 +35,7 @@ addq $-424, %rax
|
||||
// CHECK: fixup A - offset: 3, value: _foo@GOTPCREL, kind: reloc_riprel_4byte_movq_load
|
||||
movq _foo@GOTPCREL(%rip), %rax
|
||||
|
||||
|
||||
// CHECK: movq (%r13,%rax,8), %r13
|
||||
// CHECK: encoding: [0x4d,0x8b,0x6c,0xc5,0x00]
|
||||
movq 0x00(%r13,%rax,8),%r13
|
||||
|
Loading…
Reference in New Issue
Block a user