| Age | Commit message (Collapse) | Author |
|
This reduces the max memory usage.
|
|
This avoids llvm module verification errors when the strip option
is different across modules.
|
|
Rework LLVM debug locations to not emit them twice
|
|
|
|
These used to be lowered elementwise in air, and now are a single air
instruction that can be lowered elementwise in the backend if necessary.
|
|
Debug locations are no longer emitted twice every time
|
|
Fixes test-stack-traces on windows.
|
|
|
|
|
|
Hello world now verifies when not stripped.
|
|
|
|
|
|
|
|
This fixes a problem where empty strings where not emitted as null.
This should also emit a smaller stringtab as all metadata strings were
emitted in both the strtab and in the strings block inside the metadata
block.
|
|
|
|
|
|
|
|
|
|
The LLVM bitcode requires all type references in
structs to be to earlier defined types.
We make sure types are ordered in the builder
itself in order to avoid having to iterate the
types multiple times and changing the values
of type indicies.
|
|
Closes #18916
|
|
This should avoid the random pointer invalidation crashes.
Closes #18954
|
|
This change allows recursing over types that are currently being
resolved fully with a second pass of forward resolution.
Closes #16414
|
|
|
|
This commit only does the file rename to be friendlier to version
control conflicts.
|
|
|
|
This change eliminates some problematic recursive logic in InternPool,
and provides a safer API.
|
|
Closes #13178
|
|
Fix some generic{Reader,Writer} related issues
|
|
Closes #18723
|
|
Closes #17996
|
|
|
|
Closes #18550
|
|
closes #18461
|
|
Closes #18428
|
|
|
|
|
|
|
|
|
|
mainly pertaining to error return tracing
|
|
|
|
implement builtin.zig file population for all modules rather than
assuming there is only one global builtin.zig module.
move some fields from link.File to Compilation
move some fields from Module to Compilation
compute debug_format in global Compilation config resolution
wire up C compilation to the concept of owner modules
make whole cache mode call link.File.createEmpty() instead of
link.File.open()
|
|
|
|
|
|
|
|
|
|
|
|
These options are only supposed to be provided to the initialization
functions, resolved, and then computed values stored in the appropriate
place (base struct or the object-format-specific structs).
Many more to go...
|
|
Much of the logic from Compilation.create() is extracted into
Compilation.Config.resolve() which accepts many optional settings and
produces concrete settings. This separate step is needed by API users of
Compilation so that they can pass the resolved global settings to the
Module creation function, which itself needs to resolve per-Module
settings.
Since the target and other things are no longer global settings, I did
not want them stored in link.File (in the `options` field). That options
field was already a kludge; those options should be resolved into
concrete settings. This commit also starts to work on that, deleting
link.Options, moving the fields into Compilation and
ObjectFormat-specific structs instead. Some fields were ephemeral and
should not have been stored at all, such as symbol_size_hint.
The link.File object of Compilation is now a `?*link.File` and `null`
when -fno-emit-bin is passed. It is now arena-allocated along with
Compilation itself, avoiding some messy cleanup code that was there
before.
On the command line, it is now possible to configure the standard
library itself by using `--mod std` just like any other module. This
meant that the CLI needed to create the standard library module rather
than having Compilation create it.
There are a lot of changes in this commit and it's still not done. I
didn't realize how quickly this changeset was going to balloon out of
control, and there are still many lines that need to be changed before
it even compiles successfully.
* introduce std.Build.Cache.HashHelper.oneShot
* add error_tracing to std.Build.Module
* extract build.zig file generation into src/Builtin.zig
* each CSourceFile and RcSourceFile now has a Module owner, which
determines some of the C compiler flags.
|
|
|
|
|