From b9f8820efcd62ef666afb2eaabd07e48eae38279 Mon Sep 17 00:00:00 2001 From: lemon Date: Fri, 5 Dec 2025 12:54:27 +0100 Subject: ir: float fold div/0 --- ir/fold.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ir/fold.c b/ir/fold.c index b45aa38..f5150c0 100644 --- a/ir/fold.c +++ b/ir/fold.c @@ -58,7 +58,6 @@ foldflt(enum op op, enum irclass k, union ref lr, union ref rr) int xi; double x, l = fltconval(lr), r = fltconval(rr); bool w = k == KF64; - if (in_range(op, Odiv, Ourem)) assert(r != 0.0); switch (op) { case Ocopy: x = l; break; case Oneg: x = -l; break; @@ -88,11 +87,11 @@ foldflt(enum op op, enum irclass k, union ref lr, union ref rr) bool foldbinop(union ref *to, enum op op, enum irclass k, union ref l, union ref r) { - if (!isnumcon(l) || !isnumcon(r)) return 0; - if (in_range(op, Odiv, Ourem) && (kisint(k) ? intconval(r) == 0 : fltconval(r) == 0)) - return 0; if (!oisarith(op)) return 0; + if (!isnumcon(l) || !isnumcon(r)) return 0; + if (in_range(op, Odiv, Ourem) && kisint(k) && intconval(r) == 0) + return 0; if (kisint(k)) *to = foldint(op, k, l, r); else -- cgit v1.2.3