Commit f5d4fe3e17
Changed files (5)
src/stage1/all_types.hpp
@@ -1123,6 +1123,14 @@ struct AstNodeContainerInitExpr {
ContainerInitKind kind;
};
+struct AstNodeIdentifier {
+ Buf *name;
+};
+
+struct AstNodeEnumLiteral {
+ Buf *name;
+};
+
struct AstNodeBoolLiteral {
bool value;
};
@@ -1204,6 +1212,12 @@ struct AstNode {
AstNodeAwaitExpr await_expr;
AstNodeSuspend suspend;
AstNodeAnyFrameType anyframe_type;
+
+ // These are part of an astgen workaround to use less memory by
+ // memoizing into the AST. Once astgen is modified to only run once
+ // per corresponding source, this workaround can be removed.
+ AstNodeIdentifier identifier;
+ AstNodeEnumLiteral enum_literal;
} data;
// This is a function for use in the debugger to print
src/stage1/astgen.cpp
@@ -21,15 +21,15 @@ struct Stage1AstGen {
bool in_c_import_scope;
};
-static IrInstSrc *ir_gen_node(Stage1AstGen *ag, AstNode *node, Scope *scope);
-static IrInstSrc *ir_gen_node_extra(Stage1AstGen *ag, AstNode *node, Scope *scope, LVal lval,
+static IrInstSrc *astgen_node(Stage1AstGen *ag, AstNode *node, Scope *scope);
+static IrInstSrc *astgen_node_extra(Stage1AstGen *ag, AstNode *node, Scope *scope, LVal lval,
ResultLoc *result_loc);
static IrInstSrc *ir_lval_wrap(Stage1AstGen *ag, Scope *scope, IrInstSrc *value, LVal lval,
ResultLoc *result_loc);
static IrInstSrc *ir_expr_wrap(Stage1AstGen *ag, Scope *scope, IrInstSrc *inst,
ResultLoc *result_loc);
-static IrInstSrc *ir_gen_union_init_expr(Stage1AstGen *ag, Scope *scope, AstNode *source_node,
+static IrInstSrc *astgen_union_init_expr(Stage1AstGen *ag, Scope *scope, AstNode *source_node,
IrInstSrc *union_type, IrInstSrc *field_name, AstNode *expr_node,
LVal lval, ResultLoc *parent_result_loc);
static ResultLocCast *ir_build_cast_result_loc(Stage1AstGen *ag, IrInstSrc *dest_type,
@@ -2890,7 +2890,7 @@ static IrInstSrc *ir_mark_gen(IrInstSrc *instruction) {
return instruction;
}
-static bool ir_gen_defers_for_block(Stage1AstGen *ag, Scope *inner_scope, Scope *outer_scope, bool *is_noreturn, IrInstSrc *err_value) {
+static bool astgen_defers_for_block(Stage1AstGen *ag, Scope *inner_scope, Scope *outer_scope, bool *is_noreturn, IrInstSrc *err_value) {
Scope *scope = inner_scope;
if (is_noreturn != nullptr) *is_noreturn = false;
while (scope != outer_scope) {
@@ -2941,7 +2941,7 @@ static bool ir_gen_defers_for_block(Stage1AstGen *ag, Scope *inner_scope, Scope
defer_expr_scope = err_var->child_scope;
}
- IrInstSrc *defer_expr_value = ir_gen_node(ag, defer_expr_node, defer_expr_scope);
+ IrInstSrc *defer_expr_value = astgen_node(ag, defer_expr_node, defer_expr_scope);
if (defer_expr_value == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
@@ -3011,7 +3011,7 @@ static ScopeDeferExpr *get_scope_defer_expr(Scope *scope) {
return nullptr;
}
-static IrInstSrc *ir_gen_return(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval, ResultLoc *result_loc) {
+static IrInstSrc *astgen_return(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval, ResultLoc *result_loc) {
assert(node->type == NodeTypeReturnExpr);
ScopeDeferExpr *scope_defer_expr = get_scope_defer_expr(scope);
@@ -3038,7 +3038,7 @@ static IrInstSrc *ir_gen_return(Stage1AstGen *ag, Scope *scope, AstNode *node, L
// Temporarily set this so that if we return a type it gets the name of the function
ZigFn *prev_name_fn = ag->exec->name_fn;
ag->exec->name_fn = ag->fn;
- return_value = ir_gen_node_extra(ag, expr_node, scope, LValNone, &result_loc_ret->base);
+ return_value = astgen_node_extra(ag, expr_node, scope, LValNone, &result_loc_ret->base);
ag->exec->name_fn = prev_name_fn;
if (return_value == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
@@ -3054,7 +3054,7 @@ static IrInstSrc *ir_gen_return(Stage1AstGen *ag, Scope *scope, AstNode *node, L
bool have_err_defers = defer_counts[ReturnKindError] > 0;
if (!have_err_defers && !ag->codegen->have_err_ret_tracing) {
// only generate unconditional defers
- if (!ir_gen_defers_for_block(ag, scope, outer_scope, nullptr, nullptr))
+ if (!astgen_defers_for_block(ag, scope, outer_scope, nullptr, nullptr))
return ag->codegen->invalid_inst_src;
IrInstSrc *result = ir_build_return_src(ag, scope, node, nullptr);
result_loc_ret->base.source_instruction = result;
@@ -3078,7 +3078,7 @@ static IrInstSrc *ir_gen_return(Stage1AstGen *ag, Scope *scope, AstNode *node, L
Stage1ZirBasicBlock *ret_stmt_block = ir_create_basic_block(ag, scope, "RetStmt");
ir_set_cursor_at_end_and_append_block(ag, err_block);
- if (!ir_gen_defers_for_block(ag, scope, outer_scope, nullptr, return_value))
+ if (!astgen_defers_for_block(ag, scope, outer_scope, nullptr, return_value))
return ag->codegen->invalid_inst_src;
if (ag->codegen->have_err_ret_tracing && !should_inline) {
ir_build_save_err_ret_addr_src(ag, scope, node);
@@ -3086,7 +3086,7 @@ static IrInstSrc *ir_gen_return(Stage1AstGen *ag, Scope *scope, AstNode *node, L
ir_build_br(ag, scope, node, ret_stmt_block, is_comptime);
ir_set_cursor_at_end_and_append_block(ag, ok_block);
- if (!ir_gen_defers_for_block(ag, scope, outer_scope, nullptr, nullptr))
+ if (!astgen_defers_for_block(ag, scope, outer_scope, nullptr, nullptr))
return ag->codegen->invalid_inst_src;
ir_build_br(ag, scope, node, ret_stmt_block, is_comptime);
@@ -3098,7 +3098,7 @@ static IrInstSrc *ir_gen_return(Stage1AstGen *ag, Scope *scope, AstNode *node, L
case ReturnKindError:
{
assert(expr_node);
- IrInstSrc *err_union_ptr = ir_gen_node_extra(ag, expr_node, scope, LValPtr, nullptr);
+ IrInstSrc *err_union_ptr = astgen_node_extra(ag, expr_node, scope, LValPtr, nullptr);
if (err_union_ptr == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
IrInstSrc *is_err_val = ir_build_test_err_src(ag, scope, node, err_union_ptr, true, false);
@@ -3126,7 +3126,7 @@ static IrInstSrc *ir_gen_return(Stage1AstGen *ag, Scope *scope, AstNode *node, L
ir_build_end_expr(ag, scope, node, err_val, &result_loc_ret->base);
bool is_noreturn = false;
- if (!ir_gen_defers_for_block(ag, scope, outer_scope, &is_noreturn, err_val)) {
+ if (!astgen_defers_for_block(ag, scope, outer_scope, &is_noreturn, err_val)) {
return ag->codegen->invalid_inst_src;
}
if (!is_noreturn) {
@@ -3260,7 +3260,7 @@ static bool is_duplicate_label(CodeGen *g, Scope *scope, AstNode *node, Buf *nam
return false;
}
-static IrInstSrc *ir_gen_block(Stage1AstGen *ag, Scope *parent_scope, AstNode *block_node, LVal lval,
+static IrInstSrc *astgen_block(Stage1AstGen *ag, Scope *parent_scope, AstNode *block_node, LVal lval,
ResultLoc *result_loc)
{
assert(block_node->type == NodeTypeBlock);
@@ -3313,7 +3313,7 @@ static IrInstSrc *ir_gen_block(Stage1AstGen *ag, Scope *parent_scope, AstNode *b
for (size_t i = 0; i < block_node->data.block.statements.length; i += 1) {
AstNode *statement_node = block_node->data.block.statements.at(i);
- IrInstSrc *statement_value = ir_gen_node(ag, statement_node, child_scope);
+ IrInstSrc *statement_value = astgen_node(ag, statement_node, child_scope);
if (statement_value == ag->codegen->invalid_inst_src) {
// keep generating all the elements of the block in case of error,
// we want to collect other compile errors
@@ -3381,7 +3381,7 @@ static IrInstSrc *ir_gen_block(Stage1AstGen *ag, Scope *parent_scope, AstNode *b
bool is_return_from_fn = block_node == ag->main_block_node;
if (!is_return_from_fn) {
- if (!ir_gen_defers_for_block(ag, child_scope, outer_block_scope, nullptr, nullptr))
+ if (!astgen_defers_for_block(ag, child_scope, outer_block_scope, nullptr, nullptr))
return ag->codegen->invalid_inst_src;
}
@@ -3407,19 +3407,19 @@ static IrInstSrc *ir_gen_block(Stage1AstGen *ag, Scope *parent_scope, AstNode *b
result_loc_ret->base.id = ResultLocIdReturn;
ir_build_reset_result(ag, parent_scope, block_node, &result_loc_ret->base);
ir_mark_gen(ir_build_end_expr(ag, parent_scope, block_node, result, &result_loc_ret->base));
- if (!ir_gen_defers_for_block(ag, child_scope, outer_block_scope, nullptr, nullptr))
+ if (!astgen_defers_for_block(ag, child_scope, outer_block_scope, nullptr, nullptr))
return ag->codegen->invalid_inst_src;
return ir_mark_gen(ir_build_return_src(ag, child_scope, result->base.source_node, result));
}
-static IrInstSrc *ir_gen_bin_op_id(Stage1AstGen *ag, Scope *scope, AstNode *node, IrBinOp op_id) {
+static IrInstSrc *astgen_bin_op_id(Stage1AstGen *ag, Scope *scope, AstNode *node, IrBinOp op_id) {
Scope *inner_scope = scope;
if (op_id == IrBinOpArrayCat || op_id == IrBinOpArrayMult) {
inner_scope = create_comptime_scope(ag->codegen, node, scope);
}
- IrInstSrc *op1 = ir_gen_node(ag, node->data.bin_op_expr.op1, inner_scope);
- IrInstSrc *op2 = ir_gen_node(ag, node->data.bin_op_expr.op2, inner_scope);
+ IrInstSrc *op1 = astgen_node(ag, node->data.bin_op_expr.op1, inner_scope);
+ IrInstSrc *op2 = astgen_node(ag, node->data.bin_op_expr.op2, inner_scope);
if (op1 == ag->codegen->invalid_inst_src || op2 == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
@@ -3427,9 +3427,9 @@ static IrInstSrc *ir_gen_bin_op_id(Stage1AstGen *ag, Scope *scope, AstNode *node
return ir_build_bin_op(ag, scope, node, op_id, op1, op2, true);
}
-static IrInstSrc *ir_gen_merge_err_sets(Stage1AstGen *ag, Scope *scope, AstNode *node) {
- IrInstSrc *op1 = ir_gen_node(ag, node->data.bin_op_expr.op1, scope);
- IrInstSrc *op2 = ir_gen_node(ag, node->data.bin_op_expr.op2, scope);
+static IrInstSrc *astgen_merge_err_sets(Stage1AstGen *ag, Scope *scope, AstNode *node) {
+ IrInstSrc *op1 = astgen_node(ag, node->data.bin_op_expr.op1, scope);
+ IrInstSrc *op2 = astgen_node(ag, node->data.bin_op_expr.op2, scope);
if (op1 == ag->codegen->invalid_inst_src || op2 == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
@@ -3441,8 +3441,8 @@ static IrInstSrc *ir_gen_merge_err_sets(Stage1AstGen *ag, Scope *scope, AstNode
return ir_build_merge_err_sets(ag, scope, node, op1, op2, type_name);
}
-static IrInstSrc *ir_gen_assign(Stage1AstGen *ag, Scope *scope, AstNode *node) {
- IrInstSrc *lvalue = ir_gen_node_extra(ag, node->data.bin_op_expr.op1, scope, LValAssign, nullptr);
+static IrInstSrc *astgen_assign(Stage1AstGen *ag, Scope *scope, AstNode *node) {
+ IrInstSrc *lvalue = astgen_node_extra(ag, node->data.bin_op_expr.op1, scope, LValAssign, nullptr);
if (lvalue == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
@@ -3452,7 +3452,7 @@ static IrInstSrc *ir_gen_assign(Stage1AstGen *ag, Scope *scope, AstNode *node) {
ir_ref_instruction(lvalue, ag->current_basic_block);
ir_build_reset_result(ag, scope, node, &result_loc_inst->base);
- IrInstSrc *rvalue = ir_gen_node_extra(ag, node->data.bin_op_expr.op2, scope, LValNone,
+ IrInstSrc *rvalue = astgen_node_extra(ag, node->data.bin_op_expr.op2, scope, LValNone,
&result_loc_inst->base);
if (rvalue == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
@@ -3460,12 +3460,12 @@ static IrInstSrc *ir_gen_assign(Stage1AstGen *ag, Scope *scope, AstNode *node) {
return ir_build_const_void(ag, scope, node);
}
-static IrInstSrc *ir_gen_assign_op(Stage1AstGen *ag, Scope *scope, AstNode *node, IrBinOp op_id) {
- IrInstSrc *lvalue = ir_gen_node_extra(ag, node->data.bin_op_expr.op1, scope, LValAssign, nullptr);
+static IrInstSrc *astgen_assign_op(Stage1AstGen *ag, Scope *scope, AstNode *node, IrBinOp op_id) {
+ IrInstSrc *lvalue = astgen_node_extra(ag, node->data.bin_op_expr.op1, scope, LValAssign, nullptr);
if (lvalue == ag->codegen->invalid_inst_src)
return lvalue;
IrInstSrc *op1 = ir_build_load_ptr(ag, scope, node->data.bin_op_expr.op1, lvalue);
- IrInstSrc *op2 = ir_gen_node(ag, node->data.bin_op_expr.op2, scope);
+ IrInstSrc *op2 = astgen_node(ag, node->data.bin_op_expr.op2, scope);
if (op2 == ag->codegen->invalid_inst_src)
return op2;
IrInstSrc *result = ir_build_bin_op(ag, scope, node, op_id, op1, op2, true);
@@ -3473,10 +3473,10 @@ static IrInstSrc *ir_gen_assign_op(Stage1AstGen *ag, Scope *scope, AstNode *node
return ir_build_const_void(ag, scope, node);
}
-static IrInstSrc *ir_gen_bool_or(Stage1AstGen *ag, Scope *scope, AstNode *node) {
+static IrInstSrc *astgen_bool_or(Stage1AstGen *ag, Scope *scope, AstNode *node) {
assert(node->type == NodeTypeBinOpExpr);
- IrInstSrc *val1 = ir_gen_node(ag, node->data.bin_op_expr.op1, scope);
+ IrInstSrc *val1 = astgen_node(ag, node->data.bin_op_expr.op1, scope);
if (val1 == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
Stage1ZirBasicBlock *post_val1_block = ag->current_basic_block;
@@ -3496,7 +3496,7 @@ static IrInstSrc *ir_gen_bool_or(Stage1AstGen *ag, Scope *scope, AstNode *node)
ir_build_cond_br(ag, scope, node, val1, true_block, false_block, is_comptime);
ir_set_cursor_at_end_and_append_block(ag, false_block);
- IrInstSrc *val2 = ir_gen_node(ag, node->data.bin_op_expr.op2, scope);
+ IrInstSrc *val2 = astgen_node(ag, node->data.bin_op_expr.op2, scope);
if (val2 == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
Stage1ZirBasicBlock *post_val2_block = ag->current_basic_block;
@@ -3515,10 +3515,10 @@ static IrInstSrc *ir_gen_bool_or(Stage1AstGen *ag, Scope *scope, AstNode *node)
return ir_build_phi(ag, scope, node, 2, incoming_blocks, incoming_values, nullptr);
}
-static IrInstSrc *ir_gen_bool_and(Stage1AstGen *ag, Scope *scope, AstNode *node) {
+static IrInstSrc *astgen_bool_and(Stage1AstGen *ag, Scope *scope, AstNode *node) {
assert(node->type == NodeTypeBinOpExpr);
- IrInstSrc *val1 = ir_gen_node(ag, node->data.bin_op_expr.op1, scope);
+ IrInstSrc *val1 = astgen_node(ag, node->data.bin_op_expr.op1, scope);
if (val1 == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
Stage1ZirBasicBlock *post_val1_block = ag->current_basic_block;
@@ -3538,7 +3538,7 @@ static IrInstSrc *ir_gen_bool_and(Stage1AstGen *ag, Scope *scope, AstNode *node)
ir_build_cond_br(ag, scope, node, val1, true_block, false_block, is_comptime);
ir_set_cursor_at_end_and_append_block(ag, true_block);
- IrInstSrc *val2 = ir_gen_node(ag, node->data.bin_op_expr.op2, scope);
+ IrInstSrc *val2 = astgen_node(ag, node->data.bin_op_expr.op2, scope);
if (val2 == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
Stage1ZirBasicBlock *post_val2_block = ag->current_basic_block;
@@ -3591,7 +3591,7 @@ static ResultLocPeerParent *ir_build_binary_result_peers(Stage1AstGen *ag, IrIns
return peer_parent;
}
-static IrInstSrc *ir_gen_orelse(Stage1AstGen *ag, Scope *parent_scope, AstNode *node, LVal lval,
+static IrInstSrc *astgen_orelse(Stage1AstGen *ag, Scope *parent_scope, AstNode *node, LVal lval,
ResultLoc *result_loc)
{
assert(node->type == NodeTypeBinOpExpr);
@@ -3599,7 +3599,7 @@ static IrInstSrc *ir_gen_orelse(Stage1AstGen *ag, Scope *parent_scope, AstNode *
AstNode *op1_node = node->data.bin_op_expr.op1;
AstNode *op2_node = node->data.bin_op_expr.op2;
- IrInstSrc *maybe_ptr = ir_gen_node_extra(ag, op1_node, parent_scope, LValPtr, nullptr);
+ IrInstSrc *maybe_ptr = astgen_node_extra(ag, op1_node, parent_scope, LValPtr, nullptr);
if (maybe_ptr == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
@@ -3622,7 +3622,7 @@ static IrInstSrc *ir_gen_orelse(Stage1AstGen *ag, Scope *parent_scope, AstNode *
result_loc, is_comptime);
ir_set_cursor_at_end_and_append_block(ag, null_block);
- IrInstSrc *null_result = ir_gen_node_extra(ag, op2_node, parent_scope, LValNone,
+ IrInstSrc *null_result = astgen_node_extra(ag, op2_node, parent_scope, LValNone,
&peer_parent->peers.at(0)->base);
if (null_result == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
@@ -3648,24 +3648,24 @@ static IrInstSrc *ir_gen_orelse(Stage1AstGen *ag, Scope *parent_scope, AstNode *
return ir_lval_wrap(ag, parent_scope, phi, lval, result_loc);
}
-static IrInstSrc *ir_gen_error_union(Stage1AstGen *ag, Scope *parent_scope, AstNode *node) {
+static IrInstSrc *astgen_error_union(Stage1AstGen *ag, Scope *parent_scope, AstNode *node) {
assert(node->type == NodeTypeBinOpExpr);
AstNode *op1_node = node->data.bin_op_expr.op1;
AstNode *op2_node = node->data.bin_op_expr.op2;
- IrInstSrc *err_set = ir_gen_node(ag, op1_node, parent_scope);
+ IrInstSrc *err_set = astgen_node(ag, op1_node, parent_scope);
if (err_set == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
- IrInstSrc *payload = ir_gen_node(ag, op2_node, parent_scope);
+ IrInstSrc *payload = astgen_node(ag, op2_node, parent_scope);
if (payload == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
return ir_build_error_union(ag, parent_scope, node, err_set, payload);
}
-static IrInstSrc *ir_gen_bin_op(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval, ResultLoc *result_loc) {
+static IrInstSrc *astgen_bin_op(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval, ResultLoc *result_loc) {
assert(node->type == NodeTypeBinOpExpr);
BinOpType bin_op_type = node->data.bin_op_expr.bin_op;
@@ -3673,90 +3673,90 @@ static IrInstSrc *ir_gen_bin_op(Stage1AstGen *ag, Scope *scope, AstNode *node, L
case BinOpTypeInvalid:
zig_unreachable();
case BinOpTypeAssign:
- return ir_lval_wrap(ag, scope, ir_gen_assign(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_assign(ag, scope, node), lval, result_loc);
case BinOpTypeAssignTimes:
- return ir_lval_wrap(ag, scope, ir_gen_assign_op(ag, scope, node, IrBinOpMult), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_assign_op(ag, scope, node, IrBinOpMult), lval, result_loc);
case BinOpTypeAssignTimesWrap:
- return ir_lval_wrap(ag, scope, ir_gen_assign_op(ag, scope, node, IrBinOpMultWrap), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_assign_op(ag, scope, node, IrBinOpMultWrap), lval, result_loc);
case BinOpTypeAssignDiv:
- return ir_lval_wrap(ag, scope, ir_gen_assign_op(ag, scope, node, IrBinOpDivUnspecified), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_assign_op(ag, scope, node, IrBinOpDivUnspecified), lval, result_loc);
case BinOpTypeAssignMod:
- return ir_lval_wrap(ag, scope, ir_gen_assign_op(ag, scope, node, IrBinOpRemUnspecified), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_assign_op(ag, scope, node, IrBinOpRemUnspecified), lval, result_loc);
case BinOpTypeAssignPlus:
- return ir_lval_wrap(ag, scope, ir_gen_assign_op(ag, scope, node, IrBinOpAdd), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_assign_op(ag, scope, node, IrBinOpAdd), lval, result_loc);
case BinOpTypeAssignPlusWrap:
- return ir_lval_wrap(ag, scope, ir_gen_assign_op(ag, scope, node, IrBinOpAddWrap), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_assign_op(ag, scope, node, IrBinOpAddWrap), lval, result_loc);
case BinOpTypeAssignMinus:
- return ir_lval_wrap(ag, scope, ir_gen_assign_op(ag, scope, node, IrBinOpSub), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_assign_op(ag, scope, node, IrBinOpSub), lval, result_loc);
case BinOpTypeAssignMinusWrap:
- return ir_lval_wrap(ag, scope, ir_gen_assign_op(ag, scope, node, IrBinOpSubWrap), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_assign_op(ag, scope, node, IrBinOpSubWrap), lval, result_loc);
case BinOpTypeAssignBitShiftLeft:
- return ir_lval_wrap(ag, scope, ir_gen_assign_op(ag, scope, node, IrBinOpBitShiftLeftLossy), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_assign_op(ag, scope, node, IrBinOpBitShiftLeftLossy), lval, result_loc);
case BinOpTypeAssignBitShiftRight:
- return ir_lval_wrap(ag, scope, ir_gen_assign_op(ag, scope, node, IrBinOpBitShiftRightLossy), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_assign_op(ag, scope, node, IrBinOpBitShiftRightLossy), lval, result_loc);
case BinOpTypeAssignBitAnd:
- return ir_lval_wrap(ag, scope, ir_gen_assign_op(ag, scope, node, IrBinOpBinAnd), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_assign_op(ag, scope, node, IrBinOpBinAnd), lval, result_loc);
case BinOpTypeAssignBitXor:
- return ir_lval_wrap(ag, scope, ir_gen_assign_op(ag, scope, node, IrBinOpBinXor), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_assign_op(ag, scope, node, IrBinOpBinXor), lval, result_loc);
case BinOpTypeAssignBitOr:
- return ir_lval_wrap(ag, scope, ir_gen_assign_op(ag, scope, node, IrBinOpBinOr), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_assign_op(ag, scope, node, IrBinOpBinOr), lval, result_loc);
case BinOpTypeBoolOr:
- return ir_lval_wrap(ag, scope, ir_gen_bool_or(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_bool_or(ag, scope, node), lval, result_loc);
case BinOpTypeBoolAnd:
- return ir_lval_wrap(ag, scope, ir_gen_bool_and(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_bool_and(ag, scope, node), lval, result_loc);
case BinOpTypeCmpEq:
- return ir_lval_wrap(ag, scope, ir_gen_bin_op_id(ag, scope, node, IrBinOpCmpEq), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_bin_op_id(ag, scope, node, IrBinOpCmpEq), lval, result_loc);
case BinOpTypeCmpNotEq:
- return ir_lval_wrap(ag, scope, ir_gen_bin_op_id(ag, scope, node, IrBinOpCmpNotEq), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_bin_op_id(ag, scope, node, IrBinOpCmpNotEq), lval, result_loc);
case BinOpTypeCmpLessThan:
- return ir_lval_wrap(ag, scope, ir_gen_bin_op_id(ag, scope, node, IrBinOpCmpLessThan), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_bin_op_id(ag, scope, node, IrBinOpCmpLessThan), lval, result_loc);
case BinOpTypeCmpGreaterThan:
- return ir_lval_wrap(ag, scope, ir_gen_bin_op_id(ag, scope, node, IrBinOpCmpGreaterThan), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_bin_op_id(ag, scope, node, IrBinOpCmpGreaterThan), lval, result_loc);
case BinOpTypeCmpLessOrEq:
- return ir_lval_wrap(ag, scope, ir_gen_bin_op_id(ag, scope, node, IrBinOpCmpLessOrEq), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_bin_op_id(ag, scope, node, IrBinOpCmpLessOrEq), lval, result_loc);
case BinOpTypeCmpGreaterOrEq:
- return ir_lval_wrap(ag, scope, ir_gen_bin_op_id(ag, scope, node, IrBinOpCmpGreaterOrEq), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_bin_op_id(ag, scope, node, IrBinOpCmpGreaterOrEq), lval, result_loc);
case BinOpTypeBinOr:
- return ir_lval_wrap(ag, scope, ir_gen_bin_op_id(ag, scope, node, IrBinOpBinOr), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_bin_op_id(ag, scope, node, IrBinOpBinOr), lval, result_loc);
case BinOpTypeBinXor:
- return ir_lval_wrap(ag, scope, ir_gen_bin_op_id(ag, scope, node, IrBinOpBinXor), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_bin_op_id(ag, scope, node, IrBinOpBinXor), lval, result_loc);
case BinOpTypeBinAnd:
- return ir_lval_wrap(ag, scope, ir_gen_bin_op_id(ag, scope, node, IrBinOpBinAnd), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_bin_op_id(ag, scope, node, IrBinOpBinAnd), lval, result_loc);
case BinOpTypeBitShiftLeft:
- return ir_lval_wrap(ag, scope, ir_gen_bin_op_id(ag, scope, node, IrBinOpBitShiftLeftLossy), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_bin_op_id(ag, scope, node, IrBinOpBitShiftLeftLossy), lval, result_loc);
case BinOpTypeBitShiftRight:
- return ir_lval_wrap(ag, scope, ir_gen_bin_op_id(ag, scope, node, IrBinOpBitShiftRightLossy), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_bin_op_id(ag, scope, node, IrBinOpBitShiftRightLossy), lval, result_loc);
case BinOpTypeAdd:
- return ir_lval_wrap(ag, scope, ir_gen_bin_op_id(ag, scope, node, IrBinOpAdd), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_bin_op_id(ag, scope, node, IrBinOpAdd), lval, result_loc);
case BinOpTypeAddWrap:
- return ir_lval_wrap(ag, scope, ir_gen_bin_op_id(ag, scope, node, IrBinOpAddWrap), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_bin_op_id(ag, scope, node, IrBinOpAddWrap), lval, result_loc);
case BinOpTypeSub:
- return ir_lval_wrap(ag, scope, ir_gen_bin_op_id(ag, scope, node, IrBinOpSub), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_bin_op_id(ag, scope, node, IrBinOpSub), lval, result_loc);
case BinOpTypeSubWrap:
- return ir_lval_wrap(ag, scope, ir_gen_bin_op_id(ag, scope, node, IrBinOpSubWrap), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_bin_op_id(ag, scope, node, IrBinOpSubWrap), lval, result_loc);
case BinOpTypeMult:
- return ir_lval_wrap(ag, scope, ir_gen_bin_op_id(ag, scope, node, IrBinOpMult), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_bin_op_id(ag, scope, node, IrBinOpMult), lval, result_loc);
case BinOpTypeMultWrap:
- return ir_lval_wrap(ag, scope, ir_gen_bin_op_id(ag, scope, node, IrBinOpMultWrap), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_bin_op_id(ag, scope, node, IrBinOpMultWrap), lval, result_loc);
case BinOpTypeDiv:
- return ir_lval_wrap(ag, scope, ir_gen_bin_op_id(ag, scope, node, IrBinOpDivUnspecified), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_bin_op_id(ag, scope, node, IrBinOpDivUnspecified), lval, result_loc);
case BinOpTypeMod:
- return ir_lval_wrap(ag, scope, ir_gen_bin_op_id(ag, scope, node, IrBinOpRemUnspecified), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_bin_op_id(ag, scope, node, IrBinOpRemUnspecified), lval, result_loc);
case BinOpTypeArrayCat:
- return ir_lval_wrap(ag, scope, ir_gen_bin_op_id(ag, scope, node, IrBinOpArrayCat), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_bin_op_id(ag, scope, node, IrBinOpArrayCat), lval, result_loc);
case BinOpTypeArrayMult:
- return ir_lval_wrap(ag, scope, ir_gen_bin_op_id(ag, scope, node, IrBinOpArrayMult), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_bin_op_id(ag, scope, node, IrBinOpArrayMult), lval, result_loc);
case BinOpTypeMergeErrorSets:
- return ir_lval_wrap(ag, scope, ir_gen_merge_err_sets(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_merge_err_sets(ag, scope, node), lval, result_loc);
case BinOpTypeUnwrapOptional:
- return ir_gen_orelse(ag, scope, node, lval, result_loc);
+ return astgen_orelse(ag, scope, node, lval, result_loc);
case BinOpTypeErrorUnion:
- return ir_lval_wrap(ag, scope, ir_gen_error_union(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_error_union(ag, scope, node), lval, result_loc);
}
zig_unreachable();
}
-static IrInstSrc *ir_gen_int_lit(Stage1AstGen *ag, Scope *scope, AstNode *node) {
+static IrInstSrc *astgen_int_lit(Stage1AstGen *ag, Scope *scope, AstNode *node) {
assert(node->type == NodeTypeIntLiteral);
RootStruct *root_struct = node->owner->data.structure.root_struct;
@@ -3765,7 +3765,7 @@ static IrInstSrc *ir_gen_int_lit(Stage1AstGen *ag, Scope *scope, AstNode *node)
return ir_build_const_bigint(ag, scope, node, bigint);
}
-static IrInstSrc *ir_gen_float_lit(Stage1AstGen *ag, Scope *scope, AstNode *node) {
+static IrInstSrc *astgen_float_lit(Stage1AstGen *ag, Scope *scope, AstNode *node) {
Error err;
assert(node->type == NodeTypeFloatLiteral);
@@ -3782,7 +3782,7 @@ static IrInstSrc *ir_gen_float_lit(Stage1AstGen *ag, Scope *scope, AstNode *node
return ir_build_const_bigfloat(ag, scope, node, bigfloat);
}
-static IrInstSrc *ir_gen_char_lit(Stage1AstGen *ag, Scope *scope, AstNode *node) {
+static IrInstSrc *astgen_char_lit(Stage1AstGen *ag, Scope *scope, AstNode *node) {
Error err;
assert(node->type == NodeTypeCharLiteral);
@@ -3802,13 +3802,15 @@ static IrInstSrc *ir_gen_char_lit(Stage1AstGen *ag, Scope *scope, AstNode *node)
return ir_build_const_uint(ag, scope, node, codepoint);
}
-static IrInstSrc *ir_gen_null_literal(Stage1AstGen *ag, Scope *scope, AstNode *node) {
+static IrInstSrc *astgen_null_literal(Stage1AstGen *ag, Scope *scope, AstNode *node) {
assert(node->type == NodeTypeNullLiteral);
return ir_build_const_null(ag, scope, node);
}
-static IrInstSrc *ir_gen_symbol(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval, ResultLoc *result_loc) {
+static IrInstSrc *astgen_identifier(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval,
+ ResultLoc *result_loc)
+{
Error err;
assert(node->type == NodeTypeIdentifier);
@@ -3877,13 +3879,13 @@ static IrInstSrc *ir_gen_symbol(Stage1AstGen *ag, Scope *scope, AstNode *node, L
return ir_build_undeclared_identifier(ag, scope, node, variable_name);
}
-static IrInstSrc *ir_gen_array_access(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval,
+static IrInstSrc *astgen_array_access(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval,
ResultLoc *result_loc)
{
assert(node->type == NodeTypeArrayAccessExpr);
AstNode *array_ref_node = node->data.array_access_expr.array_ref_expr;
- IrInstSrc *array_ref_instruction = ir_gen_node_extra(ag, array_ref_node, scope, LValPtr, nullptr);
+ IrInstSrc *array_ref_instruction = astgen_node_extra(ag, array_ref_node, scope, LValPtr, nullptr);
if (array_ref_instruction == ag->codegen->invalid_inst_src)
return array_ref_instruction;
@@ -3894,7 +3896,7 @@ static IrInstSrc *ir_gen_array_access(Stage1AstGen *ag, Scope *scope, AstNode *n
ResultLocCast *result_loc_cast = ir_build_cast_result_loc(ag, usize_type_inst, no_result_loc());
AstNode *subscript_node = node->data.array_access_expr.subscript;
- IrInstSrc *subscript_value = ir_gen_node_extra(ag, subscript_node, scope, LValNone, &result_loc_cast->base);
+ IrInstSrc *subscript_value = astgen_node_extra(ag, subscript_node, scope, LValNone, &result_loc_cast->base);
if (subscript_value == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
@@ -3909,20 +3911,20 @@ static IrInstSrc *ir_gen_array_access(Stage1AstGen *ag, Scope *scope, AstNode *n
return ir_expr_wrap(ag, scope, load_ptr, result_loc);
}
-static IrInstSrc *ir_gen_field_access(Stage1AstGen *ag, Scope *scope, AstNode *node) {
+static IrInstSrc *astgen_field_access(Stage1AstGen *ag, Scope *scope, AstNode *node) {
assert(node->type == NodeTypeFieldAccessExpr);
AstNode *container_ref_node = node->data.field_access_expr.struct_expr;
Buf *field_name = node->data.field_access_expr.field_name;
- IrInstSrc *container_ref_instruction = ir_gen_node_extra(ag, container_ref_node, scope, LValPtr, nullptr);
+ IrInstSrc *container_ref_instruction = astgen_node_extra(ag, container_ref_node, scope, LValPtr, nullptr);
if (container_ref_instruction == ag->codegen->invalid_inst_src)
return container_ref_instruction;
return ir_build_field_ptr(ag, scope, node, container_ref_instruction, field_name, false);
}
-static IrInstSrc *ir_gen_overflow_op(Stage1AstGen *ag, Scope *scope, AstNode *node, IrOverflowOp op) {
+static IrInstSrc *astgen_overflow_op(Stage1AstGen *ag, Scope *scope, AstNode *node, IrOverflowOp op) {
assert(node->type == NodeTypeFnCallExpr);
AstNode *type_node = node->data.fn_call_expr.params.at(0);
@@ -3931,26 +3933,26 @@ static IrInstSrc *ir_gen_overflow_op(Stage1AstGen *ag, Scope *scope, AstNode *no
AstNode *result_ptr_node = node->data.fn_call_expr.params.at(3);
- IrInstSrc *type_value = ir_gen_node(ag, type_node, scope);
+ IrInstSrc *type_value = astgen_node(ag, type_node, scope);
if (type_value == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
- IrInstSrc *op1 = ir_gen_node(ag, op1_node, scope);
+ IrInstSrc *op1 = astgen_node(ag, op1_node, scope);
if (op1 == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
- IrInstSrc *op2 = ir_gen_node(ag, op2_node, scope);
+ IrInstSrc *op2 = astgen_node(ag, op2_node, scope);
if (op2 == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
- IrInstSrc *result_ptr = ir_gen_node(ag, result_ptr_node, scope);
+ IrInstSrc *result_ptr = astgen_node(ag, result_ptr_node, scope);
if (result_ptr == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
return ir_build_overflow_op_src(ag, scope, node, op, type_value, op1, op2, result_ptr);
}
-static IrInstSrc *ir_gen_mul_add(Stage1AstGen *ag, Scope *scope, AstNode *node) {
+static IrInstSrc *astgen_mul_add(Stage1AstGen *ag, Scope *scope, AstNode *node) {
assert(node->type == NodeTypeFnCallExpr);
AstNode *type_node = node->data.fn_call_expr.params.at(0);
@@ -3958,26 +3960,26 @@ static IrInstSrc *ir_gen_mul_add(Stage1AstGen *ag, Scope *scope, AstNode *node)
AstNode *op2_node = node->data.fn_call_expr.params.at(2);
AstNode *op3_node = node->data.fn_call_expr.params.at(3);
- IrInstSrc *type_value = ir_gen_node(ag, type_node, scope);
+ IrInstSrc *type_value = astgen_node(ag, type_node, scope);
if (type_value == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
- IrInstSrc *op1 = ir_gen_node(ag, op1_node, scope);
+ IrInstSrc *op1 = astgen_node(ag, op1_node, scope);
if (op1 == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
- IrInstSrc *op2 = ir_gen_node(ag, op2_node, scope);
+ IrInstSrc *op2 = astgen_node(ag, op2_node, scope);
if (op2 == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
- IrInstSrc *op3 = ir_gen_node(ag, op3_node, scope);
+ IrInstSrc *op3 = astgen_node(ag, op3_node, scope);
if (op3 == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
return ir_build_mul_add_src(ag, scope, node, type_value, op1, op2, op3);
}
-static IrInstSrc *ir_gen_this(Stage1AstGen *ag, Scope *orig_scope, AstNode *node) {
+static IrInstSrc *astgen_this(Stage1AstGen *ag, Scope *orig_scope, AstNode *node) {
for (Scope *it_scope = orig_scope; it_scope != nullptr; it_scope = it_scope->parent) {
if (it_scope->id == ScopeIdDecls) {
ScopeDecls *decls_scope = (ScopeDecls *)it_scope;
@@ -3992,7 +3994,7 @@ static IrInstSrc *ir_gen_this(Stage1AstGen *ag, Scope *orig_scope, AstNode *node
zig_unreachable();
}
-static IrInstSrc *ir_gen_async_call(Stage1AstGen *ag, Scope *scope, AstNode *await_node, AstNode *call_node,
+static IrInstSrc *astgen_async_call(Stage1AstGen *ag, Scope *scope, AstNode *await_node, AstNode *call_node,
LVal lval, ResultLoc *result_loc)
{
if (call_node->data.fn_call_expr.params.length != 4) {
@@ -4003,17 +4005,17 @@ static IrInstSrc *ir_gen_async_call(Stage1AstGen *ag, Scope *scope, AstNode *awa
}
AstNode *bytes_node = call_node->data.fn_call_expr.params.at(0);
- IrInstSrc *bytes = ir_gen_node(ag, bytes_node, scope);
+ IrInstSrc *bytes = astgen_node(ag, bytes_node, scope);
if (bytes == ag->codegen->invalid_inst_src)
return bytes;
AstNode *ret_ptr_node = call_node->data.fn_call_expr.params.at(1);
- IrInstSrc *ret_ptr = ir_gen_node(ag, ret_ptr_node, scope);
+ IrInstSrc *ret_ptr = astgen_node(ag, ret_ptr_node, scope);
if (ret_ptr == ag->codegen->invalid_inst_src)
return ret_ptr;
AstNode *fn_ref_node = call_node->data.fn_call_expr.params.at(2);
- IrInstSrc *fn_ref = ir_gen_node(ag, fn_ref_node, scope);
+ IrInstSrc *fn_ref = astgen_node(ag, fn_ref_node, scope);
if (fn_ref == ag->codegen->invalid_inst_src)
return fn_ref;
@@ -4028,7 +4030,7 @@ static IrInstSrc *ir_gen_async_call(Stage1AstGen *ag, Scope *scope, AstNode *awa
IrInstSrc **args = heap::c_allocator.allocate<IrInstSrc*>(arg_count);
for (size_t i = 0; i < arg_count; i += 1) {
AstNode *arg_node = args_node->data.container_init_expr.entries.at(i);
- IrInstSrc *arg = ir_gen_node(ag, arg_node, scope);
+ IrInstSrc *arg = astgen_node(ag, arg_node, scope);
if (arg == ag->codegen->invalid_inst_src)
return arg;
args[i] = arg;
@@ -4043,7 +4045,7 @@ static IrInstSrc *ir_gen_async_call(Stage1AstGen *ag, Scope *scope, AstNode *awa
return ag->codegen->invalid_inst_src;
}
}
- IrInstSrc *args = ir_gen_node(ag, args_node, scope);
+ IrInstSrc *args = astgen_node(ag, args_node, scope);
if (args == ag->codegen->invalid_inst_src)
return args;
@@ -4051,11 +4053,11 @@ static IrInstSrc *ir_gen_async_call(Stage1AstGen *ag, Scope *scope, AstNode *awa
return ir_lval_wrap(ag, scope, call, lval, result_loc);
}
-static IrInstSrc *ir_gen_fn_call_with_args(Stage1AstGen *ag, Scope *scope, AstNode *source_node,
+static IrInstSrc *astgen_fn_call_with_args(Stage1AstGen *ag, Scope *scope, AstNode *source_node,
AstNode *fn_ref_node, CallModifier modifier, IrInstSrc *options,
AstNode **args_ptr, size_t args_len, LVal lval, ResultLoc *result_loc)
{
- IrInstSrc *fn_ref = ir_gen_node(ag, fn_ref_node, scope);
+ IrInstSrc *fn_ref = astgen_node(ag, fn_ref_node, scope);
if (fn_ref == ag->codegen->invalid_inst_src)
return fn_ref;
@@ -4071,7 +4073,7 @@ static IrInstSrc *ir_gen_fn_call_with_args(Stage1AstGen *ag, Scope *scope, AstNo
ir_build_reset_result(ag, scope, source_node, no_result);
ResultLocCast *result_loc_cast = ir_build_cast_result_loc(ag, arg_type, no_result);
- IrInstSrc *arg = ir_gen_node_extra(ag, arg_node, scope, LValNone, &result_loc_cast->base);
+ IrInstSrc *arg = astgen_node_extra(ag, arg_node, scope, LValNone, &result_loc_cast->base);
if (arg == ag->codegen->invalid_inst_src)
return arg;
@@ -4088,7 +4090,7 @@ static IrInstSrc *ir_gen_fn_call_with_args(Stage1AstGen *ag, Scope *scope, AstNo
return ir_lval_wrap(ag, scope, fn_call, lval, result_loc);
}
-static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval,
+static IrInstSrc *astgen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval,
ResultLoc *result_loc)
{
assert(node->type == NodeTypeFnCallExpr);
@@ -4130,7 +4132,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
return ag->codegen->invalid_inst_src;
} else if (arg_count == 1) {
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, sub_scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, sub_scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -4139,7 +4141,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
IrInstSrc **args = heap::c_allocator.allocate<IrInstSrc*>(arg_count);
for (size_t i = 0; i < arg_count; i += 1) {
AstNode *arg_node = node->data.fn_call_expr.params.at(i);
- IrInstSrc *arg = ir_gen_node(ag, arg_node, sub_scope);
+ IrInstSrc *arg = astgen_node(ag, arg_node, sub_scope);
if (arg == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
args[i] = arg;
@@ -4152,7 +4154,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdSetCold:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -4162,7 +4164,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdSetRuntimeSafety:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -4172,7 +4174,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdSetFloatMode:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -4183,7 +4185,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdBitSizeof:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -4193,7 +4195,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdImport:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -4208,7 +4210,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdCInclude:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -4223,12 +4225,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdCDefine:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -4243,7 +4245,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdCUndef:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -4258,7 +4260,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdCompileErr:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -4271,7 +4273,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
for (size_t i = 0; i < actual_param_count; i += 1) {
AstNode *arg_node = node->data.fn_call_expr.params.at(i);
- args[i] = ir_gen_node(ag, arg_node, scope);
+ args[i] = astgen_node(ag, arg_node, scope);
if (args[i] == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
}
@@ -4282,7 +4284,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdErrName:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -4292,7 +4294,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdEmbedFile:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -4303,32 +4305,32 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdCmpxchgStrong:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
AstNode *arg2_node = node->data.fn_call_expr.params.at(2);
- IrInstSrc *arg2_value = ir_gen_node(ag, arg2_node, scope);
+ IrInstSrc *arg2_value = astgen_node(ag, arg2_node, scope);
if (arg2_value == ag->codegen->invalid_inst_src)
return arg2_value;
AstNode *arg3_node = node->data.fn_call_expr.params.at(3);
- IrInstSrc *arg3_value = ir_gen_node(ag, arg3_node, scope);
+ IrInstSrc *arg3_value = astgen_node(ag, arg3_node, scope);
if (arg3_value == ag->codegen->invalid_inst_src)
return arg3_value;
AstNode *arg4_node = node->data.fn_call_expr.params.at(4);
- IrInstSrc *arg4_value = ir_gen_node(ag, arg4_node, scope);
+ IrInstSrc *arg4_value = astgen_node(ag, arg4_node, scope);
if (arg4_value == ag->codegen->invalid_inst_src)
return arg4_value;
AstNode *arg5_node = node->data.fn_call_expr.params.at(5);
- IrInstSrc *arg5_value = ir_gen_node(ag, arg5_node, scope);
+ IrInstSrc *arg5_value = astgen_node(ag, arg5_node, scope);
if (arg5_value == ag->codegen->invalid_inst_src)
return arg5_value;
@@ -4340,7 +4342,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdFence:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -4350,12 +4352,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdReduce:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -4365,12 +4367,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdDivExact:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -4380,12 +4382,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdDivTrunc:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -4395,12 +4397,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdDivFloor:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -4410,12 +4412,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdRem:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -4425,12 +4427,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdMod:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -4453,7 +4455,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdRound:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -4463,12 +4465,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdTruncate:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -4478,12 +4480,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdIntCast:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -4493,12 +4495,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdFloatCast:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -4508,12 +4510,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdErrSetCast:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -4523,12 +4525,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdIntToFloat:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -4538,12 +4540,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdFloatToInt:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -4553,7 +4555,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdErrToInt:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -4563,7 +4565,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdIntToErr:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -4573,7 +4575,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdBoolToInt:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -4583,12 +4585,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdVectorType:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -4598,22 +4600,22 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdShuffle:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
AstNode *arg2_node = node->data.fn_call_expr.params.at(2);
- IrInstSrc *arg2_value = ir_gen_node(ag, arg2_node, scope);
+ IrInstSrc *arg2_value = astgen_node(ag, arg2_node, scope);
if (arg2_value == ag->codegen->invalid_inst_src)
return arg2_value;
AstNode *arg3_node = node->data.fn_call_expr.params.at(3);
- IrInstSrc *arg3_value = ir_gen_node(ag, arg3_node, scope);
+ IrInstSrc *arg3_value = astgen_node(ag, arg3_node, scope);
if (arg3_value == ag->codegen->invalid_inst_src)
return arg3_value;
@@ -4624,12 +4626,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdSplat:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -4640,17 +4642,17 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdMemcpy:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
AstNode *arg2_node = node->data.fn_call_expr.params.at(2);
- IrInstSrc *arg2_value = ir_gen_node(ag, arg2_node, scope);
+ IrInstSrc *arg2_value = astgen_node(ag, arg2_node, scope);
if (arg2_value == ag->codegen->invalid_inst_src)
return arg2_value;
@@ -4660,17 +4662,17 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdMemset:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
AstNode *arg2_node = node->data.fn_call_expr.params.at(2);
- IrInstSrc *arg2_value = ir_gen_node(ag, arg2_node, scope);
+ IrInstSrc *arg2_value = astgen_node(ag, arg2_node, scope);
if (arg2_value == ag->codegen->invalid_inst_src)
return arg2_value;
@@ -4680,7 +4682,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdWasmMemorySize:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -4690,12 +4692,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdWasmMemoryGrow:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -4705,12 +4707,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdField:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node_extra(ag, arg0_node, scope, LValPtr, nullptr);
+ IrInstSrc *arg0_value = astgen_node_extra(ag, arg0_node, scope, LValPtr, nullptr);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -4726,12 +4728,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdHasField:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -4741,7 +4743,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdTypeInfo:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -4751,7 +4753,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdType:
{
AstNode *arg_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg = ir_gen_node(ag, arg_node, scope);
+ IrInstSrc *arg = astgen_node(ag, arg_node, scope);
if (arg == ag->codegen->invalid_inst_src)
return arg;
@@ -4773,7 +4775,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
return ir_lval_wrap(ag, scope, ir_build_handle_src(ag, scope, node), lval, result_loc);
case BuiltinFnIdFrameType: {
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -4782,7 +4784,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
}
case BuiltinFnIdFrameSize: {
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -4792,7 +4794,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdAlignOf:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -4800,19 +4802,19 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
return ir_lval_wrap(ag, scope, align_of, lval, result_loc);
}
case BuiltinFnIdAddWithOverflow:
- return ir_lval_wrap(ag, scope, ir_gen_overflow_op(ag, scope, node, IrOverflowOpAdd), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_overflow_op(ag, scope, node, IrOverflowOpAdd), lval, result_loc);
case BuiltinFnIdSubWithOverflow:
- return ir_lval_wrap(ag, scope, ir_gen_overflow_op(ag, scope, node, IrOverflowOpSub), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_overflow_op(ag, scope, node, IrOverflowOpSub), lval, result_loc);
case BuiltinFnIdMulWithOverflow:
- return ir_lval_wrap(ag, scope, ir_gen_overflow_op(ag, scope, node, IrOverflowOpMul), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_overflow_op(ag, scope, node, IrOverflowOpMul), lval, result_loc);
case BuiltinFnIdShlWithOverflow:
- return ir_lval_wrap(ag, scope, ir_gen_overflow_op(ag, scope, node, IrOverflowOpShl), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_overflow_op(ag, scope, node, IrOverflowOpShl), lval, result_loc);
case BuiltinFnIdMulAdd:
- return ir_lval_wrap(ag, scope, ir_gen_mul_add(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_mul_add(ag, scope, node), lval, result_loc);
case BuiltinFnIdTypeName:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -4822,7 +4824,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdPanic:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -4832,12 +4834,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdPtrCast:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -4847,7 +4849,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdBitCast:
{
AstNode *dest_type_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *dest_type = ir_gen_node(ag, dest_type_node, scope);
+ IrInstSrc *dest_type = astgen_node(ag, dest_type_node, scope);
if (dest_type == ag->codegen->invalid_inst_src)
return dest_type;
@@ -4861,7 +4863,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
ir_build_reset_result(ag, scope, node, &result_loc_bit_cast->base);
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node_extra(ag, arg1_node, scope, LValNone,
+ IrInstSrc *arg1_value = astgen_node_extra(ag, arg1_node, scope, LValNone,
&result_loc_bit_cast->base);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -4872,14 +4874,14 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdAs:
{
AstNode *dest_type_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *dest_type = ir_gen_node(ag, dest_type_node, scope);
+ IrInstSrc *dest_type = astgen_node(ag, dest_type_node, scope);
if (dest_type == ag->codegen->invalid_inst_src)
return dest_type;
ResultLocCast *result_loc_cast = ir_build_cast_result_loc(ag, dest_type, result_loc);
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node_extra(ag, arg1_node, scope, LValNone,
+ IrInstSrc *arg1_value = astgen_node_extra(ag, arg1_node, scope, LValNone,
&result_loc_cast->base);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -4890,12 +4892,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdIntToPtr:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -4905,7 +4907,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdPtrToInt:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -4915,7 +4917,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdTagName:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -4925,17 +4927,17 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdFieldParentPtr:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
AstNode *arg2_node = node->data.fn_call_expr.params.at(2);
- IrInstSrc *arg2_value = ir_gen_node(ag, arg2_node, scope);
+ IrInstSrc *arg2_value = astgen_node(ag, arg2_node, scope);
if (arg2_value == ag->codegen->invalid_inst_src)
return arg2_value;
@@ -4946,12 +4948,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdByteOffsetOf:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -4961,12 +4963,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdBitOffsetOf:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -4980,7 +4982,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
ResultLocCast *result_loc_cast = ir_build_cast_result_loc(ag, options_type_inst, no_result_loc());
AstNode *options_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *options_inner = ir_gen_node_extra(ag, options_node, scope,
+ IrInstSrc *options_inner = astgen_node_extra(ag, options_node, scope,
LValNone, &result_loc_cast->base);
if (options_inner == ag->codegen->invalid_inst_src)
return options_inner;
@@ -4992,7 +4994,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
if (args_node->data.container_init_expr.kind == ContainerInitKindArray ||
args_node->data.container_init_expr.entries.length == 0)
{
- return ir_gen_fn_call_with_args(ag, scope, node,
+ return astgen_fn_call_with_args(ag, scope, node,
fn_ref_node, CallModifierNone, options,
args_node->data.container_init_expr.entries.items,
args_node->data.container_init_expr.entries.length,
@@ -5003,11 +5005,11 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
return ag->codegen->invalid_inst_src;
}
} else {
- IrInstSrc *fn_ref = ir_gen_node(ag, fn_ref_node, scope);
+ IrInstSrc *fn_ref = astgen_node(ag, fn_ref_node, scope);
if (fn_ref == ag->codegen->invalid_inst_src)
return fn_ref;
- IrInstSrc *args = ir_gen_node(ag, args_node, scope);
+ IrInstSrc *args = astgen_node(ag, args_node, scope);
if (args == ag->codegen->invalid_inst_src)
return args;
@@ -5016,16 +5018,16 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
}
}
case BuiltinFnIdAsyncCall:
- return ir_gen_async_call(ag, scope, nullptr, node, lval, result_loc);
+ return astgen_async_call(ag, scope, nullptr, node, lval, result_loc);
case BuiltinFnIdShlExact:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -5035,12 +5037,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdShrExact:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -5050,7 +5052,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdSetEvalBranchQuota:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -5060,12 +5062,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdAlignCast:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -5074,13 +5076,13 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
}
case BuiltinFnIdThis:
{
- IrInstSrc *this_inst = ir_gen_this(ag, scope, node);
+ IrInstSrc *this_inst = astgen_this(ag, scope, node);
return ir_lval_wrap(ag, scope, this_inst, lval, result_loc);
}
case BuiltinFnIdSetAlignStack:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -5095,12 +5097,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
ResultLocCast *result_loc_cast = ir_build_cast_result_loc(ag, options_type_inst, no_result_loc());
AstNode *target_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *target_value = ir_gen_node(ag, target_node, scope);
+ IrInstSrc *target_value = astgen_node(ag, target_node, scope);
if (target_value == ag->codegen->invalid_inst_src)
return target_value;
AstNode *options_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *options_value = ir_gen_node_extra(ag, options_node,
+ IrInstSrc *options_value = astgen_node_extra(ag, options_node,
scope, LValNone, &result_loc_cast->base);
if (options_value == ag->codegen->invalid_inst_src)
return options_value;
@@ -5119,12 +5121,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
ResultLocCast *result_loc_cast = ir_build_cast_result_loc(ag, options_type_inst, no_result_loc());
AstNode *type_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *type_value = ir_gen_node(ag, type_node, scope);
+ IrInstSrc *type_value = astgen_node(ag, type_node, scope);
if (type_value == ag->codegen->invalid_inst_src)
return type_value;
AstNode *options_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *options_value = ir_gen_node_extra(ag, options_node,
+ IrInstSrc *options_value = astgen_node_extra(ag, options_node,
scope, LValNone, &result_loc_cast->base);
if (options_value == ag->codegen->invalid_inst_src)
return options_value;
@@ -5144,27 +5146,27 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdAtomicRmw:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
AstNode *arg2_node = node->data.fn_call_expr.params.at(2);
- IrInstSrc *arg2_value = ir_gen_node(ag, arg2_node, scope);
+ IrInstSrc *arg2_value = astgen_node(ag, arg2_node, scope);
if (arg2_value == ag->codegen->invalid_inst_src)
return arg2_value;
AstNode *arg3_node = node->data.fn_call_expr.params.at(3);
- IrInstSrc *arg3_value = ir_gen_node(ag, arg3_node, scope);
+ IrInstSrc *arg3_value = astgen_node(ag, arg3_node, scope);
if (arg3_value == ag->codegen->invalid_inst_src)
return arg3_value;
AstNode *arg4_node = node->data.fn_call_expr.params.at(4);
- IrInstSrc *arg4_value = ir_gen_node(ag, arg4_node, scope);
+ IrInstSrc *arg4_value = astgen_node(ag, arg4_node, scope);
if (arg4_value == ag->codegen->invalid_inst_src)
return arg4_value;
@@ -5175,17 +5177,17 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdAtomicLoad:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
AstNode *arg2_node = node->data.fn_call_expr.params.at(2);
- IrInstSrc *arg2_value = ir_gen_node(ag, arg2_node, scope);
+ IrInstSrc *arg2_value = astgen_node(ag, arg2_node, scope);
if (arg2_value == ag->codegen->invalid_inst_src)
return arg2_value;
@@ -5195,22 +5197,22 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdAtomicStore:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
AstNode *arg2_node = node->data.fn_call_expr.params.at(2);
- IrInstSrc *arg2_value = ir_gen_node(ag, arg2_node, scope);
+ IrInstSrc *arg2_value = astgen_node(ag, arg2_node, scope);
if (arg2_value == ag->codegen->invalid_inst_src)
return arg2_value;
AstNode *arg3_node = node->data.fn_call_expr.params.at(3);
- IrInstSrc *arg3_value = ir_gen_node(ag, arg3_node, scope);
+ IrInstSrc *arg3_value = astgen_node(ag, arg3_node, scope);
if (arg3_value == ag->codegen->invalid_inst_src)
return arg3_value;
@@ -5221,12 +5223,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdIntToEnum:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -5236,7 +5238,7 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdEnumToInt:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
@@ -5250,12 +5252,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdBitReverse:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -5284,12 +5286,12 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdHasDecl:
{
AstNode *arg0_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *arg0_value = ir_gen_node(ag, arg0_node, scope);
+ IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope);
if (arg0_value == ag->codegen->invalid_inst_src)
return arg0_value;
AstNode *arg1_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *arg1_value = ir_gen_node(ag, arg1_node, scope);
+ IrInstSrc *arg1_value = astgen_node(ag, arg1_node, scope);
if (arg1_value == ag->codegen->invalid_inst_src)
return arg1_value;
@@ -5299,18 +5301,18 @@ static IrInstSrc *ir_gen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode
case BuiltinFnIdUnionInit:
{
AstNode *union_type_node = node->data.fn_call_expr.params.at(0);
- IrInstSrc *union_type_inst = ir_gen_node(ag, union_type_node, scope);
+ IrInstSrc *union_type_inst = astgen_node(ag, union_type_node, scope);
if (union_type_inst == ag->codegen->invalid_inst_src)
return union_type_inst;
AstNode *name_node = node->data.fn_call_expr.params.at(1);
- IrInstSrc *name_inst = ir_gen_node(ag, name_node, scope);
+ IrInstSrc *name_inst = astgen_node(ag, name_node, scope);
if (name_inst == ag->codegen->invalid_inst_src)
return name_inst;
AstNode *init_node = node->data.fn_call_expr.params.at(2);
- return ir_gen_union_init_expr(ag, scope, node, union_type_inst, name_inst, init_node,
+ return astgen_union_init_expr(ag, scope, node, union_type_inst, name_inst, init_node,
lval, result_loc);
}
case BuiltinFnIdSrc:
@@ -5334,13 +5336,13 @@ static ScopeNoSuspend *get_scope_nosuspend(Scope *scope) {
return nullptr;
}
-static IrInstSrc *ir_gen_fn_call(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval,
+static IrInstSrc *astgen_fn_call(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval,
ResultLoc *result_loc)
{
assert(node->type == NodeTypeFnCallExpr);
if (node->data.fn_call_expr.modifier == CallModifierBuiltin)
- return ir_gen_builtin_fn_call(ag, scope, node, lval, result_loc);
+ return astgen_builtin_fn_call(ag, scope, node, lval, result_loc);
bool is_nosuspend = get_scope_nosuspend(scope) != nullptr;
CallModifier modifier = node->data.fn_call_expr.modifier;
@@ -5349,16 +5351,16 @@ static IrInstSrc *ir_gen_fn_call(Stage1AstGen *ag, Scope *scope, AstNode *node,
}
AstNode *fn_ref_node = node->data.fn_call_expr.fn_ref_expr;
- return ir_gen_fn_call_with_args(ag, scope, node, fn_ref_node, modifier,
+ return astgen_fn_call_with_args(ag, scope, node, fn_ref_node, modifier,
nullptr, node->data.fn_call_expr.params.items, node->data.fn_call_expr.params.length, lval, result_loc);
}
-static IrInstSrc *ir_gen_if_bool_expr(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval,
+static IrInstSrc *astgen_if_bool_expr(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval,
ResultLoc *result_loc)
{
assert(node->type == NodeTypeIfBoolExpr);
- IrInstSrc *condition = ir_gen_node(ag, node->data.if_bool_expr.condition, scope);
+ IrInstSrc *condition = astgen_node(ag, node->data.if_bool_expr.condition, scope);
if (condition == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
@@ -5384,7 +5386,7 @@ static IrInstSrc *ir_gen_if_bool_expr(Stage1AstGen *ag, Scope *scope, AstNode *n
ir_set_cursor_at_end_and_append_block(ag, then_block);
Scope *subexpr_scope = create_runtime_scope(ag->codegen, node, scope, is_comptime);
- IrInstSrc *then_expr_result = ir_gen_node_extra(ag, then_node, subexpr_scope, lval,
+ IrInstSrc *then_expr_result = astgen_node_extra(ag, then_node, subexpr_scope, lval,
&peer_parent->peers.at(0)->base);
if (then_expr_result == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
@@ -5395,7 +5397,7 @@ static IrInstSrc *ir_gen_if_bool_expr(Stage1AstGen *ag, Scope *scope, AstNode *n
ir_set_cursor_at_end_and_append_block(ag, else_block);
IrInstSrc *else_expr_result;
if (else_node) {
- else_expr_result = ir_gen_node_extra(ag, else_node, subexpr_scope, lval, &peer_parent->peers.at(1)->base);
+ else_expr_result = astgen_node_extra(ag, else_node, subexpr_scope, lval, &peer_parent->peers.at(1)->base);
if (else_expr_result == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
} else {
@@ -5418,19 +5420,19 @@ static IrInstSrc *ir_gen_if_bool_expr(Stage1AstGen *ag, Scope *scope, AstNode *n
return ir_expr_wrap(ag, scope, phi, result_loc);
}
-static IrInstSrc *ir_gen_prefix_op_id_lval(Stage1AstGen *ag, Scope *scope, AstNode *node, IrUnOp op_id, LVal lval) {
+static IrInstSrc *astgen_prefix_op_id_lval(Stage1AstGen *ag, Scope *scope, AstNode *node, IrUnOp op_id, LVal lval) {
assert(node->type == NodeTypePrefixOpExpr);
AstNode *expr_node = node->data.prefix_op_expr.primary_expr;
- IrInstSrc *value = ir_gen_node_extra(ag, expr_node, scope, lval, nullptr);
+ IrInstSrc *value = astgen_node_extra(ag, expr_node, scope, lval, nullptr);
if (value == ag->codegen->invalid_inst_src)
return value;
return ir_build_un_op(ag, scope, node, op_id, value);
}
-static IrInstSrc *ir_gen_prefix_op_id(Stage1AstGen *ag, Scope *scope, AstNode *node, IrUnOp op_id) {
- return ir_gen_prefix_op_id_lval(ag, scope, node, op_id, LValNone);
+static IrInstSrc *astgen_prefix_op_id(Stage1AstGen *ag, Scope *scope, AstNode *node, IrUnOp op_id) {
+ return astgen_prefix_op_id_lval(ag, scope, node, op_id, LValNone);
}
static IrInstSrc *ir_expr_wrap(Stage1AstGen *ag, Scope *scope, IrInstSrc *inst, ResultLoc *result_loc) {
@@ -5499,7 +5501,7 @@ static Error token_number_literal_u32(Stage1AstGen *ag, AstNode *source_node,
}
-static IrInstSrc *ir_gen_pointer_type(Stage1AstGen *ag, Scope *scope, AstNode *node) {
+static IrInstSrc *astgen_pointer_type(Stage1AstGen *ag, Scope *scope, AstNode *node) {
Error err;
assert(node->type == NodeTypePointerType);
@@ -5516,7 +5518,7 @@ static IrInstSrc *ir_gen_pointer_type(Stage1AstGen *ag, Scope *scope, AstNode *n
IrInstSrc *sentinel;
if (sentinel_expr != nullptr) {
- sentinel = ir_gen_node(ag, sentinel_expr, scope);
+ sentinel = astgen_node(ag, sentinel_expr, scope);
if (sentinel == ag->codegen->invalid_inst_src)
return sentinel;
} else {
@@ -5525,14 +5527,14 @@ static IrInstSrc *ir_gen_pointer_type(Stage1AstGen *ag, Scope *scope, AstNode *n
IrInstSrc *align_value;
if (align_expr != nullptr) {
- align_value = ir_gen_node(ag, align_expr, scope);
+ align_value = astgen_node(ag, align_expr, scope);
if (align_value == ag->codegen->invalid_inst_src)
return align_value;
} else {
align_value = nullptr;
}
- IrInstSrc *child_type = ir_gen_node(ag, expr_node, scope);
+ IrInstSrc *child_type = astgen_node(ag, expr_node, scope);
if (child_type == ag->codegen->invalid_inst_src)
return child_type;
@@ -5564,10 +5566,10 @@ static IrInstSrc *ir_gen_pointer_type(Stage1AstGen *ag, Scope *scope, AstNode *n
ptr_len, sentinel, align_value, bit_offset_start, host_int_bytes, is_allow_zero);
}
-static IrInstSrc *ir_gen_catch_unreachable(Stage1AstGen *ag, Scope *scope, AstNode *source_node,
+static IrInstSrc *astgen_catch_unreachable(Stage1AstGen *ag, Scope *scope, AstNode *source_node,
AstNode *expr_node, LVal lval, ResultLoc *result_loc)
{
- IrInstSrc *err_union_ptr = ir_gen_node_extra(ag, expr_node, scope, LValPtr, nullptr);
+ IrInstSrc *err_union_ptr = astgen_node_extra(ag, expr_node, scope, LValPtr, nullptr);
if (err_union_ptr == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
@@ -5582,18 +5584,18 @@ static IrInstSrc *ir_gen_catch_unreachable(Stage1AstGen *ag, Scope *scope, AstNo
return ir_expr_wrap(ag, scope, load_ptr, result_loc);
}
-static IrInstSrc *ir_gen_bool_not(Stage1AstGen *ag, Scope *scope, AstNode *node) {
+static IrInstSrc *astgen_bool_not(Stage1AstGen *ag, Scope *scope, AstNode *node) {
assert(node->type == NodeTypePrefixOpExpr);
AstNode *expr_node = node->data.prefix_op_expr.primary_expr;
- IrInstSrc *value = ir_gen_node(ag, expr_node, scope);
+ IrInstSrc *value = astgen_node(ag, expr_node, scope);
if (value == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
return ir_build_bool_not(ag, scope, node, value);
}
-static IrInstSrc *ir_gen_prefix_op_expr(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval,
+static IrInstSrc *astgen_prefix_op_expr(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval,
ResultLoc *result_loc)
{
assert(node->type == NodeTypePrefixOpExpr);
@@ -5604,24 +5606,24 @@ static IrInstSrc *ir_gen_prefix_op_expr(Stage1AstGen *ag, Scope *scope, AstNode
case PrefixOpInvalid:
zig_unreachable();
case PrefixOpBoolNot:
- return ir_lval_wrap(ag, scope, ir_gen_bool_not(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_bool_not(ag, scope, node), lval, result_loc);
case PrefixOpBinNot:
- return ir_lval_wrap(ag, scope, ir_gen_prefix_op_id(ag, scope, node, IrUnOpBinNot), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_prefix_op_id(ag, scope, node, IrUnOpBinNot), lval, result_loc);
case PrefixOpNegation:
- return ir_lval_wrap(ag, scope, ir_gen_prefix_op_id(ag, scope, node, IrUnOpNegation), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_prefix_op_id(ag, scope, node, IrUnOpNegation), lval, result_loc);
case PrefixOpNegationWrap:
- return ir_lval_wrap(ag, scope, ir_gen_prefix_op_id(ag, scope, node, IrUnOpNegationWrap), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_prefix_op_id(ag, scope, node, IrUnOpNegationWrap), lval, result_loc);
case PrefixOpOptional:
- return ir_lval_wrap(ag, scope, ir_gen_prefix_op_id(ag, scope, node, IrUnOpOptional), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_prefix_op_id(ag, scope, node, IrUnOpOptional), lval, result_loc);
case PrefixOpAddrOf: {
AstNode *expr_node = node->data.prefix_op_expr.primary_expr;
- return ir_lval_wrap(ag, scope, ir_gen_node_extra(ag, expr_node, scope, LValPtr, nullptr), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_node_extra(ag, expr_node, scope, LValPtr, nullptr), lval, result_loc);
}
}
zig_unreachable();
}
-static IrInstSrc *ir_gen_union_init_expr(Stage1AstGen *ag, Scope *scope, AstNode *source_node,
+static IrInstSrc *astgen_union_init_expr(Stage1AstGen *ag, Scope *scope, AstNode *source_node,
IrInstSrc *union_type, IrInstSrc *field_name, AstNode *expr_node,
LVal lval, ResultLoc *parent_result_loc)
{
@@ -5635,7 +5637,7 @@ static IrInstSrc *ir_gen_union_init_expr(Stage1AstGen *ag, Scope *scope, AstNode
ir_ref_instruction(field_ptr, ag->current_basic_block);
ir_build_reset_result(ag, scope, expr_node, &result_loc_inst->base);
- IrInstSrc *expr_value = ir_gen_node_extra(ag, expr_node, scope, LValNone,
+ IrInstSrc *expr_value = astgen_node_extra(ag, expr_node, scope, LValNone,
&result_loc_inst->base);
if (expr_value == ag->codegen->invalid_inst_src)
return expr_value;
@@ -5646,7 +5648,7 @@ static IrInstSrc *ir_gen_union_init_expr(Stage1AstGen *ag, Scope *scope, AstNode
return ir_lval_wrap(ag, scope, init_union, lval, parent_result_loc);
}
-static IrInstSrc *ir_gen_container_init_expr(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval,
+static IrInstSrc *astgen_container_init_expr(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval,
ResultLoc *parent_result_loc)
{
assert(node->type == NodeTypeContainerInitExpr);
@@ -5667,14 +5669,14 @@ static IrInstSrc *ir_gen_container_init_expr(Stage1AstGen *ag, Scope *scope, Ast
}
IrInstSrc *sentinel;
if (container_init_expr->type->data.inferred_array_type.sentinel != nullptr) {
- sentinel = ir_gen_node(ag, container_init_expr->type->data.inferred_array_type.sentinel, scope);
+ sentinel = astgen_node(ag, container_init_expr->type->data.inferred_array_type.sentinel, scope);
if (sentinel == ag->codegen->invalid_inst_src)
return sentinel;
} else {
sentinel = nullptr;
}
- IrInstSrc *elem_type = ir_gen_node(ag,
+ IrInstSrc *elem_type = astgen_node(ag,
container_init_expr->type->data.inferred_array_type.child_type, scope);
if (elem_type == ag->codegen->invalid_inst_src)
return elem_type;
@@ -5682,7 +5684,7 @@ static IrInstSrc *ir_gen_container_init_expr(Stage1AstGen *ag, Scope *scope, Ast
IrInstSrc *item_count_inst = ir_build_const_usize(ag, scope, node, item_count);
container_type = ir_build_array_type(ag, scope, node, item_count_inst, sentinel, elem_type);
} else {
- container_type = ir_gen_node(ag, container_init_expr->type, scope);
+ container_type = astgen_node(ag, container_init_expr->type, scope);
if (container_type == ag->codegen->invalid_inst_src)
return container_type;
}
@@ -5721,7 +5723,7 @@ static IrInstSrc *ir_gen_container_init_expr(Stage1AstGen *ag, Scope *scope, Ast
ir_ref_instruction(field_ptr, ag->current_basic_block);
ir_build_reset_result(ag, scope, expr_node, &result_loc_inst->base);
- IrInstSrc *expr_value = ir_gen_node_extra(ag, expr_node, scope, LValNone,
+ IrInstSrc *expr_value = astgen_node_extra(ag, expr_node, scope, LValNone,
&result_loc_inst->base);
if (expr_value == ag->codegen->invalid_inst_src)
return expr_value;
@@ -5758,7 +5760,7 @@ static IrInstSrc *ir_gen_container_init_expr(Stage1AstGen *ag, Scope *scope, Ast
ir_ref_instruction(elem_ptr, ag->current_basic_block);
ir_build_reset_result(ag, scope, expr_node, &result_loc_inst->base);
- IrInstSrc *expr_value = ir_gen_node_extra(ag, expr_node, scope, LValNone,
+ IrInstSrc *expr_value = astgen_node_extra(ag, expr_node, scope, LValNone,
&result_loc_inst->base);
if (expr_value == ag->codegen->invalid_inst_src)
return expr_value;
@@ -5812,7 +5814,7 @@ static void build_decl_var_and_init(Stage1AstGen *ag, Scope *scope, AstNode *sou
ir_build_var_decl_src(ag, scope, source_node, var, nullptr, alloca);
}
-static IrInstSrc *ir_gen_var_decl(Stage1AstGen *ag, Scope *scope, AstNode *node) {
+static IrInstSrc *astgen_var_decl(Stage1AstGen *ag, Scope *scope, AstNode *node) {
assert(node->type == NodeTypeVariableDeclaration);
AstNodeVariableDeclaration *variable_declaration = &node->data.variable_declaration;
@@ -5827,7 +5829,7 @@ static IrInstSrc *ir_gen_var_decl(Stage1AstGen *ag, Scope *scope, AstNode *node)
IrInstSrc *type_instruction;
if (variable_declaration->type != nullptr) {
- type_instruction = ir_gen_node(ag, variable_declaration->type, comptime_scope);
+ type_instruction = astgen_node(ag, variable_declaration->type, comptime_scope);
if (type_instruction == ag->codegen->invalid_inst_src)
return type_instruction;
} else {
@@ -5853,7 +5855,7 @@ static IrInstSrc *ir_gen_var_decl(Stage1AstGen *ag, Scope *scope, AstNode *node)
IrInstSrc *align_value = nullptr;
if (variable_declaration->align_expr != nullptr) {
- align_value = ir_gen_node(ag, variable_declaration->align_expr, comptime_scope);
+ align_value = astgen_node(ag, variable_declaration->align_expr, comptime_scope);
if (align_value == ag->codegen->invalid_inst_src)
return align_value;
}
@@ -5888,7 +5890,7 @@ static IrInstSrc *ir_gen_var_decl(Stage1AstGen *ag, Scope *scope, AstNode *node)
// so that the struct or enum from the init expression inherits the name.
Buf *old_exec_name = ag->exec->name;
ag->exec->name = variable_declaration->symbol;
- IrInstSrc *init_value = ir_gen_node_extra(ag, variable_declaration->expr, init_scope,
+ IrInstSrc *init_value = astgen_node_extra(ag, variable_declaration->expr, init_scope,
LValNone, init_result_loc);
ag->exec->name = old_exec_name;
@@ -5904,7 +5906,7 @@ static IrInstSrc *ir_gen_var_decl(Stage1AstGen *ag, Scope *scope, AstNode *node)
return ir_build_var_decl_src(ag, scope, node, var, align_value, alloca);
}
-static IrInstSrc *ir_gen_while_expr(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval,
+static IrInstSrc *astgen_while_expr(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval,
ResultLoc *result_loc)
{
assert(node->type == NodeTypeWhileExpr);
@@ -5942,7 +5944,7 @@ static IrInstSrc *ir_gen_while_expr(Stage1AstGen *ag, Scope *scope, AstNode *nod
payload_scope = subexpr_scope;
}
ScopeExpr *spill_scope = create_expr_scope(ag->codegen, node, payload_scope);
- IrInstSrc *err_val_ptr = ir_gen_node_extra(ag, node->data.while_expr.condition, subexpr_scope,
+ IrInstSrc *err_val_ptr = astgen_node_extra(ag, node->data.while_expr.condition, subexpr_scope,
LValPtr, nullptr);
if (err_val_ptr == ag->codegen->invalid_inst_src)
return err_val_ptr;
@@ -5990,8 +5992,8 @@ static IrInstSrc *ir_gen_while_expr(Stage1AstGen *ag, Scope *scope, AstNode *nod
// Note the body block of the loop is not the place that lval and result_loc are used -
// it's actually in break statements, handled similarly to return statements.
- // That is why we set those values in loop_scope above and not in this ir_gen_node call.
- IrInstSrc *body_result = ir_gen_node(ag, node->data.while_expr.body, &loop_scope->base);
+ // That is why we set those values in loop_scope above and not in this astgen_node call.
+ IrInstSrc *body_result = astgen_node(ag, node->data.while_expr.body, &loop_scope->base);
if (body_result == ag->codegen->invalid_inst_src)
return body_result;
@@ -6006,7 +6008,7 @@ static IrInstSrc *ir_gen_while_expr(Stage1AstGen *ag, Scope *scope, AstNode *nod
if (continue_expr_node) {
ir_set_cursor_at_end_and_append_block(ag, continue_block);
- IrInstSrc *expr_result = ir_gen_node(ag, continue_expr_node, payload_scope);
+ IrInstSrc *expr_result = astgen_node(ag, continue_expr_node, payload_scope);
if (expr_result == ag->codegen->invalid_inst_src)
return expr_result;
if (!instr_is_unreachable(expr_result)) {
@@ -6032,7 +6034,7 @@ static IrInstSrc *ir_gen_while_expr(Stage1AstGen *ag, Scope *scope, AstNode *nod
}
ResultLocPeer *peer_result = create_peer_result(peer_parent);
peer_parent->peers.append(peer_result);
- IrInstSrc *else_result = ir_gen_node_extra(ag, else_node, err_scope, lval, &peer_result->base);
+ IrInstSrc *else_result = astgen_node_extra(ag, else_node, err_scope, lval, &peer_result->base);
if (else_result == ag->codegen->invalid_inst_src)
return else_result;
if (!instr_is_unreachable(else_result))
@@ -6063,7 +6065,7 @@ static IrInstSrc *ir_gen_while_expr(Stage1AstGen *ag, Scope *scope, AstNode *nod
true, false, false, is_comptime);
Scope *child_scope = payload_var->child_scope;
ScopeExpr *spill_scope = create_expr_scope(ag->codegen, node, child_scope);
- IrInstSrc *maybe_val_ptr = ir_gen_node_extra(ag, node->data.while_expr.condition, subexpr_scope,
+ IrInstSrc *maybe_val_ptr = astgen_node_extra(ag, node->data.while_expr.condition, subexpr_scope,
LValPtr, nullptr);
if (maybe_val_ptr == ag->codegen->invalid_inst_src)
return maybe_val_ptr;
@@ -6108,8 +6110,8 @@ static IrInstSrc *ir_gen_while_expr(Stage1AstGen *ag, Scope *scope, AstNode *nod
// Note the body block of the loop is not the place that lval and result_loc are used -
// it's actually in break statements, handled similarly to return statements.
- // That is why we set those values in loop_scope above and not in this ir_gen_node call.
- IrInstSrc *body_result = ir_gen_node(ag, node->data.while_expr.body, &loop_scope->base);
+ // That is why we set those values in loop_scope above and not in this astgen_node call.
+ IrInstSrc *body_result = astgen_node(ag, node->data.while_expr.body, &loop_scope->base);
if (body_result == ag->codegen->invalid_inst_src)
return body_result;
@@ -6124,7 +6126,7 @@ static IrInstSrc *ir_gen_while_expr(Stage1AstGen *ag, Scope *scope, AstNode *nod
if (continue_expr_node) {
ir_set_cursor_at_end_and_append_block(ag, continue_block);
- IrInstSrc *expr_result = ir_gen_node(ag, continue_expr_node, child_scope);
+ IrInstSrc *expr_result = astgen_node(ag, continue_expr_node, child_scope);
if (expr_result == ag->codegen->invalid_inst_src)
return expr_result;
if (!instr_is_unreachable(expr_result)) {
@@ -6142,7 +6144,7 @@ static IrInstSrc *ir_gen_while_expr(Stage1AstGen *ag, Scope *scope, AstNode *nod
}
ResultLocPeer *peer_result = create_peer_result(peer_parent);
peer_parent->peers.append(peer_result);
- else_result = ir_gen_node_extra(ag, else_node, scope, lval, &peer_result->base);
+ else_result = astgen_node_extra(ag, else_node, scope, lval, &peer_result->base);
if (else_result == ag->codegen->invalid_inst_src)
return else_result;
if (!instr_is_unreachable(else_result))
@@ -6166,7 +6168,7 @@ static IrInstSrc *ir_gen_while_expr(Stage1AstGen *ag, Scope *scope, AstNode *nod
return ir_expr_wrap(ag, scope, phi, result_loc);
} else {
ir_set_cursor_at_end_and_append_block(ag, cond_block);
- IrInstSrc *cond_val = ir_gen_node(ag, node->data.while_expr.condition, scope);
+ IrInstSrc *cond_val = astgen_node(ag, node->data.while_expr.condition, scope);
if (cond_val == ag->codegen->invalid_inst_src)
return cond_val;
Stage1ZirBasicBlock *after_cond_block = ag->current_basic_block;
@@ -6204,8 +6206,8 @@ static IrInstSrc *ir_gen_while_expr(Stage1AstGen *ag, Scope *scope, AstNode *nod
// Note the body block of the loop is not the place that lval and result_loc are used -
// it's actually in break statements, handled similarly to return statements.
- // That is why we set those values in loop_scope above and not in this ir_gen_node call.
- IrInstSrc *body_result = ir_gen_node(ag, node->data.while_expr.body, &loop_scope->base);
+ // That is why we set those values in loop_scope above and not in this astgen_node call.
+ IrInstSrc *body_result = astgen_node(ag, node->data.while_expr.body, &loop_scope->base);
if (body_result == ag->codegen->invalid_inst_src)
return body_result;
@@ -6220,7 +6222,7 @@ static IrInstSrc *ir_gen_while_expr(Stage1AstGen *ag, Scope *scope, AstNode *nod
if (continue_expr_node) {
ir_set_cursor_at_end_and_append_block(ag, continue_block);
- IrInstSrc *expr_result = ir_gen_node(ag, continue_expr_node, subexpr_scope);
+ IrInstSrc *expr_result = astgen_node(ag, continue_expr_node, subexpr_scope);
if (expr_result == ag->codegen->invalid_inst_src)
return expr_result;
if (!instr_is_unreachable(expr_result)) {
@@ -6239,7 +6241,7 @@ static IrInstSrc *ir_gen_while_expr(Stage1AstGen *ag, Scope *scope, AstNode *nod
ResultLocPeer *peer_result = create_peer_result(peer_parent);
peer_parent->peers.append(peer_result);
- else_result = ir_gen_node_extra(ag, else_node, subexpr_scope, lval, &peer_result->base);
+ else_result = astgen_node_extra(ag, else_node, subexpr_scope, lval, &peer_result->base);
if (else_result == ag->codegen->invalid_inst_src)
return else_result;
if (!instr_is_unreachable(else_result))
@@ -6264,7 +6266,7 @@ static IrInstSrc *ir_gen_while_expr(Stage1AstGen *ag, Scope *scope, AstNode *nod
}
}
-static IrInstSrc *ir_gen_for_expr(Stage1AstGen *ag, Scope *parent_scope, AstNode *node, LVal lval,
+static IrInstSrc *astgen_for_expr(Stage1AstGen *ag, Scope *parent_scope, AstNode *node, LVal lval,
ResultLoc *result_loc)
{
assert(node->type == NodeTypeForExpr);
@@ -6283,7 +6285,7 @@ static IrInstSrc *ir_gen_for_expr(Stage1AstGen *ag, Scope *parent_scope, AstNode
ScopeExpr *spill_scope = create_expr_scope(ag->codegen, node, parent_scope);
- IrInstSrc *array_val_ptr = ir_gen_node_extra(ag, array_node, &spill_scope->base, LValPtr, nullptr);
+ IrInstSrc *array_val_ptr = astgen_node_extra(ag, array_node, &spill_scope->base, LValPtr, nullptr);
if (array_val_ptr == ag->codegen->invalid_inst_src)
return array_val_ptr;
@@ -6362,8 +6364,8 @@ static IrInstSrc *ir_gen_for_expr(Stage1AstGen *ag, Scope *parent_scope, AstNode
// Note the body block of the loop is not the place that lval and result_loc are used -
// it's actually in break statements, handled similarly to return statements.
- // That is why we set those values in loop_scope above and not in this ir_gen_node call.
- IrInstSrc *body_result = ir_gen_node(ag, body_node, &loop_scope->base);
+ // That is why we set those values in loop_scope above and not in this astgen_node call.
+ IrInstSrc *body_result = astgen_node(ag, body_node, &loop_scope->base);
if (body_result == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
@@ -6390,7 +6392,7 @@ static IrInstSrc *ir_gen_for_expr(Stage1AstGen *ag, Scope *parent_scope, AstNode
}
ResultLocPeer *peer_result = create_peer_result(peer_parent);
peer_parent->peers.append(peer_result);
- else_result = ir_gen_node_extra(ag, else_node, parent_scope, LValNone, &peer_result->base);
+ else_result = astgen_node_extra(ag, else_node, parent_scope, LValNone, &peer_result->base);
if (else_result == ag->codegen->invalid_inst_src)
return else_result;
if (!instr_is_unreachable(else_result))
@@ -6415,19 +6417,25 @@ static IrInstSrc *ir_gen_for_expr(Stage1AstGen *ag, Scope *parent_scope, AstNode
return ir_lval_wrap(ag, parent_scope, phi, lval, result_loc);
}
-static IrInstSrc *ir_gen_bool_literal(Stage1AstGen *ag, Scope *scope, AstNode *node) {
+static IrInstSrc *astgen_bool_literal(Stage1AstGen *ag, Scope *scope, AstNode *node) {
assert(node->type == NodeTypeBoolLiteral);
return ir_build_const_bool(ag, scope, node, node->data.bool_literal.value);
}
-static IrInstSrc *ir_gen_enum_literal(Stage1AstGen *ag, Scope *scope, AstNode *node) {
+static IrInstSrc *astgen_enum_literal(Stage1AstGen *ag, Scope *scope, AstNode *node) {
assert(node->type == NodeTypeEnumLiteral);
- RootStruct *root_struct = node->owner->data.structure.root_struct;
- Buf *name = token_identifier_buf(root_struct, node->main_token + 1);
- return ir_build_const_enum_literal(ag, scope, node, name);
+ // Currently, stage1 runs astgen for every comptime function call,
+ // resulting the allocation here wasting memory. As a workaround until
+ // the code is adjusted to make astgen run only once per source node,
+ // we memoize the result into the AST here.
+ if (node->data.enum_literal.name == nullptr) {
+ RootStruct *root_struct = node->owner->data.structure.root_struct;
+ node->data.enum_literal.name = token_identifier_buf(root_struct, node->main_token + 1);
+ }
+ return ir_build_const_enum_literal(ag, scope, node, node->data.enum_literal.name);
}
-static IrInstSrc *ir_gen_string_literal(Stage1AstGen *ag, Scope *scope, AstNode *node) {
+static IrInstSrc *astgen_string_literal(Stage1AstGen *ag, Scope *scope, AstNode *node) {
Error err;
assert(node->type == NodeTypeStringLiteral);
@@ -6465,10 +6473,11 @@ static IrInstSrc *ir_gen_string_literal(Stage1AstGen *ag, Scope *scope, AstNode
} else {
zig_unreachable();
}
+
return ir_build_const_str_lit(ag, scope, node, str);
}
-static IrInstSrc *ir_gen_array_type(Stage1AstGen *ag, Scope *scope, AstNode *node) {
+static IrInstSrc *astgen_array_type(Stage1AstGen *ag, Scope *scope, AstNode *node) {
assert(node->type == NodeTypeArrayType);
AstNode *size_node = node->data.array_type.size;
@@ -6483,7 +6492,7 @@ static IrInstSrc *ir_gen_array_type(Stage1AstGen *ag, Scope *scope, AstNode *nod
IrInstSrc *sentinel;
if (sentinel_expr != nullptr) {
- sentinel = ir_gen_node(ag, sentinel_expr, comptime_scope);
+ sentinel = astgen_node(ag, sentinel_expr, comptime_scope);
if (sentinel == ag->codegen->invalid_inst_src)
return sentinel;
} else {
@@ -6508,11 +6517,11 @@ static IrInstSrc *ir_gen_array_type(Stage1AstGen *ag, Scope *scope, AstNode *nod
return ag->codegen->invalid_inst_src;
}
- IrInstSrc *size_value = ir_gen_node(ag, size_node, comptime_scope);
+ IrInstSrc *size_value = astgen_node(ag, size_node, comptime_scope);
if (size_value == ag->codegen->invalid_inst_src)
return size_value;
- IrInstSrc *child_type = ir_gen_node(ag, child_type_node, comptime_scope);
+ IrInstSrc *child_type = astgen_node(ag, child_type_node, comptime_scope);
if (child_type == ag->codegen->invalid_inst_src)
return child_type;
@@ -6520,14 +6529,14 @@ static IrInstSrc *ir_gen_array_type(Stage1AstGen *ag, Scope *scope, AstNode *nod
} else {
IrInstSrc *align_value;
if (align_expr != nullptr) {
- align_value = ir_gen_node(ag, align_expr, comptime_scope);
+ align_value = astgen_node(ag, align_expr, comptime_scope);
if (align_value == ag->codegen->invalid_inst_src)
return align_value;
} else {
align_value = nullptr;
}
- IrInstSrc *child_type = ir_gen_node(ag, child_type_node, comptime_scope);
+ IrInstSrc *child_type = astgen_node(ag, child_type_node, comptime_scope);
if (child_type == ag->codegen->invalid_inst_src)
return child_type;
@@ -6536,14 +6545,14 @@ static IrInstSrc *ir_gen_array_type(Stage1AstGen *ag, Scope *scope, AstNode *nod
}
}
-static IrInstSrc *ir_gen_anyframe_type(Stage1AstGen *ag, Scope *scope, AstNode *node) {
+static IrInstSrc *astgen_anyframe_type(Stage1AstGen *ag, Scope *scope, AstNode *node) {
assert(node->type == NodeTypeAnyFrameType);
AstNode *payload_type_node = node->data.anyframe_type.payload_type;
IrInstSrc *payload_type_value = nullptr;
if (payload_type_node != nullptr) {
- payload_type_value = ir_gen_node(ag, payload_type_node, scope);
+ payload_type_value = astgen_node(ag, payload_type_node, scope);
if (payload_type_value == ag->codegen->invalid_inst_src)
return payload_type_value;
@@ -6552,16 +6561,16 @@ static IrInstSrc *ir_gen_anyframe_type(Stage1AstGen *ag, Scope *scope, AstNode *
return ir_build_anyframe_type(ag, scope, node, payload_type_value);
}
-static IrInstSrc *ir_gen_undefined_literal(Stage1AstGen *ag, Scope *scope, AstNode *node) {
+static IrInstSrc *astgen_undefined_literal(Stage1AstGen *ag, Scope *scope, AstNode *node) {
assert(node->type == NodeTypeUndefinedLiteral);
return ir_build_const_undefined(ag, scope, node);
}
-static IrInstSrc *ir_gen_asm_expr(Stage1AstGen *ag, Scope *scope, AstNode *node) {
+static IrInstSrc *astgen_asm_expr(Stage1AstGen *ag, Scope *scope, AstNode *node) {
assert(node->type == NodeTypeAsmExpr);
AstNodeAsmExpr *asm_expr = &node->data.asm_expr;
- IrInstSrc *asm_template = ir_gen_node(ag, asm_expr->asm_template, scope);
+ IrInstSrc *asm_template = astgen_node(ag, asm_expr->asm_template, scope);
if (asm_template == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
@@ -6601,7 +6610,7 @@ static IrInstSrc *ir_gen_asm_expr(Stage1AstGen *ag, Scope *scope, AstNode *node)
if (asm_output->return_type) {
return_count += 1;
- IrInstSrc *return_type = ir_gen_node(ag, asm_output->return_type, scope);
+ IrInstSrc *return_type = astgen_node(ag, asm_output->return_type, scope);
if (return_type == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
if (return_count > 1) {
@@ -6612,7 +6621,7 @@ static IrInstSrc *ir_gen_asm_expr(Stage1AstGen *ag, Scope *scope, AstNode *node)
output_types[i] = return_type;
} else {
Buf *variable_name = asm_output->variable_name;
- // TODO there is some duplication here with ir_gen_symbol. I need to do a full audit of how
+ // TODO there is some duplication here with astgen_identifier. I need to do a full audit of how
// inline assembly works. https://github.com/ziglang/zig/issues/215
ZigVar *var = find_variable(ag->codegen, scope, variable_name, nullptr);
if (var) {
@@ -6635,7 +6644,7 @@ static IrInstSrc *ir_gen_asm_expr(Stage1AstGen *ag, Scope *scope, AstNode *node)
}
for (size_t i = 0; i < asm_expr->input_list.length; i += 1) {
AsmInput *asm_input = asm_expr->input_list.at(i);
- IrInstSrc *input_value = ir_gen_node(ag, asm_input->expr, scope);
+ IrInstSrc *input_value = astgen_node(ag, asm_input->expr, scope);
if (input_value == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
@@ -6646,7 +6655,7 @@ static IrInstSrc *ir_gen_asm_expr(Stage1AstGen *ag, Scope *scope, AstNode *node)
output_vars, return_count, is_volatile, false);
}
-static IrInstSrc *ir_gen_if_optional_expr(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval,
+static IrInstSrc *astgen_if_optional_expr(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval,
ResultLoc *result_loc)
{
assert(node->type == NodeTypeIfOptional);
@@ -6660,7 +6669,7 @@ static IrInstSrc *ir_gen_if_optional_expr(Stage1AstGen *ag, Scope *scope, AstNod
ScopeExpr *spill_scope = create_expr_scope(ag->codegen, expr_node, scope);
spill_scope->spill_harder = true;
- IrInstSrc *maybe_val_ptr = ir_gen_node_extra(ag, expr_node, &spill_scope->base, LValPtr, nullptr);
+ IrInstSrc *maybe_val_ptr = astgen_node_extra(ag, expr_node, &spill_scope->base, LValPtr, nullptr);
if (maybe_val_ptr == ag->codegen->invalid_inst_src)
return maybe_val_ptr;
@@ -6701,7 +6710,7 @@ static IrInstSrc *ir_gen_if_optional_expr(Stage1AstGen *ag, Scope *scope, AstNod
} else {
var_scope = subexpr_scope;
}
- IrInstSrc *then_expr_result = ir_gen_node_extra(ag, then_node, var_scope, lval,
+ IrInstSrc *then_expr_result = astgen_node_extra(ag, then_node, var_scope, lval,
&peer_parent->peers.at(0)->base);
if (then_expr_result == ag->codegen->invalid_inst_src)
return then_expr_result;
@@ -6712,7 +6721,7 @@ static IrInstSrc *ir_gen_if_optional_expr(Stage1AstGen *ag, Scope *scope, AstNod
ir_set_cursor_at_end_and_append_block(ag, else_block);
IrInstSrc *else_expr_result;
if (else_node) {
- else_expr_result = ir_gen_node_extra(ag, else_node, subexpr_scope, lval, &peer_parent->peers.at(1)->base);
+ else_expr_result = astgen_node_extra(ag, else_node, subexpr_scope, lval, &peer_parent->peers.at(1)->base);
if (else_expr_result == ag->codegen->invalid_inst_src)
return else_expr_result;
} else {
@@ -6735,7 +6744,7 @@ static IrInstSrc *ir_gen_if_optional_expr(Stage1AstGen *ag, Scope *scope, AstNod
return ir_expr_wrap(ag, scope, phi, result_loc);
}
-static IrInstSrc *ir_gen_if_err_expr(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval,
+static IrInstSrc *astgen_if_err_expr(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval,
ResultLoc *result_loc)
{
assert(node->type == NodeTypeIfErrorExpr);
@@ -6748,7 +6757,7 @@ static IrInstSrc *ir_gen_if_err_expr(Stage1AstGen *ag, Scope *scope, AstNode *no
Buf *var_symbol = node->data.if_err_expr.var_symbol;
Buf *err_symbol = node->data.if_err_expr.err_symbol;
- IrInstSrc *err_val_ptr = ir_gen_node_extra(ag, target_node, scope, LValPtr, nullptr);
+ IrInstSrc *err_val_ptr = astgen_node_extra(ag, target_node, scope, LValPtr, nullptr);
if (err_val_ptr == ag->codegen->invalid_inst_src)
return err_val_ptr;
@@ -6784,7 +6793,7 @@ static IrInstSrc *ir_gen_if_err_expr(Stage1AstGen *ag, Scope *scope, AstNode *no
} else {
var_scope = subexpr_scope;
}
- IrInstSrc *then_expr_result = ir_gen_node_extra(ag, then_node, var_scope, lval,
+ IrInstSrc *then_expr_result = astgen_node_extra(ag, then_node, var_scope, lval,
&peer_parent->peers.at(0)->base);
if (then_expr_result == ag->codegen->invalid_inst_src)
return then_expr_result;
@@ -6810,7 +6819,7 @@ static IrInstSrc *ir_gen_if_err_expr(Stage1AstGen *ag, Scope *scope, AstNode *no
} else {
err_var_scope = subexpr_scope;
}
- else_expr_result = ir_gen_node_extra(ag, else_node, err_var_scope, lval, &peer_parent->peers.at(1)->base);
+ else_expr_result = astgen_node_extra(ag, else_node, err_var_scope, lval, &peer_parent->peers.at(1)->base);
if (else_expr_result == ag->codegen->invalid_inst_src)
return else_expr_result;
} else {
@@ -6833,7 +6842,7 @@ static IrInstSrc *ir_gen_if_err_expr(Stage1AstGen *ag, Scope *scope, AstNode *no
return ir_expr_wrap(ag, scope, phi, result_loc);
}
-static bool ir_gen_switch_prong_expr(Stage1AstGen *ag, Scope *scope, AstNode *switch_node, AstNode *prong_node,
+static bool astgen_switch_prong_expr(Stage1AstGen *ag, Scope *scope, AstNode *switch_node, AstNode *prong_node,
Stage1ZirBasicBlock *end_block, IrInstSrc *is_comptime, IrInstSrc *var_is_comptime,
IrInstSrc *target_value_ptr, IrInstSrc **prong_values, size_t prong_values_len,
ZigList<Stage1ZirBasicBlock *> *incoming_blocks, ZigList<IrInstSrc *> *incoming_values,
@@ -6877,7 +6886,7 @@ static bool ir_gen_switch_prong_expr(Stage1AstGen *ag, Scope *scope, AstNode *sw
child_scope = scope;
}
- IrInstSrc *expr_result = ir_gen_node_extra(ag, expr_node, child_scope, lval, result_loc);
+ IrInstSrc *expr_result = astgen_node_extra(ag, expr_node, child_scope, lval, result_loc);
if (expr_result == ag->codegen->invalid_inst_src)
return false;
if (!instr_is_unreachable(expr_result))
@@ -6887,13 +6896,13 @@ static bool ir_gen_switch_prong_expr(Stage1AstGen *ag, Scope *scope, AstNode *sw
return true;
}
-static IrInstSrc *ir_gen_switch_expr(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval,
+static IrInstSrc *astgen_switch_expr(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval,
ResultLoc *result_loc)
{
assert(node->type == NodeTypeSwitchExpr);
AstNode *target_node = node->data.switch_expr.expr;
- IrInstSrc *target_value_ptr = ir_gen_node_extra(ag, target_node, scope, LValPtr, nullptr);
+ IrInstSrc *target_value_ptr = astgen_node_extra(ag, target_node, scope, LValPtr, nullptr);
if (target_value_ptr == ag->codegen->invalid_inst_src)
return target_value_ptr;
IrInstSrc *target_value = ir_build_switch_target(ag, scope, node, target_value_ptr);
@@ -6949,11 +6958,11 @@ static IrInstSrc *ir_gen_switch_expr(Stage1AstGen *ag, Scope *scope, AstNode *no
AstNode *start_node = item_node->data.switch_range.start;
AstNode *end_node = item_node->data.switch_range.end;
- IrInstSrc *start_value = ir_gen_node(ag, start_node, comptime_scope);
+ IrInstSrc *start_value = astgen_node(ag, start_node, comptime_scope);
if (start_value == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
- IrInstSrc *end_value = ir_gen_node(ag, end_node, comptime_scope);
+ IrInstSrc *end_value = astgen_node(ag, end_node, comptime_scope);
if (end_value == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
@@ -6973,7 +6982,7 @@ static IrInstSrc *ir_gen_switch_expr(Stage1AstGen *ag, Scope *scope, AstNode *no
ok_bit = both_ok;
}
} else {
- IrInstSrc *item_value = ir_gen_node(ag, item_node, comptime_scope);
+ IrInstSrc *item_value = astgen_node(ag, item_node, comptime_scope);
if (item_value == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
@@ -7007,7 +7016,7 @@ static IrInstSrc *ir_gen_switch_expr(Stage1AstGen *ag, Scope *scope, AstNode *no
}
peer_parent->peers.append(this_peer_result_loc);
ir_set_cursor_at_end_and_append_block(ag, range_block_yes);
- if (!ir_gen_switch_prong_expr(ag, subexpr_scope, node, prong_node, end_block,
+ if (!astgen_switch_prong_expr(ag, subexpr_scope, node, prong_node, end_block,
is_comptime, var_is_comptime, target_value_ptr, nullptr, 0,
&incoming_blocks, &incoming_values, nullptr, LValNone, &this_peer_result_loc->base))
{
@@ -7058,7 +7067,7 @@ static IrInstSrc *ir_gen_switch_expr(Stage1AstGen *ag, Scope *scope, AstNode *no
}
peer_parent->peers.append(this_peer_result_loc);
ir_set_cursor_at_end_and_append_block(ag, else_block);
- if (!ir_gen_switch_prong_expr(ag, subexpr_scope, node, prong_node, end_block,
+ if (!astgen_switch_prong_expr(ag, subexpr_scope, node, prong_node, end_block,
is_comptime, var_is_comptime, target_value_ptr, nullptr, 0, &incoming_blocks, &incoming_values,
&switch_else_var, LValNone, &this_peer_result_loc->base))
{
@@ -7088,7 +7097,7 @@ static IrInstSrc *ir_gen_switch_expr(Stage1AstGen *ag, Scope *scope, AstNode *no
AstNode *item_node = prong_node->data.switch_prong.items.at(item_i);
assert(item_node->type != NodeTypeSwitchRange);
- IrInstSrc *item_value = ir_gen_node(ag, item_node, comptime_scope);
+ IrInstSrc *item_value = astgen_node(ag, item_node, comptime_scope);
if (item_value == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
@@ -7109,7 +7118,7 @@ static IrInstSrc *ir_gen_switch_expr(Stage1AstGen *ag, Scope *scope, AstNode *no
}
peer_parent->peers.append(this_peer_result_loc);
ir_set_cursor_at_end_and_append_block(ag, prong_block);
- if (!ir_gen_switch_prong_expr(ag, subexpr_scope, node, prong_node, end_block,
+ if (!astgen_switch_prong_expr(ag, subexpr_scope, node, prong_node, end_block,
is_comptime, var_is_comptime, target_value_ptr, items, prong_item_count,
&incoming_blocks, &incoming_values, nullptr, LValNone, &this_peer_result_loc->base))
{
@@ -7165,23 +7174,23 @@ static IrInstSrc *ir_gen_switch_expr(Stage1AstGen *ag, Scope *scope, AstNode *no
return ir_lval_wrap(ag, scope, result_instruction, lval, result_loc);
}
-static IrInstSrc *ir_gen_comptime(Stage1AstGen *ag, Scope *parent_scope, AstNode *node, LVal lval) {
+static IrInstSrc *astgen_comptime(Stage1AstGen *ag, Scope *parent_scope, AstNode *node, LVal lval) {
assert(node->type == NodeTypeCompTime);
Scope *child_scope = create_comptime_scope(ag->codegen, node, parent_scope);
// purposefully pass null for result_loc and let EndExpr handle it
- return ir_gen_node_extra(ag, node->data.comptime_expr.expr, child_scope, lval, nullptr);
+ return astgen_node_extra(ag, node->data.comptime_expr.expr, child_scope, lval, nullptr);
}
-static IrInstSrc *ir_gen_nosuspend(Stage1AstGen *ag, Scope *parent_scope, AstNode *node, LVal lval) {
+static IrInstSrc *astgen_nosuspend(Stage1AstGen *ag, Scope *parent_scope, AstNode *node, LVal lval) {
assert(node->type == NodeTypeNoSuspend);
Scope *child_scope = create_nosuspend_scope(ag->codegen, node, parent_scope);
// purposefully pass null for result_loc and let EndExpr handle it
- return ir_gen_node_extra(ag, node->data.nosuspend_expr.expr, child_scope, lval, nullptr);
+ return astgen_node_extra(ag, node->data.nosuspend_expr.expr, child_scope, lval, nullptr);
}
-static IrInstSrc *ir_gen_return_from_block(Stage1AstGen *ag, Scope *break_scope, AstNode *node, ScopeBlock *block_scope) {
+static IrInstSrc *astgen_return_from_block(Stage1AstGen *ag, Scope *break_scope, AstNode *node, ScopeBlock *block_scope) {
IrInstSrc *is_comptime;
if (ir_should_inline(ag->exec, break_scope)) {
is_comptime = ir_build_const_bool(ag, break_scope, node, true);
@@ -7194,7 +7203,7 @@ static IrInstSrc *ir_gen_return_from_block(Stage1AstGen *ag, Scope *break_scope,
ResultLocPeer *peer_result = create_peer_result(block_scope->peer_parent);
block_scope->peer_parent->peers.append(peer_result);
- result_value = ir_gen_node_extra(ag, node->data.break_expr.expr, break_scope, block_scope->lval,
+ result_value = astgen_node_extra(ag, node->data.break_expr.expr, break_scope, block_scope->lval,
&peer_result->base);
if (result_value == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
@@ -7203,7 +7212,7 @@ static IrInstSrc *ir_gen_return_from_block(Stage1AstGen *ag, Scope *break_scope,
}
Stage1ZirBasicBlock *dest_block = block_scope->end_block;
- if (!ir_gen_defers_for_block(ag, break_scope, dest_block->scope, nullptr, nullptr))
+ if (!astgen_defers_for_block(ag, break_scope, dest_block->scope, nullptr, nullptr))
return ag->codegen->invalid_inst_src;
block_scope->incoming_blocks->append(ag->current_basic_block);
@@ -7211,7 +7220,7 @@ static IrInstSrc *ir_gen_return_from_block(Stage1AstGen *ag, Scope *break_scope,
return ir_build_br(ag, break_scope, node, dest_block, is_comptime);
}
-static IrInstSrc *ir_gen_break(Stage1AstGen *ag, Scope *break_scope, AstNode *node) {
+static IrInstSrc *astgen_break(Stage1AstGen *ag, Scope *break_scope, AstNode *node) {
assert(node->type == NodeTypeBreak);
// Search up the scope. We'll find one of these things first:
@@ -7250,7 +7259,7 @@ static IrInstSrc *ir_gen_break(Stage1AstGen *ag, Scope *break_scope, AstNode *no
{
assert(this_block_scope->end_block != nullptr);
this_block_scope->name_used = true;
- return ir_gen_return_from_block(ag, break_scope, node, this_block_scope);
+ return astgen_return_from_block(ag, break_scope, node, this_block_scope);
}
} else if (search_scope->id == ScopeIdSuspend) {
add_node_error(ag->codegen, node, buf_sprintf("cannot break out of suspend block"));
@@ -7271,7 +7280,7 @@ static IrInstSrc *ir_gen_break(Stage1AstGen *ag, Scope *break_scope, AstNode *no
ResultLocPeer *peer_result = create_peer_result(loop_scope->peer_parent);
loop_scope->peer_parent->peers.append(peer_result);
- result_value = ir_gen_node_extra(ag, node->data.break_expr.expr, break_scope,
+ result_value = astgen_node_extra(ag, node->data.break_expr.expr, break_scope,
loop_scope->lval, &peer_result->base);
if (result_value == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
@@ -7280,7 +7289,7 @@ static IrInstSrc *ir_gen_break(Stage1AstGen *ag, Scope *break_scope, AstNode *no
}
Stage1ZirBasicBlock *dest_block = loop_scope->break_block;
- if (!ir_gen_defers_for_block(ag, break_scope, dest_block->scope, nullptr, nullptr))
+ if (!astgen_defers_for_block(ag, break_scope, dest_block->scope, nullptr, nullptr))
return ag->codegen->invalid_inst_src;
loop_scope->incoming_blocks->append(ag->current_basic_block);
@@ -7288,7 +7297,7 @@ static IrInstSrc *ir_gen_break(Stage1AstGen *ag, Scope *break_scope, AstNode *no
return ir_build_br(ag, break_scope, node, dest_block, is_comptime);
}
-static IrInstSrc *ir_gen_continue(Stage1AstGen *ag, Scope *continue_scope, AstNode *node) {
+static IrInstSrc *astgen_continue(Stage1AstGen *ag, Scope *continue_scope, AstNode *node) {
assert(node->type == NodeTypeContinue);
// Search up the scope. We'll find one of these things first:
@@ -7342,17 +7351,17 @@ static IrInstSrc *ir_gen_continue(Stage1AstGen *ag, Scope *continue_scope, AstNo
runtime_scopes.deinit();
Stage1ZirBasicBlock *dest_block = loop_scope->continue_block;
- if (!ir_gen_defers_for_block(ag, continue_scope, dest_block->scope, nullptr, nullptr))
+ if (!astgen_defers_for_block(ag, continue_scope, dest_block->scope, nullptr, nullptr))
return ag->codegen->invalid_inst_src;
return ir_mark_gen(ir_build_br(ag, continue_scope, node, dest_block, is_comptime));
}
-static IrInstSrc *ir_gen_error_type(Stage1AstGen *ag, Scope *scope, AstNode *node) {
+static IrInstSrc *astgen_error_type(Stage1AstGen *ag, Scope *scope, AstNode *node) {
assert(node->type == NodeTypeErrorType);
return ir_build_const_type(ag, scope, node, ag->codegen->builtin_types.entry_global_error_set);
}
-static IrInstSrc *ir_gen_defer(Stage1AstGen *ag, Scope *parent_scope, AstNode *node) {
+static IrInstSrc *astgen_defer(Stage1AstGen *ag, Scope *parent_scope, AstNode *node) {
assert(node->type == NodeTypeDefer);
ScopeDefer *defer_child_scope = create_defer_scope(ag->codegen, node, parent_scope);
@@ -7364,7 +7373,7 @@ static IrInstSrc *ir_gen_defer(Stage1AstGen *ag, Scope *parent_scope, AstNode *n
return ir_build_const_void(ag, parent_scope, node);
}
-static IrInstSrc *ir_gen_slice(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval, ResultLoc *result_loc) {
+static IrInstSrc *astgen_slice(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval, ResultLoc *result_loc) {
assert(node->type == NodeTypeSliceExpr);
AstNodeSliceExpr *slice_expr = &node->data.slice_expr;
@@ -7373,17 +7382,17 @@ static IrInstSrc *ir_gen_slice(Stage1AstGen *ag, Scope *scope, AstNode *node, LV
AstNode *end_node = slice_expr->end;
AstNode *sentinel_node = slice_expr->sentinel;
- IrInstSrc *ptr_value = ir_gen_node_extra(ag, array_node, scope, LValPtr, nullptr);
+ IrInstSrc *ptr_value = astgen_node_extra(ag, array_node, scope, LValPtr, nullptr);
if (ptr_value == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
- IrInstSrc *start_value = ir_gen_node(ag, start_node, scope);
+ IrInstSrc *start_value = astgen_node(ag, start_node, scope);
if (start_value == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
IrInstSrc *end_value;
if (end_node) {
- end_value = ir_gen_node(ag, end_node, scope);
+ end_value = astgen_node(ag, end_node, scope);
if (end_value == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
} else {
@@ -7392,7 +7401,7 @@ static IrInstSrc *ir_gen_slice(Stage1AstGen *ag, Scope *scope, AstNode *node, LV
IrInstSrc *sentinel_value;
if (sentinel_node) {
- sentinel_value = ir_gen_node(ag, sentinel_node, scope);
+ sentinel_value = astgen_node(ag, sentinel_node, scope);
if (sentinel_value == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
} else {
@@ -7404,7 +7413,7 @@ static IrInstSrc *ir_gen_slice(Stage1AstGen *ag, Scope *scope, AstNode *node, LV
return ir_lval_wrap(ag, scope, slice, lval, result_loc);
}
-static IrInstSrc *ir_gen_catch(Stage1AstGen *ag, Scope *parent_scope, AstNode *node, LVal lval,
+static IrInstSrc *astgen_catch(Stage1AstGen *ag, Scope *parent_scope, AstNode *node, LVal lval,
ResultLoc *result_loc)
{
assert(node->type == NodeTypeCatchExpr);
@@ -7420,14 +7429,14 @@ static IrInstSrc *ir_gen_catch(Stage1AstGen *ag, Scope *parent_scope, AstNode *n
add_node_error(ag->codegen, var_node, buf_sprintf("unused variable: '%s'", buf_ptr(var_name)));
return ag->codegen->invalid_inst_src;
}
- return ir_gen_catch_unreachable(ag, parent_scope, node, op1_node, lval, result_loc);
+ return astgen_catch_unreachable(ag, parent_scope, node, op1_node, lval, result_loc);
}
ScopeExpr *spill_scope = create_expr_scope(ag->codegen, op1_node, parent_scope);
spill_scope->spill_harder = true;
- IrInstSrc *err_union_ptr = ir_gen_node_extra(ag, op1_node, &spill_scope->base, LValPtr, nullptr);
+ IrInstSrc *err_union_ptr = astgen_node_extra(ag, op1_node, &spill_scope->base, LValPtr, nullptr);
if (err_union_ptr == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
@@ -7465,7 +7474,7 @@ static IrInstSrc *ir_gen_catch(Stage1AstGen *ag, Scope *parent_scope, AstNode *n
} else {
err_scope = subexpr_scope;
}
- IrInstSrc *err_result = ir_gen_node_extra(ag, op2_node, err_scope, LValNone, &peer_parent->peers.at(0)->base);
+ IrInstSrc *err_result = astgen_node_extra(ag, op2_node, err_scope, LValNone, &peer_parent->peers.at(0)->base);
if (err_result == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
Stage1ZirBasicBlock *after_err_block = ag->current_basic_block;
@@ -7535,7 +7544,7 @@ Buf *get_anon_type_name(CodeGen *codegen, Stage1Zir *exec, const char *kind_name
}
}
-static IrInstSrc *ir_gen_container_decl(Stage1AstGen *ag, Scope *parent_scope, AstNode *node) {
+static IrInstSrc *astgen_container_decl(Stage1AstGen *ag, Scope *parent_scope, AstNode *node) {
assert(node->type == NodeTypeContainerDecl);
ContainerKind kind = node->data.container_decl.kind;
@@ -7564,7 +7573,7 @@ static IrInstSrc *ir_gen_container_decl(Stage1AstGen *ag, Scope *parent_scope, A
return ir_build_const_type(ag, parent_scope, node, container_type);
}
-static IrInstSrc *ir_gen_err_set_decl(Stage1AstGen *ag, Scope *parent_scope, AstNode *node) {
+static IrInstSrc *astgen_err_set_decl(Stage1AstGen *ag, Scope *parent_scope, AstNode *node) {
assert(node->type == NodeTypeErrorSetDecl);
uint32_t err_count = node->data.err_set_decl.decls.length;
@@ -7615,7 +7624,7 @@ static IrInstSrc *ir_gen_err_set_decl(Stage1AstGen *ag, Scope *parent_scope, Ast
return ir_build_const_type(ag, parent_scope, node, err_set_type);
}
-static IrInstSrc *ir_gen_fn_proto(Stage1AstGen *ag, Scope *parent_scope, AstNode *node) {
+static IrInstSrc *astgen_fn_proto(Stage1AstGen *ag, Scope *parent_scope, AstNode *node) {
assert(node->type == NodeTypeFnProto);
size_t param_count = node->data.fn_proto.params.length;
@@ -7630,7 +7639,7 @@ static IrInstSrc *ir_gen_fn_proto(Stage1AstGen *ag, Scope *parent_scope, AstNode
}
if (param_node->data.param_decl.anytype_token == 0) {
AstNode *type_node = param_node->data.param_decl.type;
- IrInstSrc *type_value = ir_gen_node(ag, type_node, parent_scope);
+ IrInstSrc *type_value = astgen_node(ag, type_node, parent_scope);
if (type_value == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
param_types[i] = type_value;
@@ -7641,14 +7650,14 @@ static IrInstSrc *ir_gen_fn_proto(Stage1AstGen *ag, Scope *parent_scope, AstNode
IrInstSrc *align_value = nullptr;
if (node->data.fn_proto.align_expr != nullptr) {
- align_value = ir_gen_node(ag, node->data.fn_proto.align_expr, parent_scope);
+ align_value = astgen_node(ag, node->data.fn_proto.align_expr, parent_scope);
if (align_value == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
}
IrInstSrc *callconv_value = nullptr;
if (node->data.fn_proto.callconv_expr != nullptr) {
- callconv_value = ir_gen_node(ag, node->data.fn_proto.callconv_expr, parent_scope);
+ callconv_value = astgen_node(ag, node->data.fn_proto.callconv_expr, parent_scope);
if (callconv_value == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
}
@@ -7657,7 +7666,7 @@ static IrInstSrc *ir_gen_fn_proto(Stage1AstGen *ag, Scope *parent_scope, AstNode
if (node->data.fn_proto.return_type == nullptr) {
return_type = ir_build_const_type(ag, parent_scope, node, ag->codegen->builtin_types.entry_void);
} else {
- return_type = ir_gen_node(ag, node->data.fn_proto.return_type, parent_scope);
+ return_type = astgen_node(ag, node->data.fn_proto.return_type, parent_scope);
if (return_type == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
}
@@ -7665,17 +7674,17 @@ static IrInstSrc *ir_gen_fn_proto(Stage1AstGen *ag, Scope *parent_scope, AstNode
return ir_build_fn_proto(ag, parent_scope, node, param_types, align_value, callconv_value, return_type, is_var_args);
}
-static IrInstSrc *ir_gen_resume(Stage1AstGen *ag, Scope *scope, AstNode *node) {
+static IrInstSrc *astgen_resume(Stage1AstGen *ag, Scope *scope, AstNode *node) {
assert(node->type == NodeTypeResume);
- IrInstSrc *target_inst = ir_gen_node_extra(ag, node->data.resume_expr.expr, scope, LValPtr, nullptr);
+ IrInstSrc *target_inst = astgen_node_extra(ag, node->data.resume_expr.expr, scope, LValPtr, nullptr);
if (target_inst == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
return ir_build_resume_src(ag, scope, node, target_inst);
}
-static IrInstSrc *ir_gen_await_expr(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval,
+static IrInstSrc *astgen_await_expr(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval,
ResultLoc *result_loc)
{
assert(node->type == NodeTypeAwaitExpr);
@@ -7690,7 +7699,7 @@ static IrInstSrc *ir_gen_await_expr(Stage1AstGen *ag, Scope *scope, AstNode *nod
if (entry != nullptr) {
BuiltinFnEntry *builtin_fn = entry->value;
if (builtin_fn->id == BuiltinFnIdAsyncCall) {
- return ir_gen_async_call(ag, scope, node, expr_node, lval, result_loc);
+ return astgen_async_call(ag, scope, node, expr_node, lval, result_loc);
}
}
}
@@ -7709,7 +7718,7 @@ static IrInstSrc *ir_gen_await_expr(Stage1AstGen *ag, Scope *scope, AstNode *nod
return ag->codegen->invalid_inst_src;
}
- IrInstSrc *target_inst = ir_gen_node_extra(ag, expr_node, scope, LValPtr, nullptr);
+ IrInstSrc *target_inst = astgen_node_extra(ag, expr_node, scope, LValPtr, nullptr);
if (target_inst == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
@@ -7717,7 +7726,7 @@ static IrInstSrc *ir_gen_await_expr(Stage1AstGen *ag, Scope *scope, AstNode *nod
return ir_lval_wrap(ag, scope, await_inst, lval, result_loc);
}
-static IrInstSrc *ir_gen_suspend(Stage1AstGen *ag, Scope *parent_scope, AstNode *node) {
+static IrInstSrc *astgen_suspend(Stage1AstGen *ag, Scope *parent_scope, AstNode *node) {
assert(node->type == NodeTypeSuspend);
if (!ag->fn) {
@@ -7742,7 +7751,7 @@ static IrInstSrc *ir_gen_suspend(Stage1AstGen *ag, Scope *parent_scope, AstNode
IrInstSrcSuspendBegin *begin = ir_build_suspend_begin_src(ag, parent_scope, node);
ScopeSuspend *suspend_scope = create_suspend_scope(ag->codegen, node, parent_scope);
Scope *child_scope = &suspend_scope->base;
- IrInstSrc *susp_res = ir_gen_node(ag, node->data.suspend.block, child_scope);
+ IrInstSrc *susp_res = astgen_node(ag, node->data.suspend.block, child_scope);
if (susp_res == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
ir_mark_gen(ir_build_check_statement_is_void(ag, child_scope, node->data.suspend.block, susp_res));
@@ -7750,7 +7759,7 @@ static IrInstSrc *ir_gen_suspend(Stage1AstGen *ag, Scope *parent_scope, AstNode
return ir_mark_gen(ir_build_suspend_finish_src(ag, parent_scope, node, begin));
}
-static IrInstSrc *ir_gen_node_raw(Stage1AstGen *ag, AstNode *node, Scope *scope,
+static IrInstSrc *astgen_node_raw(Stage1AstGen *ag, AstNode *node, Scope *scope,
LVal lval, ResultLoc *result_loc)
{
assert(scope);
@@ -7766,40 +7775,40 @@ static IrInstSrc *ir_gen_node_raw(Stage1AstGen *ag, AstNode *node, Scope *scope,
case NodeTypeTestDecl:
zig_unreachable();
case NodeTypeBlock:
- return ir_gen_block(ag, scope, node, lval, result_loc);
+ return astgen_block(ag, scope, node, lval, result_loc);
case NodeTypeGroupedExpr:
- return ir_gen_node_raw(ag, node->data.grouped_expr, scope, lval, result_loc);
+ return astgen_node_raw(ag, node->data.grouped_expr, scope, lval, result_loc);
case NodeTypeBinOpExpr:
- return ir_gen_bin_op(ag, scope, node, lval, result_loc);
+ return astgen_bin_op(ag, scope, node, lval, result_loc);
case NodeTypeIntLiteral:
- return ir_lval_wrap(ag, scope, ir_gen_int_lit(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_int_lit(ag, scope, node), lval, result_loc);
case NodeTypeFloatLiteral:
- return ir_lval_wrap(ag, scope, ir_gen_float_lit(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_float_lit(ag, scope, node), lval, result_loc);
case NodeTypeCharLiteral:
- return ir_lval_wrap(ag, scope, ir_gen_char_lit(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_char_lit(ag, scope, node), lval, result_loc);
case NodeTypeIdentifier:
- return ir_gen_symbol(ag, scope, node, lval, result_loc);
+ return astgen_identifier(ag, scope, node, lval, result_loc);
case NodeTypeFnCallExpr:
- return ir_gen_fn_call(ag, scope, node, lval, result_loc);
+ return astgen_fn_call(ag, scope, node, lval, result_loc);
case NodeTypeIfBoolExpr:
- return ir_gen_if_bool_expr(ag, scope, node, lval, result_loc);
+ return astgen_if_bool_expr(ag, scope, node, lval, result_loc);
case NodeTypePrefixOpExpr:
- return ir_gen_prefix_op_expr(ag, scope, node, lval, result_loc);
+ return astgen_prefix_op_expr(ag, scope, node, lval, result_loc);
case NodeTypeContainerInitExpr:
- return ir_gen_container_init_expr(ag, scope, node, lval, result_loc);
+ return astgen_container_init_expr(ag, scope, node, lval, result_loc);
case NodeTypeVariableDeclaration:
- return ir_gen_var_decl(ag, scope, node);
+ return astgen_var_decl(ag, scope, node);
case NodeTypeWhileExpr:
- return ir_gen_while_expr(ag, scope, node, lval, result_loc);
+ return astgen_while_expr(ag, scope, node, lval, result_loc);
case NodeTypeForExpr:
- return ir_gen_for_expr(ag, scope, node, lval, result_loc);
+ return astgen_for_expr(ag, scope, node, lval, result_loc);
case NodeTypeArrayAccessExpr:
- return ir_gen_array_access(ag, scope, node, lval, result_loc);
+ return astgen_array_access(ag, scope, node, lval, result_loc);
case NodeTypeReturnExpr:
- return ir_gen_return(ag, scope, node, lval, result_loc);
+ return astgen_return(ag, scope, node, lval, result_loc);
case NodeTypeFieldAccessExpr:
{
- IrInstSrc *ptr_instruction = ir_gen_field_access(ag, scope, node);
+ IrInstSrc *ptr_instruction = astgen_field_access(ag, scope, node);
if (ptr_instruction == ag->codegen->invalid_inst_src)
return ptr_instruction;
if (lval == LValPtr || lval == LValAssign)
@@ -7815,7 +7824,7 @@ static IrInstSrc *ir_gen_node_raw(Stage1AstGen *ag, AstNode *node, Scope *scope,
if (child_lval == LValAssign)
child_lval = LValPtr;
- IrInstSrc *value = ir_gen_node_extra(ag, expr_node, scope, child_lval, nullptr);
+ IrInstSrc *value = astgen_node_extra(ag, expr_node, scope, child_lval, nullptr);
if (value == ag->codegen->invalid_inst_src)
return value;
@@ -7828,7 +7837,7 @@ static IrInstSrc *ir_gen_node_raw(Stage1AstGen *ag, AstNode *node, Scope *scope,
case NodeTypeUnwrapOptional: {
AstNode *expr_node = node->data.unwrap_optional.expr;
- IrInstSrc *maybe_ptr = ir_gen_node_extra(ag, expr_node, scope, LValPtr, nullptr);
+ IrInstSrc *maybe_ptr = astgen_node_extra(ag, expr_node, scope, LValPtr, nullptr);
if (maybe_ptr == ag->codegen->invalid_inst_src)
return ag->codegen->invalid_inst_src;
@@ -7840,59 +7849,59 @@ static IrInstSrc *ir_gen_node_raw(Stage1AstGen *ag, AstNode *node, Scope *scope,
return ir_expr_wrap(ag, scope, load_ptr, result_loc);
}
case NodeTypeBoolLiteral:
- return ir_lval_wrap(ag, scope, ir_gen_bool_literal(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_bool_literal(ag, scope, node), lval, result_loc);
case NodeTypeArrayType:
- return ir_lval_wrap(ag, scope, ir_gen_array_type(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_array_type(ag, scope, node), lval, result_loc);
case NodeTypePointerType:
- return ir_lval_wrap(ag, scope, ir_gen_pointer_type(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_pointer_type(ag, scope, node), lval, result_loc);
case NodeTypeAnyFrameType:
- return ir_lval_wrap(ag, scope, ir_gen_anyframe_type(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_anyframe_type(ag, scope, node), lval, result_loc);
case NodeTypeStringLiteral:
- return ir_lval_wrap(ag, scope, ir_gen_string_literal(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_string_literal(ag, scope, node), lval, result_loc);
case NodeTypeUndefinedLiteral:
- return ir_lval_wrap(ag, scope, ir_gen_undefined_literal(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_undefined_literal(ag, scope, node), lval, result_loc);
case NodeTypeAsmExpr:
- return ir_lval_wrap(ag, scope, ir_gen_asm_expr(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_asm_expr(ag, scope, node), lval, result_loc);
case NodeTypeNullLiteral:
- return ir_lval_wrap(ag, scope, ir_gen_null_literal(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_null_literal(ag, scope, node), lval, result_loc);
case NodeTypeIfErrorExpr:
- return ir_gen_if_err_expr(ag, scope, node, lval, result_loc);
+ return astgen_if_err_expr(ag, scope, node, lval, result_loc);
case NodeTypeIfOptional:
- return ir_gen_if_optional_expr(ag, scope, node, lval, result_loc);
+ return astgen_if_optional_expr(ag, scope, node, lval, result_loc);
case NodeTypeSwitchExpr:
- return ir_gen_switch_expr(ag, scope, node, lval, result_loc);
+ return astgen_switch_expr(ag, scope, node, lval, result_loc);
case NodeTypeCompTime:
- return ir_expr_wrap(ag, scope, ir_gen_comptime(ag, scope, node, lval), result_loc);
+ return ir_expr_wrap(ag, scope, astgen_comptime(ag, scope, node, lval), result_loc);
case NodeTypeNoSuspend:
- return ir_expr_wrap(ag, scope, ir_gen_nosuspend(ag, scope, node, lval), result_loc);
+ return ir_expr_wrap(ag, scope, astgen_nosuspend(ag, scope, node, lval), result_loc);
case NodeTypeErrorType:
- return ir_lval_wrap(ag, scope, ir_gen_error_type(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_error_type(ag, scope, node), lval, result_loc);
case NodeTypeBreak:
- return ir_lval_wrap(ag, scope, ir_gen_break(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_break(ag, scope, node), lval, result_loc);
case NodeTypeContinue:
- return ir_lval_wrap(ag, scope, ir_gen_continue(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_continue(ag, scope, node), lval, result_loc);
case NodeTypeUnreachable:
return ir_build_unreachable(ag, scope, node);
case NodeTypeDefer:
- return ir_lval_wrap(ag, scope, ir_gen_defer(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_defer(ag, scope, node), lval, result_loc);
case NodeTypeSliceExpr:
- return ir_gen_slice(ag, scope, node, lval, result_loc);
+ return astgen_slice(ag, scope, node, lval, result_loc);
case NodeTypeCatchExpr:
- return ir_gen_catch(ag, scope, node, lval, result_loc);
+ return astgen_catch(ag, scope, node, lval, result_loc);
case NodeTypeContainerDecl:
- return ir_lval_wrap(ag, scope, ir_gen_container_decl(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_container_decl(ag, scope, node), lval, result_loc);
case NodeTypeFnProto:
- return ir_lval_wrap(ag, scope, ir_gen_fn_proto(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_fn_proto(ag, scope, node), lval, result_loc);
case NodeTypeErrorSetDecl:
- return ir_lval_wrap(ag, scope, ir_gen_err_set_decl(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_err_set_decl(ag, scope, node), lval, result_loc);
case NodeTypeResume:
- return ir_lval_wrap(ag, scope, ir_gen_resume(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_resume(ag, scope, node), lval, result_loc);
case NodeTypeAwaitExpr:
- return ir_gen_await_expr(ag, scope, node, lval, result_loc);
+ return astgen_await_expr(ag, scope, node, lval, result_loc);
case NodeTypeSuspend:
- return ir_lval_wrap(ag, scope, ir_gen_suspend(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_suspend(ag, scope, node), lval, result_loc);
case NodeTypeEnumLiteral:
- return ir_lval_wrap(ag, scope, ir_gen_enum_literal(ag, scope, node), lval, result_loc);
+ return ir_lval_wrap(ag, scope, astgen_enum_literal(ag, scope, node), lval, result_loc);
case NodeTypeInferredArrayType:
add_node_error(ag->codegen, node,
buf_sprintf("inferred array size invalid here"));
@@ -7910,7 +7919,7 @@ ResultLoc *no_result_loc(void) {
return &result_loc_none->base;
}
-static IrInstSrc *ir_gen_node_extra(Stage1AstGen *ag, AstNode *node, Scope *scope, LVal lval,
+static IrInstSrc *astgen_node_extra(Stage1AstGen *ag, AstNode *node, Scope *scope, LVal lval,
ResultLoc *result_loc)
{
if (lval == LValAssign) {
@@ -8018,7 +8027,7 @@ static IrInstSrc *ir_gen_node_extra(Stage1AstGen *ag, AstNode *node, Scope *scop
} else {
child_scope = &create_expr_scope(ag->codegen, node, scope)->base;
}
- IrInstSrc *result = ir_gen_node_raw(ag, node, child_scope, lval, result_loc);
+ IrInstSrc *result = astgen_node_raw(ag, node, child_scope, lval, result_loc);
if (result == ag->codegen->invalid_inst_src) {
if (ag->exec->first_err_trace_msg == nullptr) {
ag->exec->first_err_trace_msg = ag->codegen->trace_err;
@@ -8027,8 +8036,8 @@ static IrInstSrc *ir_gen_node_extra(Stage1AstGen *ag, AstNode *node, Scope *scop
return result;
}
-static IrInstSrc *ir_gen_node(Stage1AstGen *ag, AstNode *node, Scope *scope) {
- return ir_gen_node_extra(ag, node, scope, LValNone, nullptr);
+static IrInstSrc *astgen_node(Stage1AstGen *ag, AstNode *node, Scope *scope) {
+ return astgen_node_extra(ag, node, scope, LValNone, nullptr);
}
bool stage1_astgen(CodeGen *codegen, AstNode *node, Scope *scope, Stage1Zir *stage1_zir,
@@ -8050,7 +8059,7 @@ bool stage1_astgen(CodeGen *codegen, AstNode *node, Scope *scope, Stage1Zir *sta
// Entry block gets a reference because we enter it to begin.
ir_ref_bb(ag->current_basic_block);
- IrInstSrc *result = ir_gen_node_extra(ag, node, scope, LValNone, nullptr);
+ IrInstSrc *result = astgen_node_extra(ag, node, scope, LValNone, nullptr);
if (result == ag->codegen->invalid_inst_src)
return false;
src/stage1/parser.cpp
@@ -202,6 +202,19 @@ static void put_back_token(ParseContext *pc) {
pc->current_token -= 1;
}
+static Buf *token_string_literal_buf(RootStruct *root_struct, TokenIndex token) {
+ Error err;
+ assert(root_struct->token_ids[token] == TokenIdStringLiteral);
+ const char *source = buf_ptr(root_struct->source_code);
+ size_t byte_offset = root_struct->token_locs[token].offset;
+ size_t bad_index;
+ Buf *str = buf_alloc();
+ if ((err = source_string_literal_buf(source + byte_offset, str, &bad_index))) {
+ zig_panic("TODO handle string literal parse error");
+ }
+ return str;
+}
+
static Buf *token_buf(ParseContext *pc, TokenIndex token) {
if (token == 0)
return nullptr;
@@ -3465,19 +3478,6 @@ Error source_char_literal(const char *source, uint32_t *result, size_t *bad_inde
}
-Buf *token_string_literal_buf(RootStruct *root_struct, TokenIndex token) {
- Error err;
- assert(root_struct->token_ids[token] == TokenIdStringLiteral);
- const char *source = buf_ptr(root_struct->source_code);
- size_t byte_offset = root_struct->token_locs[token].offset;
- size_t bad_index;
- Buf *str = buf_alloc();
- if ((err = source_string_literal_buf(source + byte_offset, str, &bad_index))) {
- zig_panic("TODO handle string literal parse error");
- }
- return str;
-}
-
Buf *token_identifier_buf(RootStruct *root_struct, TokenIndex token) {
Error err;
const char *source = buf_ptr(root_struct->source_code);
@@ -3515,14 +3515,15 @@ Buf *token_identifier_buf(RootStruct *root_struct, TokenIndex token) {
Buf *node_identifier_buf(AstNode *node) {
assert(node->type == NodeTypeIdentifier);
- RootStruct *root_struct = node->owner->data.structure.root_struct;
- return token_identifier_buf(root_struct, node->main_token);
-}
-
-Buf *node_string_literal_buf(AstNode *node) {
- assert(node->type == NodeTypeStringLiteral);
- RootStruct *root_struct = node->owner->data.structure.root_struct;
- return token_string_literal_buf(root_struct, node->main_token);
+ // Currently, stage1 runs astgen for every comptime function call,
+ // resulting the allocation here wasting memory. As a workaround until
+ // the code is adjusted to make astgen run only once per source node,
+ // we memoize the result into the AST here.
+ if (node->data.identifier.name == nullptr) {
+ RootStruct *root_struct = node->owner->data.structure.root_struct;
+ node->data.identifier.name = token_identifier_buf(root_struct, node->main_token);
+ }
+ return node->data.identifier.name;
}
void token_number_literal_bigint(RootStruct *root_struct, BigInt *result, TokenIndex token) {
src/stage1/parser.hpp
@@ -19,10 +19,8 @@ void ast_print(AstNode *node, int indent);
void ast_visit_node_children(AstNode *node, void (*visit)(AstNode **, void *context), void *context);
Buf *node_identifier_buf(AstNode *node);
-Buf *node_string_literal_buf(AstNode *node);
Buf *token_identifier_buf(RootStruct *root_struct, TokenIndex token);
-Buf *token_string_literal_buf(RootStruct *root_struct, TokenIndex token);
void token_number_literal_bigint(RootStruct *root_struct, BigInt *result, TokenIndex token);
src/stage1/tokenizer.cpp
@@ -291,11 +291,11 @@ static void tokenize_error(Tokenize *t, const char *format, ...) {
static void begin_token(Tokenize *t, TokenId id) {
t->out->ids.append(id);
- t->out->locs.append({
- .offset = (uint32_t) t->pos,
- .line = t->line,
- .column = t->column,
- });
+ TokenLoc tok_loc;
+ tok_loc.offset = (uint32_t) t->pos;
+ tok_loc.line = t->line;
+ tok_loc.column = t->column;
+ t->out->locs.append(tok_loc);
}
static void cancel_token(Tokenize *t) {