aboutsummaryrefslogtreecommitdiff
path: root/tccgen.c
diff options
context:
space:
mode:
Diffstat (limited to 'tccgen.c')
-rw-r--r--tccgen.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/tccgen.c b/tccgen.c
index 78a5161..38b0912 100644
--- a/tccgen.c
+++ b/tccgen.c
@@ -2019,6 +2019,12 @@ void vstore(void)
if (!nocode_wanted) {
size = type_size(&vtop->type, &align);
+ /* destination */
+ vswap();
+ vtop->type.t = VT_PTR;
+ gaddrof();
+
+ /* address of memcpy() */
#ifdef TCC_ARM_EABI
if(!(align & 7))
vpush_global_sym(&func_old_type, TOK_memcpy8);
@@ -2028,10 +2034,7 @@ void vstore(void)
#endif
vpush_global_sym(&func_old_type, TOK_memcpy);
- /* destination */
- vpushv(vtop - 2);
- vtop->type.t = VT_PTR;
- gaddrof();
+ vswap();
/* source */
vpushv(vtop - 2);
vtop->type.t = VT_PTR;
@@ -2039,9 +2042,6 @@ void vstore(void)
/* type size */
vpushi(size);
gfunc_call(3);
-
- vswap();
- vpop();
} else {
vswap();
vpop();