|
|
@@ -459,6 +459,8 @@ foldflt(Con *res, int op, int w, Con *cl, Con *cr)
|
|
|
|
|
|
if (cl->type != CBits || cr->type != CBits)
|
|
|
err("invalid address operand for '%s'", optab[op].name);
|
|
|
+ *res = (Con){CBits};
|
|
|
+ memset(&res->bits, 0, sizeof(res->bits));
|
|
|
if (w) {
|
|
|
ld = cl->bits.d;
|
|
|
rd = cr->bits.d;
|
|
|
@@ -473,7 +475,8 @@ foldflt(Con *res, int op, int w, Con *cl, Con *cr)
|
|
|
case Ocast: xd = ld; break;
|
|
|
default: die("unreachable");
|
|
|
}
|
|
|
- *res = (Con){CBits, .bits={.d=xd}, .flt=2};
|
|
|
+ res->bits.d = xd;
|
|
|
+ res->flt = 2;
|
|
|
} else {
|
|
|
ls = cl->bits.s;
|
|
|
rs = cr->bits.s;
|
|
|
@@ -488,7 +491,8 @@ foldflt(Con *res, int op, int w, Con *cl, Con *cr)
|
|
|
case Ocast: xs = ls; break;
|
|
|
default: die("unreachable");
|
|
|
}
|
|
|
- *res = (Con){CBits, .bits={.s=xs}, .flt=1};
|
|
|
+ res->bits.s = xs;
|
|
|
+ res->flt = 1;
|
|
|
}
|
|
|
}
|
|
|
|