Index: compiler-rt/trunk/lib/builtins/fixunsdfdi.c =================================================================== --- compiler-rt/trunk/lib/builtins/fixunsdfdi.c +++ compiler-rt/trunk/lib/builtins/fixunsdfdi.c @@ -21,6 +21,7 @@ COMPILER_RT_ABI du_int __fixunsdfdi(double a) { + if (a <= 0.0) return 0; su_int high = a/0x1p32f; su_int low = a - (double)high*0x1p32f; return ((du_int)high << 32) | low; Index: compiler-rt/trunk/lib/builtins/fixunsdfti.c =================================================================== --- compiler-rt/trunk/lib/builtins/fixunsdfti.c +++ compiler-rt/trunk/lib/builtins/fixunsdfti.c @@ -17,7 +17,7 @@ #include "fp_fixuint_impl.inc" COMPILER_RT_ABI tu_int -__fixunsdftti(fp_t a) { +__fixunsdfti(fp_t a) { return __fixuint(a); } #endif /* CRT_HAS_128BIT */ Index: compiler-rt/trunk/lib/builtins/fixunssfdi.c =================================================================== --- compiler-rt/trunk/lib/builtins/fixunssfdi.c +++ compiler-rt/trunk/lib/builtins/fixunssfdi.c @@ -21,6 +21,7 @@ COMPILER_RT_ABI du_int __fixunssfdi(float a) { + if (a <= 0.0f) return 0; double da = a; su_int high = da/0x1p32f; su_int low = da - (double)high*0x1p32f;