zig/lib/std/Build/Step
mlugg 321961d860 AstGen: add result location analysis pass
The main motivation for this change is eliminating the `block_ptr`
result location and corresponding `store_to_block_ptr` ZIR instruction.
This is achieved through a simple pass over the AST before AstGen which
determines, for AST nodes which have a choice on whether to provide a
result location, which choice to make, based on whether the result
pointer is consumed non-trivially.

This eliminates so much logic from AstGen that we almost break even on
line count! AstGen no longer has to worry about instruction rewriting
based on whether or not a result location was consumed: it always knows
what to do ahead of time, which simplifies a *lot* of logic. This also
incidentally fixes a few random AstGen bugs related to result location
handling, leading to the changes in `test/` and `lib/std/`.

This opens the door to future RLS improvements by making them much
easier to implement correctly, and fixes many bugs. Most ZIR is made
more compact after this commit, mainly due to not having redundant
`store_to_block_ptr` instructions lying around, but also due to a few
bugs in the old system which are implicitly fixed here.
2023-08-20 11:58:14 -07:00
..
CheckFile.zig Build.zig rename orgy (aka: #16353). Renames FileSource to LazyPath and removes functions that take literal paths instead of LazyPath. 2023-07-30 11:18:50 -07:00
CheckObject.zig check-object: dump contents of LC_BUILD_VERSION and LC_VERSION_MIN_* cmds 2023-08-18 11:56:14 +02:00
Compile.zig build: merge FrameworkDir into IncludeDir 2023-08-18 08:08:24 +02:00
ConfigHeader.zig AstGen: add result location analysis pass 2023-08-20 11:58:14 -07:00
Fmt.zig std.Build: use Step.* instead of *Step 2023-05-03 20:55:29 -07:00
InstallArtifact.zig std.Build.Step.InstallArtifact: disable emit-h 2023-07-30 17:22:54 -07:00
InstallDir.zig Build.zig rename orgy (aka: #16353). Renames FileSource to LazyPath and removes functions that take literal paths instead of LazyPath. 2023-07-30 11:18:50 -07:00
InstallFile.zig Build.zig rename orgy (aka: #16353). Renames FileSource to LazyPath and removes functions that take literal paths instead of LazyPath. 2023-07-30 11:18:50 -07:00
ObjCopy.zig build/ObjCopy: strip debug info to a separate elf file. 2023-08-12 09:54:35 +02:00
Options.zig build system: follow-up enhancements regarding LazyPath 2023-07-30 11:19:32 -07:00
RemoveDir.zig std.Build: use Step.* instead of *Step 2023-05-03 20:55:29 -07:00
Run.zig std.Build: add support for deps .d file in Step.Run 2023-08-13 12:15:47 -07:00
TranslateC.zig change uses of std.builtin.Mode to OptimizeMode (#16745) 2023-08-09 14:39:34 -04:00
WriteFile.zig std.Build.Step.WriteFile: fix call to nonexistent function 2023-07-31 14:23:57 +02:00