diff options
-rw-r--r-- | lib/Target/X86/X86ISelDAGToDAG.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/Target/X86/X86ISelDAGToDAG.cpp b/lib/Target/X86/X86ISelDAGToDAG.cpp index 3963473594..e895b045f1 100644 --- a/lib/Target/X86/X86ISelDAGToDAG.cpp +++ b/lib/Target/X86/X86ISelDAGToDAG.cpp @@ -797,7 +797,7 @@ bool X86DAGToDAGISel::SelectScalarSSELoad(SDOperand N, SDOperand &Base, SDOperand &OutChain) { if (N.getOpcode() == ISD::SCALAR_TO_VECTOR) { InChain = N.getOperand(0).getValue(1); - if (ISD::isNON_EXTLoad(InChain.Val)) { + if (ISD::isNON_EXTLoad(InChain.Val) && InChain.getValue(0).hasOneUse()) { LoadSDNode *LD = cast<LoadSDNode>(InChain); if (!SelectAddr(LD->getBasePtr(), Base, Scale, Index, Disp)) return false; |