| Age | Commit message (Collapse) | Author |
|
|
|
We are not using Private variables. This needs to be cleaned up a bit
more, this will happen with the general address space improvements.
|
|
Also cleans up the assembler a bit in general.
|
|
For now the frontend still allows type inputs in assembly. We
might as well resolve them properly in the SPIR-V backend.
|
|
|
|
|
|
These are already handled by build_crt_file().
|
|
|
|
|
|
|
|
|
|
This is already handled by build_crt_file().
|
|
|
|
In particular:
* -fms-extensions for MinGW
* -fno-builtin
* -fno-emulated-tls for Android 29+
* -fno-exceptions
* -fomit-frame-pointer
* -fvisibility=hidden
|
|
From `zig build-exe --help`:
-fno-builtin Disable implicit builtin knowledge of functions
It seems entirely reasonable and even expected that this option should imply
both no-builtins on functions (which disables transformation of recognized code
patterns to libcalls) and nobuiltin on call sites (which disables transformation
of libcalls to intrinsics). We now match Clang's behavior for -fno-builtin.
In both cases, we're painting with a fairly broad brush by applying this to an
entire module, but it's better than nothing. #21833 proposes a more fine-grained
way to apply nobuiltin.
|
|
This looks to be a refactoring leftover.
|
|
Closes #21831.
|
|
This option, by its very nature, needs to be attached to a module. If it isn't,
the code in a module could break at random when compiled into an application
that doesn't have this option set.
After this change, skip_linker_dependencies no longer implies no_builtin in the
LLVM backend.
|
|
Clang only uses the system assembler for nvptx and xcore nowadays.
|
|
Add client request support for all architectures supported by Valgrind
|
|
The former prevents recognizing code patterns and turning them into libcalls,
which is what we want for compiler-rt. The latter is meant to be used on call
sites to prevent them from being turned into intrinsics.
Context: https://github.com/ziglang/zig/issues/21833
|
|
|
|
The -lldmingw option affects a lot of logic throughout LLD. We need to pass it
for *-windows-gnu even when we're not actually linking MinGW since we're still
using the MinGW ABI with all that that entails. (One particular problem we would
run into is missing handling of stdcall-decorated symbols for 32-bit x86.) Also,
various other LLD options are sensitive to this option, so it's best to pass it
as early as possible.
Closes #11817.
|
|
Some follow-up work for #21697
|
|
|
|
Mainly affects amdgcn.
|
|
|
|
addCCArgs() will then pass the appropriate flag to Clang.
|
|
Let's not implicitly rely on whatever Clang's default is.
|
|
The old isARM() function was a portability trap. With the name it had, it seemed
like the obviously correct function to use, but it didn't include Thumb. In the
vast majority of cases where someone wants to ask "is the target Arm?", Thumb
*should* be included.
There are exactly 3 cases in the codebase where we do actually need to exclude
Thumb, although one of those is in Aro and mirrors a check in Clang that is
itself likely a bug. These rare cases can just add an extra isThumb() check.
|
|
|
|
|
|
This can't be completely 1:1 due to the fact that we model CCs more precisely,
but this is about as close as we can get.
|
|
|
|
|
|
|
|
LLVM doesn't even recognize the gnuilp32 spelling as an alternative.
|
|
This fixes an X86_64_32 relocation linker error when targeting gnux32.
|
|
Adds mipsn32 and x32 sources.
Also remove some useless .in files.
|
|
Once we upgrade to LLVM 20, these should be lowered verbatim rather than to
simply musl. Similarly, the special case in llvmMachineAbi() should go away.
|
|
This is needed for muslx32 and muslabin32 support.
|
|
|
|
|
|
`std.Target.Cpu.Model`: Further refinements to `generic()` and `baseline()`
|
|
Like d1d95294fd657f771657ea671a6984b860347fb0, this is more Apple nonsense where
they abused the arch component of the triple to encode what's really an ABI.
Handling this correctly in Zig's target triple model would take quite a bit of
work. Fortunately, the last Armv7-based Apple Watch was released in 2017 and
these targets are now considered legacy. By the time Zig hits 1.0, they will be
a distant memory. So just remove them.
|
|
More support for OS/libc version ranges in `std.Target` and improvements to LLVM target triple construction
|
|
Don't use the reader interface
Avoid unnecessary heap allocations
At first I started working on incorporating the Archive fields into the
Wasm data model, however, I realized a better strategy: simply omit
Archive data from the serialized linker state. Those files can be
trivially reparsed on next compiler process start. If they haven't
changed, great. Otherwise if they have, the prelink phase needs to be
restarted anyway.
|
|
|
|
Except Windows, because that just doesn't really fit into LLVM's target triple
format currently.
|
|
Annoyingly, LLVM and Clang have various checks throughout that depend on these
vendor types being set.
|