diff options
Diffstat (limited to 'tccgen.c')
| -rw-r--r-- | tccgen.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -4916,12 +4916,13 @@ static void block(int *bsym, int *csym, int *case_sym, int *def_sym, size = type_size(&func_vt,&align); if ((vtop->r != (VT_LOCAL | VT_LVAL) || (vtop->c.i & (ret_align-1))) && (align & (ret_align-1))) { - loc = (loc - size) & -align; + loc = (loc - size) & -ret_align; addr = loc; type = func_vt; vset(&type, VT_LOCAL | VT_LVAL, addr); vswap(); vstore(); + vpop(); vset(&ret_type, VT_LOCAL | VT_LVAL, addr); } vtop->type = ret_type; |
