From ea18f894f524fdc82dc09ea9c6abf8feb93b04e8 Mon Sep 17 00:00:00 2001 From: g-w1 <58830309+g-w1@users.noreply.github.com> Date: Tue, 22 Dec 2020 17:05:42 -0500 Subject: Peer type resolution with unsigned ints and larger signed ints --- src/stage1/ir.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/stage1/ir.cpp') diff --git a/src/stage1/ir.cpp b/src/stage1/ir.cpp index 9278ee7564..864f2615f9 100644 --- a/src/stage1/ir.cpp +++ b/src/stage1/ir.cpp @@ -12706,11 +12706,13 @@ static ZigType *ir_resolve_peer_types(IrAnalyze *ira, AstNode *source_node, ZigT } if (prev_type->id == ZigTypeIdInt && - cur_type->id == ZigTypeIdInt && - prev_type->data.integral.is_signed == cur_type->data.integral.is_signed) + cur_type->id == ZigTypeIdInt) { - if (cur_type->data.integral.bit_count > prev_type->data.integral.bit_count) { - prev_inst = cur_inst; + if ((prev_type->data.integral.is_signed == cur_type->data.integral.is_signed) || + (cur_type->data.integral.is_signed && !prev_type->data.integral.is_signed)) { + if (cur_type->data.integral.bit_count > prev_type->data.integral.bit_count) { + prev_inst = cur_inst; + } } continue; } -- cgit v1.2.3