mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-07 08:08:50 +00:00
Fix #563
This commit is contained in:
+3
-2
@@ -7376,10 +7376,11 @@ irValue *ir_build_expr_internal(irProcedure *proc, Ast *expr) {
|
|||||||
GB_ASSERT(are_types_identical(ir_type(left), key_type));
|
GB_ASSERT(are_types_identical(ir_type(left), key_type));
|
||||||
|
|
||||||
Type *it = bit_set_to_int(rt);
|
Type *it = bit_set_to_int(rt);
|
||||||
|
left = ir_emit_conv(proc, left, it);
|
||||||
|
|
||||||
irValue *lower = ir_value_constant(it, exact_value_i64(rt->BitSet.lower));
|
irValue *lower = ir_value_constant(it, exact_value_i64(rt->BitSet.lower));
|
||||||
irValue *key = ir_emit_arith(proc, Token_Sub, left, lower, ir_type(left));
|
irValue *key = ir_emit_arith(proc, Token_Sub, left, lower, it);
|
||||||
irValue *bit = ir_emit_arith(proc, Token_Shl, v_one, key, ir_type(left));
|
irValue *bit = ir_emit_arith(proc, Token_Shl, v_one, key, it);
|
||||||
bit = ir_emit_conv(proc, bit, it);
|
bit = ir_emit_conv(proc, bit, it);
|
||||||
|
|
||||||
irValue *old_value = ir_emit_bitcast(proc, right, it);
|
irValue *old_value = ir_emit_bitcast(proc, right, it);
|
||||||
|
|||||||
Reference in New Issue
Block a user