diff --git a/src/eval/eval_ir.c b/src/eval/eval_ir.c index 069c3d90..74f076c1 100644 --- a/src/eval/eval_ir.c +++ b/src/eval/eval_ir.c @@ -1436,6 +1436,10 @@ e_push_irtree_and_type_from_expr(Arena *arena, E_IRTreeAndType *root_parent, E_I { new_tree = e_irtree_trunc(arena, in_tree, cast_type); } + if(e_type_kind_is_signed(cast_type_kind) && e_type_kind_is_integer(casted_type_kind) && !e_type_kind_is_signed(casted_type_kind)) + { + new_tree = e_irtree_trunc(arena, in_tree, cast_type); + } result.root = new_tree; result.type_key = cast_type; result.mode = E_Mode_Value;