Fix long double to long long for x86_64

This commit is contained in:
herman ten brugge
2025-08-23 14:48:34 +02:00
parent acb2a909dd
commit 6ca6328e29
2 changed files with 12 additions and 0 deletions

View File

@@ -290,6 +290,9 @@
DEF(TOK___fixdfdi, "__fixdfdi")
DEF(TOK___fixxfdi, "__fixxfdi")
#endif
#if defined TCC_TARGET_X86_64
DEF(TOK___fixxfdi, "__fixxfdi")
#endif
#if defined TCC_TARGET_I386 || defined TCC_TARGET_X86_64
DEF(TOK_alloca, "alloca")

View File

@@ -2153,6 +2153,15 @@ void gen_cvt_ftoi(int t)
ft = vtop->type.t;
bt = ft & VT_BTYPE;
if (bt == VT_LDOUBLE) {
if (t != VT_INT) {
vpush_helper_func(TOK___fixxfdi);
vswap();
gfunc_call(1);
vpushi(0);
vtop->r = REG_IRET;
vtop->r2 = REG_IRE2;
return;
}
gen_cvt_ftof(VT_DOUBLE);
bt = VT_DOUBLE;
}