diff --git a/lib/libtcc1.c b/lib/libtcc1.c index 44208cd..0c8e3bc 100644 --- a/lib/libtcc1.c +++ b/lib/libtcc1.c @@ -540,6 +540,8 @@ unsigned long long __fixunssfdi (float a1) exp = EXP (fl1.l) - EXCESS - 24; l = MANT(fl1.l); + if (SIGN(fl1.l)) + l = -l; if (exp >= 41) return (unsigned long long)-1; else if (exp >= 0) @@ -565,6 +567,8 @@ unsigned long long __fixunsdfdi (double a1) l = MANTD_LL(dl1); + if (SIGND(dl1.l)) + l = -l; if (exp >= 12) return (unsigned long long)-1; else if (exp >= 0) @@ -590,6 +594,8 @@ unsigned long long __fixunsxfdi (long double a1) l = dl1.l.lower; + if (SIGNLD(dl1.l)) + l = -l; if (exp > 0) return (unsigned long long)-1; else if (exp >= -63)