From 1ada32d3a8bee5533cab63f17c4402a20b1b8e23 Mon Sep 17 00:00:00 2001 From: lemon Date: Wed, 10 Dec 2025 11:42:33 +0100 Subject: c: fix compound assignment type conversions when types don't match --- c/c.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'c/c.c') diff --git a/c/c.c b/c/c.c index 681e71c..c206ec8 100644 --- a/c/c.c +++ b/c/c.c @@ -3484,8 +3484,9 @@ compileexpr(struct function *fn, const struct expr *ex, bool discard) l = genload(fn, ex->ty, adr, ex->qual & QVOLATILE); if ((op != Oadd && op != Osub) || cls != KPTR) { l = cvt(fn, ty, sub[0].ty, l); - r = cvt(fn, ex->ty, sub[1].ty, r); - q = irbinop(fn, op, cls, l, r); + r = cvt(fn, ty, sub[1].ty, r); + q = irbinop(fn, op, type2cls[ty.t], l, r); + q = cvt(fn, ex->ty, ty, q); } else { q = genptroff(fn, op, typesize(typechild(ex->ty)), l, sub[1].ty, r); } -- cgit v1.2.3