aboutsummaryrefslogtreecommitdiffhomepage
path: root/c/c.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/c.c')
-rw-r--r--c/c.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/c/c.c b/c/c.c
index 5708419..5a0f5bd 100644
--- a/c/c.c
+++ b/c/c.c
@@ -3227,6 +3227,8 @@ compileexpr(struct function *fn, const struct expr *ex, bool discard)
case EPLUS:
r = compileexpr(fn, sub, discard);
if (discard) return NOREF;
+ if (isscalar(ex->ty) && typesize(ex->ty) < typesize(sub->ty))
+ return narrow(fn, type2cls[scalartypet(ex->ty)], ex->ty, r, 0);
return cvt(fn, ex->ty, sub->ty, r);
case ENEG:
op = Oneg;