diff --git a/tccgen.c b/tccgen.c
index 1dbe0610..5b56b74c 100644
--- a/tccgen.c
+++ b/tccgen.c
@@ -2627,7 +2627,9 @@ static void gen_cvt_ftoi1(int t)
         gfunc_call(1);
         vpushi(0);
         vtop->r = REG_IRET;
+#if PTR_SIZE == 4
         vtop->r2 = REG_LRET;
+#endif
     } else {
         gen_cvt_ftoi(t);
     }
diff --git a/tests/tests2/107_stack_safe.c b/tests/tests2/107_stack_safe.c
new file mode 100644
index 00000000..479c84d3
--- /dev/null
+++ b/tests/tests2/107_stack_safe.c
@@ -0,0 +1,13 @@
+extern int printf(const char *, ...);
+
+static void func_ull_ull(unsigned long long l1,unsigned long long l2){
+}
+
+int main()
+{
+  int a,b,c,d;
+  a=1;b=2;c=3;d=4;
+  func_ull_ull((unsigned long long)a/1.0,(unsigned long long)b/1.0);
+  printf("%d %d %d %d",a,b,c,d);
+  return 0;
+}
diff --git a/tests/tests2/107_stack_safe.expect b/tests/tests2/107_stack_safe.expect
new file mode 100644
index 00000000..e9e9cd73
--- /dev/null
+++ b/tests/tests2/107_stack_safe.expect
@@ -0,0 +1 @@
+1 2 3 4
\ No newline at end of file