Two more test cases: or_ops.ll (arithmetic or operations) and vecinsert.ll
(vector insertions)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45216 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/CellSPU/SPUISelLowering.cpp b/lib/Target/CellSPU/SPUISelLowering.cpp
index 253fafb..7d22187 100644
--- a/lib/Target/CellSPU/SPUISelLowering.cpp
+++ b/lib/Target/CellSPU/SPUISelLowering.cpp
@@ -880,13 +880,12 @@
   assert((FP != 0) &&
 	 "LowerConstantFP: Node is not ConstantFPSDNode");
 
-  const APFloat &apf = FP->getValueAPF();
-
   if (VT == MVT::f32) {
+    float targetConst = FP->getValueAPF().convertToFloat();
     return DAG.getNode(SPUISD::SFPConstant, VT,
-		       DAG.getTargetConstantFP(apf.convertToFloat(), VT));
+		       DAG.getTargetConstantFP(targetConst, VT));
   } else if (VT == MVT::f64) {
-    uint64_t dbits = DoubleToBits(apf.convertToDouble());
+    uint64_t dbits = DoubleToBits(FP->getValueAPF().convertToDouble());
     return DAG.getNode(ISD::BIT_CONVERT, VT,
 		       LowerConstant(DAG.getConstant(dbits, MVT::i64), DAG));
   }