diff --git a/tccgen.c b/tccgen.c index 315a3a2d..b7d35ba7 100644 --- a/tccgen.c +++ b/tccgen.c @@ -3251,8 +3251,12 @@ error: } else if (sf && dbt == VT_BOOL) { vtop->c.i = (vtop->c.ld != 0); } else { - if(sf) - vtop->c.i = vtop->c.ld; + if(sf) { + if (dbt & VT_UNSIGNED) + vtop->c.i = (uint64_t)vtop->c.ld; + else + vtop->c.i = (int64_t)vtop->c.ld; + } else if (sbt_bt == VT_LLONG || (PTR_SIZE == 8 && sbt == VT_PTR)) ; else if (sbt & VT_UNSIGNED)