diff options
author | Duncan Sands <baldrick@free.fr> | 2008-07-09 11:15:31 +0000 |
---|---|---|
committer | Duncan Sands <baldrick@free.fr> | 2008-07-09 11:15:31 +0000 |
commit | 452911c468a8d3b7571a3eb9aeff37c3880adb94 (patch) | |
tree | 5190276911265b421f3de3c74ff71dbdbdba0c3a /lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp | |
parent | f8568b464f65f26efd0d7615dcf3f72a09bdf088 (diff) | |
download | llvm-452911c468a8d3b7571a3eb9aeff37c3880adb94.tar.gz llvm-452911c468a8d3b7571a3eb9aeff37c3880adb94.tar.bz2 llvm-452911c468a8d3b7571a3eb9aeff37c3880adb94.tar.xz |
Forgot to update the chain result when softening
loads.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53287 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp')
-rw-r--r-- | lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp b/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp index b0809fd8cc..7dcffa2158 100644 --- a/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp +++ b/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp @@ -230,20 +230,29 @@ SDOperand DAGTypeLegalizer::SoftenFloatRes_LOAD(SDNode *N) { MVT VT = N->getValueType(0); MVT NVT = TLI.getTypeToTransformTo(VT); - if (L->getExtensionType() == ISD::NON_EXTLOAD) - return DAG.getLoad(L->getAddressingMode(), L->getExtensionType(), - NVT, L->getChain(), L->getBasePtr(), L->getOffset(), - L->getSrcValue(), L->getSrcValueOffset(), NVT, - L->isVolatile(), L->getAlignment()); + SDOperand NewL; + if (L->getExtensionType() == ISD::NON_EXTLOAD) { + NewL = DAG.getLoad(L->getAddressingMode(), L->getExtensionType(), + NVT, L->getChain(), L->getBasePtr(), L->getOffset(), + L->getSrcValue(), L->getSrcValueOffset(), NVT, + L->isVolatile(), L->getAlignment()); + // Legalized the chain result - switch anything that used the old chain to + // use the new one. + ReplaceValueWith(SDOperand(N, 1), NewL.getValue(1)); + return NewL; + } // Do a non-extending load followed by FP_EXTEND. - SDOperand NL = DAG.getLoad(L->getAddressingMode(), ISD::NON_EXTLOAD, - L->getMemoryVT(), L->getChain(), - L->getBasePtr(), L->getOffset(), - L->getSrcValue(), L->getSrcValueOffset(), - L->getMemoryVT(), - L->isVolatile(), L->getAlignment()); - return BitConvertToInteger(DAG.getNode(ISD::FP_EXTEND, VT, NL)); + NewL = DAG.getLoad(L->getAddressingMode(), ISD::NON_EXTLOAD, + L->getMemoryVT(), L->getChain(), + L->getBasePtr(), L->getOffset(), + L->getSrcValue(), L->getSrcValueOffset(), + L->getMemoryVT(), + L->isVolatile(), L->getAlignment()); + // Legalized the chain result - switch anything that used the old chain to + // use the new one. + ReplaceValueWith(SDOperand(N, 1), NewL.getValue(1)); + return BitConvertToInteger(DAG.getNode(ISD::FP_EXTEND, VT, NewL)); } SDOperand DAGTypeLegalizer::SoftenFloatRes_SELECT(SDNode *N) { |