diff options
| author | Stuart Hastings <stuart@apple.com> | 2011-03-02 19:36:30 +0000 |
|---|---|---|
| committer | Stuart Hastings <stuart@apple.com> | 2011-03-02 19:36:30 +0000 |
| commit | 6b4007dec63400db32558f173c382ad6e5b379d5 (patch) | |
| tree | 961c59c44670e6a571061d00e962400af35f2bb9 /llvm/lib | |
| parent | 454464b491307a84ba8bc4aa8a05633984d8e2f7 (diff) | |
| download | bcm5719-llvm-6b4007dec63400db32558f173c382ad6e5b379d5.tar.gz bcm5719-llvm-6b4007dec63400db32558f173c382ad6e5b379d5.zip | |
Can't introduce floating-point immediate constants after legalization.
Radar 9056407.
llvm-svn: 126864
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index 7957098461c..4c70bc3e88b 100644 --- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -5142,7 +5142,9 @@ SDValue DAGCombiner::visitSINT_TO_FP(SDNode *N) { EVT OpVT = N0.getValueType(); // fold (sint_to_fp c1) -> c1fp - if (N0C && OpVT != MVT::ppcf128) + if (N0C && OpVT != MVT::ppcf128 && + // ...but only if the target supports immediate floating-point values + (Level == llvm::Unrestricted || TLI.isOperationLegalOrCustom(llvm::ISD::ConstantFP, VT))) return DAG.getNode(ISD::SINT_TO_FP, N->getDebugLoc(), VT, N0); // If the input is a legal type, and SINT_TO_FP is not legal on this target, @@ -5164,7 +5166,9 @@ SDValue DAGCombiner::visitUINT_TO_FP(SDNode *N) { EVT OpVT = N0.getValueType(); // fold (uint_to_fp c1) -> c1fp - if (N0C && OpVT != MVT::ppcf128) + if (N0C && OpVT != MVT::ppcf128 && + // ...but only if the target supports immediate floating-point values + (Level == llvm::Unrestricted || TLI.isOperationLegalOrCustom(llvm::ISD::ConstantFP, VT))) return DAG.getNode(ISD::UINT_TO_FP, N->getDebugLoc(), VT, N0); // If the input is a legal type, and UINT_TO_FP is not legal on this target, |

