aboutsummaryrefslogtreecommitdiff
path: root/src/ir.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2019-12-22 11:33:33 +0000
committergingerBill <bill@gingerbill.org>2019-12-22 11:33:33 +0000
commitf62a0891bd65735fca918119725a9938d8169d86 (patch)
treed80b4dfa530663c4c8be1b68ae02dbd3bfd33cc8 /src/ir.cpp
parent4f2d4716ad763f9d369196612586411a51f63a03 (diff)
Fix Crash when compiling for loop with parens around array expression #506
Diffstat (limited to 'src/ir.cpp')
-rw-r--r--src/ir.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/ir.cpp b/src/ir.cpp
index 790ac5f67..9e21e58bd 100644
--- a/src/ir.cpp
+++ b/src/ir.cpp
@@ -9674,13 +9674,13 @@ void ir_build_stmt_internal(irProcedure *proc, Ast *node) {
} else if (tav.mode == Addressing_Type) {
ir_build_range_enum(proc, type_deref(tav.type), val0_type, &val, &key, &loop, &done);
} else {
- Type *expr_type = type_of_expr(rs->expr);
+ Type *expr_type = type_of_expr(expr);
Type *et = base_type(type_deref(expr_type));
switch (et->kind) {
case Type_Map: {
is_map = true;
gbAllocator a = ir_allocator();
- irAddr const &addr = ir_build_addr(proc, rs->expr);
+ irAddr const &addr = ir_build_addr(proc, expr);
irValue *map = ir_addr_get_ptr(proc, addr);
if (is_type_pointer(type_deref(ir_addr_type(addr)))) {
map = ir_addr_load(proc, addr);
@@ -9692,7 +9692,7 @@ void ir_build_stmt_internal(irProcedure *proc, Ast *node) {
}
case Type_Array: {
irValue *count_ptr = nullptr;
- irValue *array = ir_build_addr_ptr(proc, rs->expr);
+ irValue *array = ir_build_addr_ptr(proc, expr);
if (is_type_pointer(type_deref(ir_type(array)))) {
array = ir_emit_load(proc, array);
}
@@ -9703,7 +9703,7 @@ void ir_build_stmt_internal(irProcedure *proc, Ast *node) {
}
case Type_DynamicArray: {
irValue *count_ptr = nullptr;
- irValue *array = ir_build_addr_ptr(proc, rs->expr);
+ irValue *array = ir_build_addr_ptr(proc, expr);
if (is_type_pointer(type_deref(ir_type(array)))) {
array = ir_emit_load(proc, array);
}
@@ -9713,7 +9713,7 @@ void ir_build_stmt_internal(irProcedure *proc, Ast *node) {
}
case Type_Slice: {
irValue *count_ptr = nullptr;
- irValue *slice = ir_build_expr(proc, rs->expr);
+ irValue *slice = ir_build_expr(proc, expr);
if (is_type_pointer(ir_type(slice))) {
count_ptr = ir_emit_struct_ep(proc, slice, 1);
slice = ir_emit_load(proc, slice);
@@ -9725,7 +9725,7 @@ void ir_build_stmt_internal(irProcedure *proc, Ast *node) {
break;
}
case Type_Basic: {
- irValue *string = ir_build_expr(proc, rs->expr);
+ irValue *string = ir_build_expr(proc, expr);
if (is_type_pointer(ir_type(string))) {
string = ir_emit_load(proc, string);
}
@@ -9740,7 +9740,7 @@ void ir_build_stmt_internal(irProcedure *proc, Ast *node) {
break;
}
case Type_Tuple:
- ir_build_range_tuple(proc, rs->expr, val0_type, val1_type, &val, &key, &loop, &done);
+ ir_build_range_tuple(proc, expr, val0_type, val1_type, &val, &key, &loop, &done);
break;
default:
GB_PANIC("Cannot range over %s", type_to_string(expr_type));