diff options
| author | Chris Lattner <sabre@nondot.org> | 2010-03-18 20:04:36 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2010-03-18 20:04:36 +0000 |
| commit | b3f659c8c822474aaf188cada7b4391f0503e13f (patch) | |
| tree | 353c5429538e626c4994a6980f267adb81e47364 /llvm/lib/Target/X86/X86MCCodeEmitter.cpp | |
| parent | 17323bb7cfb8a75adaf0e686efcf5a5629cbe2da (diff) | |
| download | bcm5719-llvm-b3f659c8c822474aaf188cada7b4391f0503e13f.tar.gz bcm5719-llvm-b3f659c8c822474aaf188cada7b4391f0503e13f.zip | |
fix an x86-64 encoding bug Daniel found.
llvm-svn: 98855
Diffstat (limited to 'llvm/lib/Target/X86/X86MCCodeEmitter.cpp')
| -rw-r--r-- | llvm/lib/Target/X86/X86MCCodeEmitter.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/X86MCCodeEmitter.cpp b/llvm/lib/Target/X86/X86MCCodeEmitter.cpp index 4547a3a3313..f533b1572c6 100644 --- a/llvm/lib/Target/X86/X86MCCodeEmitter.cpp +++ b/llvm/lib/Target/X86/X86MCCodeEmitter.cpp @@ -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())) { |

