aboutsummaryrefslogtreecommitdiff
path: root/bootstrap/fold.c
diff options
context:
space:
mode:
Diffstat (limited to 'bootstrap/fold.c')
-rw-r--r--bootstrap/fold.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/bootstrap/fold.c b/bootstrap/fold.c
index f7962d4..efe1f83 100644
--- a/bootstrap/fold.c
+++ b/bootstrap/fold.c
@@ -238,6 +238,17 @@ fas(struct expr *ex) {
free(child);
}
+static void
+fzeroini(struct expr *ex) {
+ const struct type *ty = ex->ty;
+ if (ty->t == TYint || ty->t == TYfloat || ty->t == TYbool || ty->t == TYenum) {
+ ex->i = 0;
+ numcast(ex, ty);
+ if (ty->t == TYenum)
+ trysetenumvname(ex);
+ }
+}
+
int
fold(struct expr *ex) {
switch (ex->t) {
@@ -261,6 +272,8 @@ fold(struct expr *ex) {
case Eas:
fas(ex);
break;
+ case Ezeroini:
+ fzeroini(ex);
default:
break;
}