summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86CodeEmitter.cpp
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2009-05-12 00:07:35 +0000
committerEvan Cheng <evan.cheng@apple.com>2009-05-12 00:07:35 +0000
commit55173b7646e0e4308e1579e21d5d786e1678765d (patch)
tree90fe66883da3f70684180895b127b2339a6798ce /llvm/lib/Target/X86/X86CodeEmitter.cpp
parent6c60dbb3cb3fe8975dbc1cf29662f40dca1c1130 (diff)
downloadbcm5719-llvm-55173b7646e0e4308e1579e21d5d786e1678765d.tar.gz
bcm5719-llvm-55173b7646e0e4308e1579e21d5d786e1678765d.zip
Avoid unneeded SIB byte encoding. Patch by Zoltan Varga.
llvm-svn: 71520
Diffstat (limited to 'llvm/lib/Target/X86/X86CodeEmitter.cpp')
-rw-r--r--llvm/lib/Target/X86/X86CodeEmitter.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/X86CodeEmitter.cpp b/llvm/lib/Target/X86/X86CodeEmitter.cpp
index c21eacc9a4c..63bf18d157f 100644
--- a/llvm/lib/Target/X86/X86CodeEmitter.cpp
+++ b/llvm/lib/Target/X86/X86CodeEmitter.cpp
@@ -338,7 +338,8 @@ void Emitter::emitMemModRMByte(const MachineInstr &MI,
unsigned BaseReg = Base.getReg();
// Is a SIB byte needed?
- if ((!Is64BitMode || DispForReloc) && IndexReg.getReg() == 0 &&
+ if ((!Is64BitMode || DispForReloc || BaseReg != 0) &&
+ IndexReg.getReg() == 0 &&
(BaseReg == 0 || getX86RegNum(BaseReg) != N86::ESP)) {
if (BaseReg == 0) { // Just a displacement?
// Emit special case [disp32] encoding
OpenPOWER on IntegriCloud