When folding a load into a return of SSE value, check the chain to
ensure the memory location has not been clobbered.
llvm-svn: 25861
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 1a60368..dce781d 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -1912,10 +1912,11 @@
Ops.push_back(Op.getOperand(1));
Copy = DAG.getNode(X86ISD::FP_SET_RESULT, Tys, Ops);
} else {
- SDOperand MemLoc, Chain;
+ SDOperand MemLoc;
+ SDOperand Chain = Op.getOperand(0);
SDOperand Value = Op.getOperand(1);
- if (Value.getOpcode() == ISD::LOAD) {
+ if (Value.getOpcode() == ISD::LOAD && Chain == Value.getOperand(0)) {
Chain = Value.getOperand(0);
MemLoc = Value.getOperand(1);
} else {