diff --git a/llvm/lib/Target/Sparc/PreSelection.cpp b/llvm/lib/Target/Sparc/PreSelection.cpp
index 2e55594..e3dec46 100644
--- a/llvm/lib/Target/Sparc/PreSelection.cpp
+++ b/llvm/lib/Target/Sparc/PreSelection.cpp
@@ -146,6 +146,7 @@
     void visitInstruction(Instruction &I);   // common work for every instr. 
     void visitGetElementPtrInst(GetElementPtrInst &I);
     void visitLoadInst(LoadInst &I);
+    void visitCastInst(CastInst &I);
     void visitStoreInst(StoreInst &I);
 
     // Helper functions for visiting operands of every instruction
@@ -228,6 +229,33 @@
 }
 
 
+// Cast instructions: make multi-step casts explicit
+// -- float/double to uint32_t:
+//    If target does not have a float-to-unsigned instruction, we
+//    need to convert to uint64_t and then to uint32_t, or we may
+//    overflow the signed int representation for legal uint32_t
+//    values.  Expand this without checking target.
+// 
+void
+PreSelection::visitCastInst(CastInst &I)
+{ 
+  CastInst* castI = NULL;
+
+  // Check for a global and put its address into a register before this instr
+  if (I.getType() == Type::UIntTy &&
+      I.getOperand(0)->getType()->isFloatingPoint())
+    { // insert a cast-fp-to-long before I, and then replace the operand of I
+      castI = new CastInst(I.getOperand(0), Type::LongTy, "fp2Long2Uint", &I);
+      I.setOperand(0, castI);           // replace fp operand with long
+    }
+
+  // Perform other transformations common to all instructions
+  visitInstruction(I);
+  if (castI)
+    visitInstruction(*castI);
+}
+
+
 // visitOperands() transforms individual operands of all instructions:
 // -- Load "large" int constants into a virtual register.  What is large
 //    depends on the type of instruction and on the target architecture.
