diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Target/X86/X86ISelDAGToDAG.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/Target/X86/X86ISelDAGToDAG.cpp b/lib/Target/X86/X86ISelDAGToDAG.cpp index 50c8f5b870..b0134152ff 100644 --- a/lib/Target/X86/X86ISelDAGToDAG.cpp +++ b/lib/Target/X86/X86ISelDAGToDAG.cpp @@ -989,8 +989,11 @@ DOUT << "AlreadySelected " << AlreadySelected << "\n"; SDValue(C2, 0), SDValue(C1, 0)); SDValue NewAND = CurDAG->getNode(ISD::AND, N.getValueType(), Shift.getOperand(0), NewANDMask); + SDValue NewSHIFT = CurDAG->getNode(ISD::SHL, N.getValueType(), + NewAND, SDValue(C1, 0)); NewANDMask.getNode()->setNodeId(Shift.getNode()->getNodeId()); NewAND.getNode()->setNodeId(N.getNode()->getNodeId()); + CurDAG->ReplaceAllUsesWith(N, NewSHIFT); AM.Scale = 1 << ShiftCst; AM.IndexReg = NewAND; |