Index: osprey/be/opt/opt_bdce.cxx
===================================================================
--- osprey/be/opt/opt_bdce.cxx	(revision 3747)
+++ osprey/be/opt/opt_bdce.cxx	(working copy)
@@ -1122,6 +1122,8 @@
     if (Split_64_Bit_Int_Ops && to_bit == 64)
       return FALSE;
 #ifdef TARG_X8664
+    if (from_bit == 32 && to_bit == 64 && sign_xtd != MTYPE_is_signed(opnd->Dsctyp()))
+      return FALSE;
     if (MTYPE_size_min(opnd->Dsctyp()) < 32 && to_bit == 64) 
       return !sign_xtd && !opnd->Is_sign_extd() && 
 	     from_bit >= MTYPE_size_min(opnd->Dsctyp());
@@ -1139,6 +1141,8 @@
     if (Split_64_Bit_Int_Ops && to_bit == 64)
       return FALSE;
 #ifdef TARG_X8664
+    if (from_bit == 32 && to_bit == 64 && sign_xtd != MTYPE_is_signed(opnd->Dsctyp()))
+      return FALSE;
     if (MTYPE_size_min(opnd->Dsctyp()) < 32 && to_bit == 64)
       return !sign_xtd && !opnd->Is_sign_extd() &&
 	     from_bit >= MTYPE_size_min(opnd->Dsctyp());
Index: osprey/be/com/opt_cvtl_rule.cxx
===================================================================
--- osprey/be/com/opt_cvtl_rule.cxx	(revision 3747)
+++ osprey/be/com/opt_cvtl_rule.cxx	(working copy)
@@ -147,7 +147,7 @@
 INT Need_type_conversion(TYPE_ID from_ty, TYPE_ID to_ty, OPCODE *opc)
 {
 #ifdef TARG_X8664 // bug 2879
-  if (Is_Target_32bit() && from_ty == MTYPE_U4 && 
+  if (from_ty == MTYPE_U4 && 
       MTYPE_is_integral(to_ty) && MTYPE_byte_size(to_ty) == 8) {
     if (opc != NULL) 
       *opc = MTYPE_signed(to_ty) ? OPC_I8I4CVT : OPC_U8U4CVT;
