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);