| ... | @@ -8106,9 +8106,9 @@ static IrInstSrc *ir_gen_while_expr(IrBuilderSrc *irb, Scope *scope, AstNode *no | ... | @@ -8106,9 +8106,9 @@ static IrInstSrc *ir_gen_while_expr(IrBuilderSrc *irb, Scope *scope, AstNode *no |
| 8106 | if (var_symbol) { | 8106 | if (var_symbol) { |
| 8107 | IrInstSrc *payload_ptr = ir_build_unwrap_err_payload_src(irb, &spill_scope->base, symbol_node, | 8107 | IrInstSrc *payload_ptr = ir_build_unwrap_err_payload_src(irb, &spill_scope->base, symbol_node, |
| 8108 | err_val_ptr, false, false); | 8108 | err_val_ptr, false, false); |
| 8109 | IrInstSrc *var_ptr = node->data.while_expr.var_is_ptr ? | 8109 | IrInstSrc *var_value = node->data.while_expr.var_is_ptr ? |
| 8110 | ir_build_ref_src(irb, &spill_scope->base, symbol_node, payload_ptr, true, false) : payload_ptr; | 8110 | payload_ptr : ir_build_load_ptr(irb, &spill_scope->base, symbol_node, payload_ptr); |
| 8111 | ir_build_var_decl_src(irb, payload_scope, symbol_node, payload_var, nullptr, var_ptr); | 8111 | build_decl_var_and_init(irb, payload_scope, symbol_node, payload_var, var_value, buf_ptr(var_symbol), is_comptime); |
| 8112 | } | 8112 | } |
| 8113 | | 8113 | |
| 8114 | ZigList<IrInstSrc *> incoming_values = {0}; | 8114 | ZigList<IrInstSrc *> incoming_values = {0}; |
| ... | @@ -8156,7 +8156,8 @@ static IrInstSrc *ir_gen_while_expr(IrBuilderSrc *irb, Scope *scope, AstNode *no | ... | @@ -8156,7 +8156,8 @@ static IrInstSrc *ir_gen_while_expr(IrBuilderSrc *irb, Scope *scope, AstNode *no |
| 8156 | true, false, false, is_comptime); | 8156 | true, false, false, is_comptime); |
| 8157 | Scope *err_scope = err_var->child_scope; | 8157 | Scope *err_scope = err_var->child_scope; |
| 8158 | IrInstSrc *err_ptr = ir_build_unwrap_err_code_src(irb, err_scope, err_symbol_node, err_val_ptr); | 8158 | IrInstSrc *err_ptr = ir_build_unwrap_err_code_src(irb, err_scope, err_symbol_node, err_val_ptr); |
| 8159 | ir_build_var_decl_src(irb, err_scope, symbol_node, err_var, nullptr, err_ptr); | 8159 | IrInstSrc *err_value = ir_build_load_ptr(irb, err_scope, err_symbol_node, err_ptr); |
| | 8160 | build_decl_var_and_init(irb, err_scope, err_symbol_node, err_var, err_value, buf_ptr(err_symbol), is_comptime); |
| 8160 | | 8161 | |
| 8161 | if (peer_parent->peers.length != 0) { | 8162 | if (peer_parent->peers.length != 0) { |
| 8162 | peer_parent->peers.last()->next_bb = else_block; | 8163 | peer_parent->peers.last()->next_bb = else_block; |
| ... | @@ -8217,9 +8218,9 @@ static IrInstSrc *ir_gen_while_expr(IrBuilderSrc *irb, Scope *scope, AstNode *no | ... | @@ -8217,9 +8218,9 @@ static IrInstSrc *ir_gen_while_expr(IrBuilderSrc *irb, Scope *scope, AstNode *no |
| 8217 | | 8218 | |
| 8218 | ir_set_cursor_at_end_and_append_block(irb, body_block); | 8219 | ir_set_cursor_at_end_and_append_block(irb, body_block); |
| 8219 | IrInstSrc *payload_ptr = ir_build_optional_unwrap_ptr(irb, &spill_scope->base, symbol_node, maybe_val_ptr, false, false); | 8220 | IrInstSrc *payload_ptr = ir_build_optional_unwrap_ptr(irb, &spill_scope->base, symbol_node, maybe_val_ptr, false, false); |
| 8220 | IrInstSrc *var_ptr = node->data.while_expr.var_is_ptr ? | 8221 | IrInstSrc *var_value = node->data.while_expr.var_is_ptr ? |
| 8221 | ir_build_ref_src(irb, &spill_scope->base, symbol_node, payload_ptr, true, false) : payload_ptr; | 8222 | payload_ptr : ir_build_load_ptr(irb, &spill_scope->base, symbol_node, payload_ptr); |
| 8222 | ir_build_var_decl_src(irb, child_scope, symbol_node, payload_var, nullptr, var_ptr); | 8223 | build_decl_var_and_init(irb, child_scope, symbol_node, payload_var, var_value, buf_ptr(var_symbol), is_comptime); |
| 8223 | | 8224 | |
| 8224 | ZigList<IrInstSrc *> incoming_values = {0}; | 8225 | ZigList<IrInstSrc *> incoming_values = {0}; |
| 8225 | ZigList<IrBasicBlockSrc *> incoming_blocks = {0}; | 8226 | ZigList<IrBasicBlockSrc *> incoming_blocks = {0}; |
| ... | @@ -8458,9 +8459,9 @@ static IrInstSrc *ir_gen_for_expr(IrBuilderSrc *irb, Scope *parent_scope, AstNod | ... | @@ -8458,9 +8459,9 @@ static IrInstSrc *ir_gen_for_expr(IrBuilderSrc *irb, Scope *parent_scope, AstNod |
| 8458 | ZigVar *elem_var = ir_create_var(irb, elem_node, parent_scope, elem_var_name, true, false, false, is_comptime); | 8459 | ZigVar *elem_var = ir_create_var(irb, elem_node, parent_scope, elem_var_name, true, false, false, is_comptime); |
| 8459 | Scope *child_scope = elem_var->child_scope; | 8460 | Scope *child_scope = elem_var->child_scope; |
| 8460 | | 8461 | |
| 8461 | IrInstSrc *var_ptr = node->data.for_expr.elem_is_ptr ? | 8462 | IrInstSrc *elem_value = node->data.for_expr.elem_is_ptr ? |
| 8462 | ir_build_ref_src(irb, &spill_scope->base, elem_node, elem_ptr, true, false) : elem_ptr; | 8463 | elem_ptr : ir_build_load_ptr(irb, &spill_scope->base, elem_node, elem_ptr); |
| 8463 | ir_build_var_decl_src(irb, parent_scope, elem_node, elem_var, nullptr, var_ptr); | 8464 | build_decl_var_and_init(irb, parent_scope, elem_node, elem_var, elem_value, buf_ptr(elem_var_name), is_comptime); |
| 8464 | | 8465 | |
| 8465 | ZigList<IrInstSrc *> incoming_values = {0}; | 8466 | ZigList<IrInstSrc *> incoming_values = {0}; |
| 8466 | ZigList<IrBasicBlockSrc *> incoming_blocks = {0}; | 8467 | ZigList<IrBasicBlockSrc *> incoming_blocks = {0}; |
| ... | @@ -8880,8 +8881,9 @@ static IrInstSrc *ir_gen_if_optional_expr(IrBuilderSrc *irb, Scope *scope, AstNo | ... | @@ -8880,8 +8881,9 @@ static IrInstSrc *ir_gen_if_optional_expr(IrBuilderSrc *irb, Scope *scope, AstNo |
| 8880 | var_symbol, is_const, is_const, is_shadowable, is_comptime); | 8881 | var_symbol, is_const, is_const, is_shadowable, is_comptime); |
| 8881 | | 8882 | |
| 8882 | IrInstSrc *payload_ptr = ir_build_optional_unwrap_ptr(irb, subexpr_scope, node, maybe_val_ptr, false, false); | 8883 | IrInstSrc *payload_ptr = ir_build_optional_unwrap_ptr(irb, subexpr_scope, node, maybe_val_ptr, false, false); |
| 8883 | IrInstSrc *var_ptr = var_is_ptr ? ir_build_ref_src(irb, subexpr_scope, node, payload_ptr, true, false) : payload_ptr; | 8884 | IrInstSrc *var_value = var_is_ptr ? |
| 8884 | ir_build_var_decl_src(irb, subexpr_scope, node, var, nullptr, var_ptr); | 8885 | payload_ptr : ir_build_load_ptr(irb, &spill_scope->base, node, payload_ptr); |
| | 8886 | build_decl_var_and_init(irb, subexpr_scope, node, var, var_value, buf_ptr(var_symbol), is_comptime); |
| 8885 | var_scope = var->child_scope; | 8887 | var_scope = var->child_scope; |
| 8886 | } else { | 8888 | } else { |
| 8887 | var_scope = subexpr_scope; | 8889 | var_scope = subexpr_scope; |
| ... | @@ -8962,9 +8964,9 @@ static IrInstSrc *ir_gen_if_err_expr(IrBuilderSrc *irb, Scope *scope, AstNode *n | ... | @@ -8962,9 +8964,9 @@ static IrInstSrc *ir_gen_if_err_expr(IrBuilderSrc *irb, Scope *scope, AstNode *n |
| 8962 | var_symbol, var_is_const, var_is_const, is_shadowable, var_is_comptime); | 8964 | var_symbol, var_is_const, var_is_const, is_shadowable, var_is_comptime); |
| 8963 | | 8965 | |
| 8964 | IrInstSrc *payload_ptr = ir_build_unwrap_err_payload_src(irb, subexpr_scope, node, err_val_ptr, false, false); | 8966 | IrInstSrc *payload_ptr = ir_build_unwrap_err_payload_src(irb, subexpr_scope, node, err_val_ptr, false, false); |
| 8965 | IrInstSrc *var_ptr = var_is_ptr ? | 8967 | IrInstSrc *var_value = var_is_ptr ? |
| 8966 | ir_build_ref_src(irb, subexpr_scope, node, payload_ptr, true, false) : payload_ptr; | 8968 | payload_ptr : ir_build_load_ptr(irb, subexpr_scope, node, payload_ptr); |
| 8967 | ir_build_var_decl_src(irb, subexpr_scope, node, var, nullptr, var_ptr); | 8969 | build_decl_var_and_init(irb, subexpr_scope, node, var, var_value, buf_ptr(var_symbol), var_is_comptime); |
| 8968 | var_scope = var->child_scope; | 8970 | var_scope = var->child_scope; |
| 8969 | } else { | 8971 | } else { |
| 8970 | var_scope = subexpr_scope; | 8972 | var_scope = subexpr_scope; |
| ... | @@ -8989,7 +8991,8 @@ static IrInstSrc *ir_gen_if_err_expr(IrBuilderSrc *irb, Scope *scope, AstNode *n | ... | @@ -8989,7 +8991,8 @@ static IrInstSrc *ir_gen_if_err_expr(IrBuilderSrc *irb, Scope *scope, AstNode *n |
| 8989 | err_symbol, is_const, is_const, is_shadowable, is_comptime); | 8991 | err_symbol, is_const, is_const, is_shadowable, is_comptime); |
| 8990 | | 8992 | |
| 8991 | IrInstSrc *err_ptr = ir_build_unwrap_err_code_src(irb, subexpr_scope, node, err_val_ptr); | 8993 | IrInstSrc *err_ptr = ir_build_unwrap_err_code_src(irb, subexpr_scope, node, err_val_ptr); |
| 8992 | ir_build_var_decl_src(irb, subexpr_scope, node, var, nullptr, err_ptr); | 8994 | IrInstSrc *err_value = ir_build_load_ptr(irb, subexpr_scope, node, err_ptr); |
| | 8995 | build_decl_var_and_init(irb, subexpr_scope, node, var, err_value, buf_ptr(err_symbol), is_comptime); |
| 8993 | err_var_scope = var->child_scope; | 8996 | err_var_scope = var->child_scope; |
| 8994 | } else { | 8997 | } else { |
| 8995 | err_var_scope = subexpr_scope; | 8998 | err_var_scope = subexpr_scope; |
| ... | @@ -9039,22 +9042,24 @@ static bool ir_gen_switch_prong_expr(IrBuilderSrc *irb, Scope *scope, AstNode *s | ... | @@ -9039,22 +9042,24 @@ static bool ir_gen_switch_prong_expr(IrBuilderSrc *irb, Scope *scope, AstNode *s |
| 9039 | ZigVar *var = ir_create_var(irb, var_symbol_node, scope, | 9042 | ZigVar *var = ir_create_var(irb, var_symbol_node, scope, |
| 9040 | var_name, is_const, is_const, is_shadowable, var_is_comptime); | 9043 | var_name, is_const, is_const, is_shadowable, var_is_comptime); |
| 9041 | child_scope = var->child_scope; | 9044 | child_scope = var->child_scope; |
| 9042 | IrInstSrc *var_ptr; | 9045 | IrInstSrc *var_value; |
| 9043 | if (out_switch_else_var != nullptr) { | 9046 | if (out_switch_else_var != nullptr) { |
| 9044 | IrInstSrcSwitchElseVar *switch_else_var = ir_build_switch_else_var(irb, scope, var_symbol_node, | 9047 | IrInstSrcSwitchElseVar *switch_else_var = ir_build_switch_else_var(irb, scope, var_symbol_node, |
| 9045 | target_value_ptr); | 9048 | target_value_ptr); |
| 9046 | *out_switch_else_var = switch_else_var; | 9049 | *out_switch_else_var = switch_else_var; |
| 9047 | IrInstSrc *payload_ptr = &switch_else_var->base; | 9050 | IrInstSrc *payload_ptr = &switch_else_var->base; |
| 9048 | var_ptr = var_is_ptr ? ir_build_ref_src(irb, scope, var_symbol_node, payload_ptr, true, false) : payload_ptr; | 9051 | var_value = var_is_ptr ? |
| | 9052 | payload_ptr : ir_build_load_ptr(irb, scope, var_symbol_node, payload_ptr); |
| 9049 | } else if (prong_values != nullptr) { | 9053 | } else if (prong_values != nullptr) { |
| 9050 | IrInstSrc *payload_ptr = ir_build_switch_var(irb, scope, var_symbol_node, target_value_ptr, | 9054 | IrInstSrc *payload_ptr = ir_build_switch_var(irb, scope, var_symbol_node, target_value_ptr, |
| 9051 | prong_values, prong_values_len); | 9055 | prong_values, prong_values_len); |
| 9052 | var_ptr = var_is_ptr ? ir_build_ref_src(irb, scope, var_symbol_node, payload_ptr, true, false) : payload_ptr; | 9056 | var_value = var_is_ptr ? |
| | 9057 | payload_ptr : ir_build_load_ptr(irb, scope, var_symbol_node, payload_ptr); |
| 9053 | } else { | 9058 | } else { |
| 9054 | var_ptr = var_is_ptr ? | 9059 | var_value = var_is_ptr ? |
| 9055 | ir_build_ref_src(irb, scope, var_symbol_node, target_value_ptr, true, false) : target_value_ptr; | 9060 | target_value_ptr : ir_build_load_ptr(irb, scope, var_symbol_node, target_value_ptr); |
| 9056 | } | 9061 | } |
| 9057 | ir_build_var_decl_src(irb, scope, var_symbol_node, var, nullptr, var_ptr); | 9062 | build_decl_var_and_init(irb, scope, var_symbol_node, var, var_value, buf_ptr(var_name), var_is_comptime); |
| 9058 | } else { | 9063 | } else { |
| 9059 | child_scope = scope; | 9064 | child_scope = scope; |
| 9060 | } | 9065 | } |
| ... | @@ -9627,7 +9632,8 @@ static IrInstSrc *ir_gen_catch(IrBuilderSrc *irb, Scope *parent_scope, AstNode * | ... | @@ -9627,7 +9632,8 @@ static IrInstSrc *ir_gen_catch(IrBuilderSrc *irb, Scope *parent_scope, AstNode * |
| 9627 | is_const, is_const, is_shadowable, is_comptime); | 9632 | is_const, is_const, is_shadowable, is_comptime); |
| 9628 | err_scope = var->child_scope; | 9633 | err_scope = var->child_scope; |
| 9629 | IrInstSrc *err_ptr = ir_build_unwrap_err_code_src(irb, err_scope, node, err_union_ptr); | 9634 | IrInstSrc *err_ptr = ir_build_unwrap_err_code_src(irb, err_scope, node, err_union_ptr); |
| 9630 | ir_build_var_decl_src(irb, err_scope, var_node, var, nullptr, err_ptr); | 9635 | IrInstSrc *err_value = ir_build_load_ptr(irb, err_scope, var_node, err_ptr); |
| | 9636 | build_decl_var_and_init(irb, err_scope, var_node, var, err_value, buf_ptr(var_name), is_comptime); |
| 9631 | } else { | 9637 | } else { |
| 9632 | err_scope = subexpr_scope; | 9638 | err_scope = subexpr_scope; |
| 9633 | } | 9639 | } |