aboutsummaryrefslogtreecommitdiff
path: root/src/ir.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2020-02-23 10:11:43 +0000
committergingerBill <bill@gingerbill.org>2020-02-23 10:11:43 +0000
commit81b00c7a3e26b5faf8f149d45c1e63ed431ab2c6 (patch)
treebc8baaeacf806968549d205423439bc282a3cbf4 /src/ir.cpp
parent49ecd73406e92c2cc0846188f4dfaf1ec687d1f2 (diff)
Fix #563
Diffstat (limited to 'src/ir.cpp')
-rw-r--r--src/ir.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/ir.cpp b/src/ir.cpp
index 2f4d491e7..f28179472 100644
--- a/src/ir.cpp
+++ b/src/ir.cpp
@@ -7376,10 +7376,11 @@ irValue *ir_build_expr_internal(irProcedure *proc, Ast *expr) {
GB_ASSERT(are_types_identical(ir_type(left), key_type));
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 *key = ir_emit_arith(proc, Token_Sub, left, lower, ir_type(left));
- irValue *bit = ir_emit_arith(proc, Token_Shl, v_one, key, 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, it);
bit = ir_emit_conv(proc, bit, it);
irValue *old_value = ir_emit_bitcast(proc, right, it);