tinycc-devel
[Top][All Lists]
Advanced

[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++;
     }
 }

reply via email to

[Prev in Thread] Current Thread [Next in Thread]