summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@gmail.com>2014-01-16 07:57:45 +0000
committerCraig Topper <craig.topper@gmail.com>2014-01-16 07:57:45 +0000
commitc3ab5de57c3a4c3ef00e83ad92a2df8c9ddf7e4f (patch)
tree39beb4d871015399730d1c7321866a4443310d9f /lib
parent85026d937558b1ab5f8e84ee756ed925459085e2 (diff)
downloadllvm-c3ab5de57c3a4c3ef00e83ad92a2df8c9ddf7e4f.tar.gz
llvm-c3ab5de57c3a4c3ef00e83ad92a2df8c9ddf7e4f.tar.bz2
llvm-c3ab5de57c3a4c3ef00e83ad92a2df8c9ddf7e4f.tar.xz
Copy segment register when optimizing to MOV8ao8/MOV16ao16/MOV32ao32.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199365 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Target/X86/X86MCInstLower.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/Target/X86/X86MCInstLower.cpp b/lib/Target/X86/X86MCInstLower.cpp
index 8b4195f0ee..8d1348012e 100644
--- a/lib/Target/X86/X86MCInstLower.cpp
+++ b/lib/Target/X86/X86MCInstLower.cpp
@@ -323,15 +323,16 @@ static void SimplifyShortMoveForm(X86AsmPrinter &Printer, MCInst &Inst,
if (Absolute &&
(Inst.getOperand(AddrBase + 0).getReg() != 0 ||
Inst.getOperand(AddrBase + 2).getReg() != 0 ||
- Inst.getOperand(AddrBase + 4).getReg() != 0 ||
Inst.getOperand(AddrBase + 1).getImm() != 1))
return;
// If so, rewrite the instruction.
MCOperand Saved = Inst.getOperand(AddrOp);
+ MCOperand Seg = Inst.getOperand(AddrBase + 4);
Inst = MCInst();
Inst.setOpcode(Opcode);
Inst.addOperand(Saved);
+ Inst.addOperand(Seg);
}
static unsigned getRetOpcode(const X86Subtarget &Subtarget)