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 | 618d0ed4bc0b68d87f86eace0cd6b9c05329dfc7 (patch) | |
tree | a9c4952c4ddcfab3caf7afdead3afad6db45f91d /lib | |
parent | debbef20ee27e7808a81f261fd9da6c87c6179f0 (diff) | |
download | external_llvm-618d0ed4bc0b68d87f86eace0cd6b9c05329dfc7.zip external_llvm-618d0ed4bc0b68d87f86eace0cd6b9c05329dfc7.tar.gz external_llvm-618d0ed4bc0b68d87f86eace0cd6b9c05329dfc7.tar.bz2 |
fix an x86-64 encoding bug Daniel found.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98855 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Target/X86/X86MCCodeEmitter.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/Target/X86/X86MCCodeEmitter.cpp b/lib/Target/X86/X86MCCodeEmitter.cpp index 4547a3a..f533b15 100644 --- a/lib/Target/X86/X86MCCodeEmitter.cpp +++ b/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())) { |