shithub: mc

Download patch

ref: bbe13f1e7ffe514c75c849a4b1a32815fd610ef3
parent: 1429ef6c0ba0dc6983461366995ff66683de1262
author: Ori Bernstein <[email protected]>
date: Sun Jun 17 18:46:59 EDT 2012

Fix initialized variables more cleanly.

--- a/8/reduce.c
+++ b/8/reduce.c
@@ -698,7 +698,7 @@
 
 static Node *simp(Simp *s, Node *n)
 {
-    Node *r, *t, *u, *v;
+    Node *r, *t, *u;
     size_t i;
 
     if (!n)
@@ -728,21 +728,14 @@
             break;
         case Ndecl:
 	    declarelocal(s, n);
-	    if (n->decl.init) {
-		t = mkexpr(n->line, Ovar, n, NULL);
-		t->expr.did = n->decl.did;
+            if (n->decl.init) {
+                t = mkexpr(n->line, Ovar, n->decl.name, NULL);
+                u = mkexpr(n->line, Oasn, t, n->decl.init, NULL);
+                u->expr.type = n->decl.type;
                 t->expr.type = n->decl.type;
-		u = rval(s, n->decl.init);
-                if (size(n) > 4) {
-                    t = addr(t, exprtype(n));
-                    u = addr(u, exprtype(n));
-                    v = word(n->line, size(n));
-                    r = mkexpr(n->line, Oblit, t, u, v, NULL);
-                } else {
-                    r = store(t, u);
-                }
-		append(s, r);
-	    }
+                t->expr.did = n->decl.did;
+                simp(s, u);
+            }
             break;
         case Nlbl:
             append(s, n);