diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/IA64/IA64ISelDAGToDAG.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/Target/IA64/IA64ISelDAGToDAG.cpp b/llvm/lib/Target/IA64/IA64ISelDAGToDAG.cpp index d3487f27862..9b26a25e9a2 100644 --- a/llvm/lib/Target/IA64/IA64ISelDAGToDAG.cpp +++ b/llvm/lib/Target/IA64/IA64ISelDAGToDAG.cpp @@ -322,10 +322,12 @@ SDOperand IA64DAGToDAGISel::Select(SDOperand Op) { * case ISD::DYNAMIC_STACKALLOC: */ case ISD::ConstantFP: { + SDOperand Chain = CurDAG->getEntryNode(); // this is a constant, so.. + if (cast<ConstantFPSDNode>(N)->isExactlyValue(+0.0)) - return CurDAG->getRegister(IA64::F0, MVT::f64); // load 0.0 + return CurDAG->getCopyFromReg(Chain, IA64::F0, MVT::f64); else if (cast<ConstantFPSDNode>(N)->isExactlyValue(+1.0)) - return CurDAG->getRegister(IA64::F1, MVT::f64); // load 1.0 + return CurDAG->getCopyFromReg(Chain, IA64::F1, MVT::f64); else assert(0 && "Unexpected FP constant!"); } |

