diff options
author | Evan Cheng <evan.cheng@apple.com> | 2006-02-01 00:20:21 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2006-02-01 00:20:21 +0000 |
commit | 0d084c9e4aabb33df7f566de91a16df77c657c9a (patch) | |
tree | 3f9dcb532e5f6e36ce5ede45042a3c7243edcb28 | |
parent | 4ccf4c0d0b37c8098f5ea387ecea42a4b0a1076c (diff) | |
download | external_llvm-0d084c9e4aabb33df7f566de91a16df77c657c9a.zip external_llvm-0d084c9e4aabb33df7f566de91a16df77c657c9a.tar.gz external_llvm-0d084c9e4aabb33df7f566de91a16df77c657c9a.tar.bz2 |
When folding a load into a return of SSE value, check the chain to
ensure the memory location has not been clobbered.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25861 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/X86/X86ISelLowering.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp index 1a60368..dce781d 100644 --- a/lib/Target/X86/X86ISelLowering.cpp +++ b/lib/Target/X86/X86ISelLowering.cpp @@ -1912,10 +1912,11 @@ SDOperand X86TargetLowering::LowerOperation(SDOperand Op, SelectionDAG &DAG) { 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 { |