mirror of
https://github.com/mirror/tinycc.git
synced 2024-12-28 04:00:06 +08:00
avoid needless register save when storing structures
When storing structs with a memcpy call in vstore(), so far a needless entry remaining on the vstack sometimes resulted in an useless store generated by save_regs() in gfunc_call() for the memcpy routine.
This commit is contained in:
parent
b573072300
commit
c0620c8a00
14
tccgen.c
14
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();
|
||||
|
Loading…
Reference in New Issue
Block a user