[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Tinycc-devel] [PATCH] bug?
From: |
Daniel Glöckner |
Subject: |
Re: [Tinycc-devel] [PATCH] bug? |
Date: |
Wed, 20 Aug 2008 01:44:12 +0200 |
User-agent: |
Mutt/1.4.2.1i |
Patch is attached.
gfunc_prolog did not set VT_LVAL_xxx flags for function arguments.
I hope lvalue_type in that place always does the right thing.
Daniel
diff -rwud tinycc-orig/arm-gen.c tinycc/arm-gen.c
--- tinycc-orig/arm-gen.c Tue Dec 4 21:38:09 2007
+++ tinycc/arm-gen.c Wed Aug 20 01:15:29 2008
@@ -956,7 +956,7 @@
#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 -rwud tinycc-orig/c67-gen.c tinycc/c67-gen.c
--- tinycc-orig/c67-gen.c Sun Nov 7 16:43:48 2004
+++ tinycc/c67-gen.c Wed Aug 20 01:16:35 2008
@@ -1964,7 +1964,7 @@
/* 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 -rwud tinycc-orig/i386-gen.c tinycc/i386-gen.c
--- tinycc-orig/i386-gen.c Wed Dec 19 18:36:43 2007
+++ tinycc/i386-gen.c Wed Aug 20 01:15:56 2008
@@ -471,7 +471,7 @@
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 -rwud tinycc-orig/il-gen.c tinycc/il-gen.c
--- tinycc-orig/il-gen.c Wed Nov 14 18:34:30 2007
+++ tinycc/il-gen.c Wed Aug 20 01:25:31 2008
@@ -449,7 +449,7 @@
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++;
}
}