aboutsummaryrefslogtreecommitdiff
path: root/src/ir.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2019-11-02 10:57:42 +0000
committergingerBill <bill@gingerbill.org>2019-11-02 10:57:42 +0000
commitdbdbbcd60f1273e246d11696476ac4772f91c258 (patch)
tree2491e48211f66a17b8b0579e6f463510147b6ce0 /src/ir.cpp
parentf9aaff99c6d2a2c2866a54f0b59b0cc2c47a9eaf (diff)
Fix range in statement bug caused by incorrectly assigned addressing mode #461
Diffstat (limited to 'src/ir.cpp')
-rw-r--r--src/ir.cpp19
1 files changed, 2 insertions, 17 deletions
diff --git a/src/ir.cpp b/src/ir.cpp
index 8d5587341..d7db09180 100644
--- a/src/ir.cpp
+++ b/src/ir.cpp
@@ -6613,22 +6613,6 @@ irValue *ir_build_expr_internal(irProcedure *proc, Ast *expr) {
GB_ASSERT(tv.mode != Addressing_Invalid);
GB_ASSERT(tv.mode != Addressing_Type);
- #if 0
- if (tv.mode == Addressing_Type) {
- // // TODO(bill): Handle this correctly
- #if 0
- i32 entry_index = ir_type_info_index(proc->module->info, tv.type, false);
- if (entry_index >= 0) {
- return ir_get_type_info_ptr(proc, tv.type);
- // i32 id = entry_index+1;
- // return ir_value_constant(t_int, exact_value_i64(id));
- }
- #endif
- // return v_raw_nil;
- return ir_value_nil(tv.type);
- }
- #endif
-
if (tv.value.kind != ExactValue_Invalid) {
// NOTE(bill): Edge case
if (tv.value.kind != ExactValue_Compound &&
@@ -8686,7 +8670,8 @@ void ir_build_range_interval(irProcedure *proc, AstBinaryExpr *node, Type *val_t
upper = ir_build_expr(proc, node->right);
- irValue *cond = ir_emit_comp(proc, op, ir_emit_load(proc, value), upper);
+ irValue *curr_value = ir_emit_load(proc, value);
+ irValue *cond = ir_emit_comp(proc, op, curr_value, upper);
ir_emit_if(proc, cond, body, done);
ir_start_block(proc, body);