mirror of
https://github.com/ziglang/zig.git
synced 2024-12-01 01:22:50 +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 |
||
---|---|---|
.. | ||
behavior | ||
c_abi | ||
cases | ||
link | ||
src | ||
standalone | ||
assemble_and_link.zig | ||
behavior.zig | ||
cases.zig | ||
cbe.zig | ||
compare_output.zig | ||
compile_errors.zig | ||
gen_h.zig | ||
link.zig | ||
nvptx.zig | ||
run_translated_c.zig | ||
stack_traces.zig | ||
standalone.zig | ||
tests.zig | ||
translate_c.zig |