zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit a31ff38fd9e37194ba46f1c74aa2a9b761da4f13 (tree)
parent 130d6823d1ad9e28e45587a16c859b13d2eb1fa0
Author: Motiejus <motiejus@jakstys.lt>
Date:   Sun,  1 Mar 2026 14:29:22 +0000

sema: skip inline fns, reorder corpus (sema tests first)

- Skip inline functions in zirFunc — they don't get standalone AIR;
  they're inlined at call sites. Fixes type_identity_fn.zig.
- Reorder corpus: sema_tests/ files first (standalone, no imports),
  then lib/ files (need module_root). Makes incremental progress
  possible without solving cross-module calls first.

num_passing = 4 (empty, const_decl, empty_void_function,
type_identity_fn).

Next blocker: reify_int.zig — @Type(.{.int=...}) creates a fresh
int type instead of returning the pre-interned IP_INDEX_U32_TYPE.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

Diffstat:
Mstage0/corpus.zig | 196++++++++++++++++++++++++++++++++++++++++----------------------------------------
Mstage0/sema.c | 5+++++
2 files changed, 103 insertions(+), 98 deletions(-)

diff --git a/stage0/corpus.zig b/stage0/corpus.zig @@ -3,9 +3,106 @@ /// `num_passing` controls how many files are tested and pre-generated. /// Both build.zig and stages_test.zig import this file. /// To enable more tests: just increment `num_passing`. -pub const num_passing: usize = 3; +pub const num_passing: usize = 4; pub const files = [_][]const u8{ + "stage0/sema_tests/empty.zig", + "stage0/sema_tests/const_decl.zig", + "stage0/sema_tests/empty_void_function.zig", + "stage0/sema_tests/type_identity_fn.zig", + "stage0/sema_tests/reify_int.zig", + "stage0/sema_tests/return_integer.zig", + "stage0/sema_tests/identity_function.zig", + "stage0/sema_tests/add_two_args.zig", + "stage0/sema_tests/add_comptime_int.zig", + "stage0/sema_tests/sub_two_args.zig", + "stage0/sema_tests/xor_two_args.zig", + "stage0/sema_tests/xor_comptime_int.zig", + "stage0/sema_tests/bitcast_u32_to_f32.zig", + "stage0/sema_tests/bitcast_f32_to_u32.zig", + "stage0/sema_tests/as_node.zig", + "stage0/sema_tests/local_const_binding.zig", + "stage0/sema_tests/multiple_operations.zig", + "stage0/sema_tests/neghf2_inline_equivalent.zig", + "stage0/sema_tests/mul_two_args.zig", + "stage0/sema_tests/compare_lt.zig", + "stage0/sema_tests/compare_eq.zig", + "stage0/sema_tests/bit_shift_right.zig", + "stage0/sema_tests/mul_comptime_int.zig", + "stage0/sema_tests/chain_of_casts.zig", + "stage0/sema_tests/mixed_arithmetic_and_bitwise.zig", + "stage0/sema_tests/shift_and_mask.zig", + "stage0/sema_tests/f32_arithmetic.zig", + "stage0/sema_tests/multi_param_function.zig", + "stage0/sema_tests/nested_bitcast_xor.zig", + "stage0/sema_tests/pointer_param_identity.zig", + "stage0/sema_tests/store_to_pointer.zig", + "stage0/sema_tests/sub_comptime.zig", + "stage0/sema_tests/store_runtime_value.zig", + "stage0/sema_tests/load_from_pointer.zig", + "stage0/sema_tests/negate.zig", + "stage0/sema_tests/bit_not.zig", + "stage0/sema_tests/bit_shift_left.zig", + "stage0/sema_tests/intcast.zig", + "stage0/sema_tests/truncate.zig", + "stage0/sema_tests/two_local_bindings.zig", + "stage0/sema_tests/wrapping_add.zig", + "stage0/sema_tests/wrapping_sub.zig", + "stage0/sema_tests/wrapping_mul.zig", + "stage0/sema_tests/bool_not.zig", + "stage0/sema_tests/if_simple.zig", + "stage0/sema_tests/wrapping_negate.zig", + "stage0/sema_tests/clz.zig", + "stage0/sema_tests/ctz.zig", + "stage0/sema_tests/popcount.zig", + "stage0/sema_tests/byteswap.zig", + "stage0/sema_tests/float_cast_widen.zig", + "stage0/sema_tests/float_cast_narrow.zig", + "stage0/sema_tests/int_from_float.zig", + "stage0/sema_tests/float_from_int.zig", + "stage0/sema_tests/bitmask_shift_and.zig", + "stage0/sema_tests/double_negate.zig", + "stage0/sema_tests/return_ptr_type.zig", + "stage0/sema_tests/float_cast_f16_to_f32.zig", + "stage0/sema_tests/wrapping_add_comptime.zig", + "stage0/sema_tests/byteswap_and_xor.zig", + "stage0/sema_tests/same_file_inline_function_call.zig", + "stage0/sema_tests/same_file_inline_call_with_bitcast_and_xor.zig", + "stage0/sema_tests/same_file_inline_call_with_two_args.zig", + "stage0/sema_tests/intfrombool.zig", + "stage0/sema_tests/add_sat.zig", + "stage0/sema_tests/sub_sat.zig", + "stage0/sema_tests/mul_sat.zig", + "stage0/sema_tests/shl_sat.zig", + "stage0/sema_tests/bit_or.zig", + "stage0/sema_tests/bit_and.zig", + "stage0/sema_tests/f16_add.zig", + "stage0/sema_tests/f64_mul.zig", + "stage0/sema_tests/intcast_computed_dest_type.zig", + "stage0/sema_tests/multiple_return_paths.zig", + "stage0/sema_tests/if_with_early_return.zig", + "stage0/sema_tests/var_bitcast_and_if.zig", + "stage0/sema_tests/var_assignment_in_if.zig", + "stage0/sema_tests/nested_if.zig", + "stage0/sema_tests/wrapping_sub_in_expr.zig", + "stage0/sema_tests/if_else_block_result.zig", + "stage0/sema_tests/call_inside_runtime_conditional.zig", + "stage0/sema_tests/inline_fn_with_call_inside_conditional.zig", + "stage0/sema_tests/plus_eq_with_call_inside_conditional.zig", + "stage0/sema_tests/inline_fn_with_plus_eq_call_inside_conditional.zig", + "stage0/sema_tests/inline_fn_with_generic_call_inside_conditional.zig", + "stage0/sema_tests/inline_fn_with_two_generic_calls_in_conditionals.zig", + "stage0/sema_tests/inline_fn_with_plus_eq_call_inside_two_conditionals.zig", + "stage0/sema_tests/abs_float.zig", + "stage0/sema_tests/max_float.zig", + "stage0/sema_tests/min_float.zig", + "stage0/sema_tests/f64_div.zig", + "stage0/sema_tests/generic_fn_with_clz.zig", + "stage0/sema_tests/generic_fn_with_shl_assign.zig", + "stage0/sema_tests/inline_comptime_fn_call.zig", + "stage0/sema_tests/cross_fn_memoized_call.zig", + "stage0/sema_tests/nested_inline_dead_blocks.zig", + "stage0/sema_tests/comptime_arg_dbg.zig", "lib/std/crypto/codecs.zig", "lib/std/os/uefi/tables/table_header.zig", "lib/std/zig/llvm.zig", @@ -777,102 +874,5 @@ pub const files = [_][]const u8{ "lib/std/unicode/throughput_test.zig", "lib/std/crypto/benchmark.zig", "lib/std/math/float.zig", - "stage0/sema_tests/empty.zig", - "stage0/sema_tests/const_decl.zig", - "stage0/sema_tests/empty_void_function.zig", - "stage0/sema_tests/type_identity_fn.zig", - "stage0/sema_tests/reify_int.zig", - "stage0/sema_tests/return_integer.zig", - "stage0/sema_tests/identity_function.zig", - "stage0/sema_tests/add_two_args.zig", - "stage0/sema_tests/add_comptime_int.zig", - "stage0/sema_tests/sub_two_args.zig", - "stage0/sema_tests/xor_two_args.zig", - "stage0/sema_tests/xor_comptime_int.zig", - "stage0/sema_tests/bitcast_u32_to_f32.zig", - "stage0/sema_tests/bitcast_f32_to_u32.zig", - "stage0/sema_tests/as_node.zig", - "stage0/sema_tests/local_const_binding.zig", - "stage0/sema_tests/multiple_operations.zig", - "stage0/sema_tests/neghf2_inline_equivalent.zig", - "stage0/sema_tests/mul_two_args.zig", - "stage0/sema_tests/compare_lt.zig", - "stage0/sema_tests/compare_eq.zig", - "stage0/sema_tests/bit_shift_right.zig", - "stage0/sema_tests/mul_comptime_int.zig", - "stage0/sema_tests/chain_of_casts.zig", - "stage0/sema_tests/mixed_arithmetic_and_bitwise.zig", - "stage0/sema_tests/shift_and_mask.zig", - "stage0/sema_tests/f32_arithmetic.zig", - "stage0/sema_tests/multi_param_function.zig", - "stage0/sema_tests/nested_bitcast_xor.zig", - "stage0/sema_tests/pointer_param_identity.zig", - "stage0/sema_tests/store_to_pointer.zig", - "stage0/sema_tests/sub_comptime.zig", - "stage0/sema_tests/store_runtime_value.zig", - "stage0/sema_tests/load_from_pointer.zig", - "stage0/sema_tests/negate.zig", - "stage0/sema_tests/bit_not.zig", - "stage0/sema_tests/bit_shift_left.zig", - "stage0/sema_tests/intcast.zig", - "stage0/sema_tests/truncate.zig", - "stage0/sema_tests/two_local_bindings.zig", - "stage0/sema_tests/wrapping_add.zig", - "stage0/sema_tests/wrapping_sub.zig", - "stage0/sema_tests/wrapping_mul.zig", - "stage0/sema_tests/bool_not.zig", - "stage0/sema_tests/if_simple.zig", - "stage0/sema_tests/wrapping_negate.zig", - "stage0/sema_tests/clz.zig", - "stage0/sema_tests/ctz.zig", - "stage0/sema_tests/popcount.zig", - "stage0/sema_tests/byteswap.zig", - "stage0/sema_tests/float_cast_widen.zig", - "stage0/sema_tests/float_cast_narrow.zig", - "stage0/sema_tests/int_from_float.zig", - "stage0/sema_tests/float_from_int.zig", - "stage0/sema_tests/bitmask_shift_and.zig", - "stage0/sema_tests/double_negate.zig", - "stage0/sema_tests/return_ptr_type.zig", - "stage0/sema_tests/float_cast_f16_to_f32.zig", - "stage0/sema_tests/wrapping_add_comptime.zig", - "stage0/sema_tests/byteswap_and_xor.zig", - "stage0/sema_tests/same_file_inline_function_call.zig", - "stage0/sema_tests/same_file_inline_call_with_bitcast_and_xor.zig", - "stage0/sema_tests/same_file_inline_call_with_two_args.zig", - "stage0/sema_tests/intfrombool.zig", - "stage0/sema_tests/add_sat.zig", - "stage0/sema_tests/sub_sat.zig", - "stage0/sema_tests/mul_sat.zig", - "stage0/sema_tests/shl_sat.zig", - "stage0/sema_tests/bit_or.zig", - "stage0/sema_tests/bit_and.zig", - "stage0/sema_tests/f16_add.zig", - "stage0/sema_tests/f64_mul.zig", - "stage0/sema_tests/intcast_computed_dest_type.zig", - "stage0/sema_tests/multiple_return_paths.zig", - "stage0/sema_tests/if_with_early_return.zig", - "stage0/sema_tests/var_bitcast_and_if.zig", - "stage0/sema_tests/var_assignment_in_if.zig", - "stage0/sema_tests/nested_if.zig", - "stage0/sema_tests/wrapping_sub_in_expr.zig", - "stage0/sema_tests/if_else_block_result.zig", - "stage0/sema_tests/call_inside_runtime_conditional.zig", - "stage0/sema_tests/inline_fn_with_call_inside_conditional.zig", - "stage0/sema_tests/plus_eq_with_call_inside_conditional.zig", - "stage0/sema_tests/inline_fn_with_plus_eq_call_inside_conditional.zig", - "stage0/sema_tests/inline_fn_with_generic_call_inside_conditional.zig", - "stage0/sema_tests/inline_fn_with_two_generic_calls_in_conditionals.zig", - "stage0/sema_tests/inline_fn_with_plus_eq_call_inside_two_conditionals.zig", - "stage0/sema_tests/abs_float.zig", - "stage0/sema_tests/max_float.zig", - "stage0/sema_tests/min_float.zig", - "stage0/sema_tests/f64_div.zig", - "stage0/sema_tests/generic_fn_with_clz.zig", - "stage0/sema_tests/generic_fn_with_shl_assign.zig", - "stage0/sema_tests/inline_comptime_fn_call.zig", - "stage0/sema_tests/cross_fn_memoized_call.zig", - "stage0/sema_tests/nested_inline_dead_blocks.zig", - "stage0/sema_tests/comptime_arg_dbg.zig", }; diff --git a/stage0/sema.c b/stage0/sema.c @@ -8296,6 +8296,11 @@ static void zirFunc(Sema* sema, SemaBlock* block, uint32_t inst) { // Skip unnamed declarations (test blocks, comptime blocks). if (sema->cur_decl_name == 0) return; + // Skip inline functions — they're analyzed at the call site, not + // as standalone function bodies. Ported from upstream: inline + // functions don't get their own AIR; they're inlined into callers. + if (fi.is_inline) + return; // Create function type and func_decl IP entries before analyzing // the function body. This matches the Zig compiler's processing