summary refs log tree commit diff
path: root/fold.c
diff options
context:
space:
mode:
Diffstat (limited to 'fold.c')
-rw-r--r--fold.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fold.c b/fold.c
index 348e532..9923f75 100644
--- a/fold.c
+++ b/fold.c
@@ -368,6 +368,7 @@ foldint(Con *res, int op, int w, Con *cl, Con *cr)
 	switch (op) {
 	case Oadd:  x = l.u + r.u; break;
 	case Osub:  x = l.u - r.u; break;
+	case Oneg:  x = -l.u; break;
 	case Odiv:  x = w ? l.s / r.s : (int32_t)l.s / (int32_t)r.s; break;
 	case Orem:  x = w ? l.s % r.s : (int32_t)l.s % (int32_t)r.s; break;
 	case Oudiv: x = w ? l.u / r.u : (uint32_t)l.u / (uint32_t)r.u; break;
@@ -464,6 +465,7 @@ foldflt(Con *res, int op, int w, Con *cl, Con *cr)
 		switch (op) {
 		case Oadd: xd = ld + rd; break;
 		case Osub: xd = ld - rd; break;
+		case Oneg: xd = -ld; break;
 		case Odiv: xd = ld / rd; break;
 		case Omul: xd = ld * rd; break;
 		case Oswtof: xd = (int32_t)cl->bits.i; break;
@@ -480,6 +482,7 @@ foldflt(Con *res, int op, int w, Con *cl, Con *cr)
 		switch (op) {
 		case Oadd: xs = ls + rs; break;
 		case Osub: xs = ls - rs; break;
+		case Oneg: xs = -ls; break;
 		case Odiv: xs = ls / rs; break;
 		case Omul: xs = ls * rs; break;
 		case Oswtof: xs = (int32_t)cl->bits.i; break;