From a7b37f9c6337e209595268b978a160e39487270d Mon Sep 17 00:00:00 2001 From: Pursuer2 <1596067968@qq.com> Date: Thu, 24 Oct 2019 00:54:30 +0800 Subject: [PATCH] Fix bug in gen_cvt_ftoi1. Add test 107_stack_safe for this fix. (Thanks to the support of herman ten brugge) --- tccgen.c | 2 ++ tests/tests2/107_stack_safe.c | 13 +++++++++++++ tests/tests2/107_stack_safe.expect | 1 + 3 files changed, 16 insertions(+) create mode 100644 tests/tests2/107_stack_safe.c create mode 100644 tests/tests2/107_stack_safe.expect 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