diff --git a/arm-gen.c b/arm-gen.c index 189f3625..e3a5629b 100644 --- a/arm-gen.c +++ b/arm-gen.c @@ -956,7 +956,7 @@ void gfunc_prolog(CType *func_type) #ifdef TCC_ARM_EABI addr = (addr + align - 1) & -align; #endif - sym_push(sym->v & ~SYM_FIELD, type, VT_LOCAL | VT_LVAL, addr); + sym_push(sym->v & ~SYM_FIELD, type, VT_LOCAL | lvalue_type(type->t), addr); addr += size; } last_itod_magic=0; diff --git a/c67-gen.c b/c67-gen.c index 40554bd4..04f8a12b 100644 --- a/c67-gen.c +++ b/c67-gen.c @@ -1964,7 +1964,7 @@ void gfunc_prolog(CType * func_type) /* define parameters */ while ((sym = sym->next) != NULL) { type = &sym->type; - sym_push(sym->v & ~SYM_FIELD, type, VT_LOCAL | VT_LVAL, addr); + sym_push(sym->v & ~SYM_FIELD, type, VT_LOCAL | lvalue_type(type->t), addr); size = type_size(type, &align); size = (size + 3) & ~3; diff --git a/i386-gen.c b/i386-gen.c index a3d27434..a2564f3d 100644 --- a/i386-gen.c +++ b/i386-gen.c @@ -471,7 +471,7 @@ void gfunc_prolog(CType *func_type) addr += size; } sym_push(sym->v & ~SYM_FIELD, type, - VT_LOCAL | VT_LVAL, param_addr); + VT_LOCAL | lvalue_type(type->t), param_addr); param_index++; } func_ret_sub = 0; diff --git a/il-gen.c b/il-gen.c index fef6194a..29f05265 100644 --- a/il-gen.c +++ b/il-gen.c @@ -449,7 +449,7 @@ void gfunc_prolog(int t) while ((sym = sym->next) != NULL) { u = sym->t; sym_push(sym->v & ~SYM_FIELD, u, - VT_LOCAL | VT_LVAL, addr); + VT_LOCAL | lvalue_type(sym->type.t), addr); addr++; } }