aboutsummaryrefslogtreecommitdiffhomepage
path: root/parse.c
diff options
context:
space:
mode:
Diffstat (limited to 'parse.c')
-rw-r--r--parse.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/parse.c b/parse.c
index dc6717b..9a5d99a 100644
--- a/parse.c
+++ b/parse.c
@@ -1763,7 +1763,12 @@ block(struct parser *pr, struct function *fn)
error(&span, "cannot initialize '%ty' variable with '%ty'",
decl.ty, ini.ty);
}
- EMITS genstore(fn, decl.ty, mkref(RTMP, decl.id), exprvalue(fn, &ini));
+ EMITS {
+ if (isagg(decl.ty))
+ structcopy(fn, mkref(RTMP, decl.id), &ini);
+ else
+ genstore(fn, decl.ty, mkref(RTMP, decl.id), exprvalue(fn, &ini));
+ }
}
break;
case SCTYPEDEF: break;