mirror of
https://github.com/ziglang/zig.git
synced 2024-11-28 08:02:32 +00:00
4976b58ab1
The idea here is that there are two ways we can reference a function at runtime: * Through a direct call, i.e. where the function is comptime-known * Through a function pointer This means we can easily perform a form of rudimentary escape analysis on functions. If we ever see a `decl_ref` or `ref` of a function, we have a function pointer, which could "leak" into runtime code, so we emit the function; but for a plain `decl_val`, there's no need to. This change means that `comptime { _ = f; }` no longer forces a function to be emitted, which was used for some things (mainly tests). These use sites have been replaced with `_ = &f;`, which still triggers analysis of the function body, since you're taking a pointer to the function. Resolves: #6256 Resolves: #15353 |
||
---|---|---|
.. | ||
address_space_pointer_access_chaining_pointer_to_optional_array.zig | ||
address_spaces_pointer_access_chaining_array_pointer.zig | ||
address_spaces_pointer_access_chaining_complex.zig | ||
address_spaces_pointer_access_chaining_struct_pointer.zig | ||
blocks.zig | ||
dereferencing_though_multiple_pointers_with_address_spaces.zig | ||
f_segment_address_space_reading_and_writing.zig | ||
for_loop.zig | ||
hello_world.zig | ||
nested_blocks.zig | ||
optionals.zig | ||
pointer_keeps_address_space_when_taking_address_of_dereference.zig | ||
pointer_keeps_address_space.zig | ||
pointer_to_explicit_generic_address_space_coerces_to_implicit_pointer.zig | ||
rem.zig | ||
simple_addition_and_subtraction.zig | ||
simple_if_statement.zig | ||
while_loops.zig |