Move something that should be in the dag combiner from the legalizer to the
dag combiner.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32431 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
index 4b7c494..750f0bb 100644
--- a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+++ b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
@@ -3034,6 +3034,20 @@
                         ST->getSrcValueOffset());
   }
   
+  // Turn 'store float 1.0, Ptr' -> 'store int 0x12345678, Ptr'
+  // FIXME: We shouldn't do this for TargetConstantFP's.
+  if (ConstantFPSDNode *CFP = dyn_cast<ConstantFPSDNode>(Value)) {
+    SDOperand Tmp;
+    if (CFP->getValueType(0) == MVT::f32) {
+      Tmp = DAG.getConstant(FloatToBits(CFP->getValue()), MVT::i32);
+    } else {
+      assert(CFP->getValueType(0) == MVT::f64 && "Unknown FP type!");
+      Tmp = DAG.getConstant(DoubleToBits(CFP->getValue()), MVT::i64);
+    }
+    return DAG.getStore(Chain, Tmp, Ptr, ST->getSrcValue(),
+                        ST->getSrcValueOffset());
+  }
+
   if (CombinerAA) { 
     // Walk up chain skipping non-aliasing memory nodes.
     SDOperand BetterChain = FindBetterChain(N, Chain);