Commit Graph

31666 Commits

Author SHA1 Message Date
Alex Rønne Petersen 9e1dd3dec2 c: Use internal linkage when running tests.
This matches what we do for compiler-rt.
2024-11-08 14:56:25 +01:00
Alex Rønne Petersen 89a506a7ef musl: Don't explicitly pass -fno-unwind-tables -fno-asynchronous-unwind-tables.
These are already handled by build_crt_file().
2024-11-05 22:41:09 +01:00
Alex Rønne Petersen 5685a10ded libunwind: Pass -fPIC -funwind-tables via module options instead of CFLAGS. 2024-11-05 22:41:09 +01:00
Alex Rønne Petersen eb14fd8806 libcxx: Pass -fPIC via module options instead of CFLAGS. 2024-11-05 22:41:09 +01:00
Alex Rønne Petersen 796d4845ff musl: Pass -fomit-frame-pointer via CrtFileOptions. 2024-11-05 22:41:09 +01:00
Alex Rønne Petersen 7fef0b4a23 musl: Pass -f(function,data)-sections via CrtFileOptions instead of CFLAGS. 2024-11-05 22:41:09 +01:00
Alex Rønne Petersen f973d3e93e glibc, musl, wasi-libc: Don't explicitly pass -fno-stack-protector.
This is already handled by build_crt_file().
2024-11-05 22:41:09 +01:00
Alex Rønne Petersen 2a65b84572 tsan: Handle more Apple targets when picking library name. 2024-11-05 22:41:09 +01:00
Alex Rønne Petersen 0563525b21 tsan: Synchronize CFLAGS with upstream.
In particular:

* -fms-extensions for MinGW
* -fno-builtin
* -fno-emulated-tls for Android 29+
* -fno-exceptions
* -fomit-frame-pointer
* -fvisibility=hidden
2024-11-05 22:41:09 +01:00
Alex Rønne Petersen bdca2d0f48 llvm: Also apply the nobuiltin attribute for the no_builtin module option.
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.
2024-11-05 22:41:06 +01:00
Alex Rønne Petersen e88501a090 Compilation: Fix unwind table logic for compiler-rt.
This looks to be a refactoring leftover.
2024-11-05 20:10:12 +01:00
Alex Rønne Petersen 7b1d2fa004 Compilation: Also set essential module options when including compiler-rt.o.
Closes #21831.
2024-11-05 14:43:02 +01:00
Alex Rønne Petersen b57819118d Compilation: Move no_builtin to Package.Module.
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.
2024-11-05 14:43:02 +01:00
Alex Rønne Petersen 56b416662a compiler: Update clangMightShellOutForAssembly() for Clang 19.
Clang only uses the system assembler for nvptx and xcore nowadays.
2024-11-05 14:43:02 +01:00
Alex Rønne Petersen bd7dda0c55 Merge pull request #21907 from alexrp/valgrind-stuff
Add client request support for all architectures supported by Valgrind
2024-11-05 10:03:44 +01:00
Alex Rønne Petersen f25ea264b7 Revert "test: Add aarch64_be-linux-(none,gnu,musl) to module tests."
This reverts commit 4049be90de.

See: https://github.com/ziglang/zig/issues/21911
2024-11-05 07:15:53 +01:00
Alex Rønne Petersen bd8ef0036d llvm: Use no-builtins attribute instead of nobuiltin.
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
2024-11-04 14:17:57 +01:00
Alex Rønne Petersen 4a3611f7d6 Merge pull request #21894 from alexrp/aarch64-big-endian
Disable some failing tests and add `aarch64_be-linux-(none,gnu,musl)` to CI
2024-11-04 13:54:56 +01:00
Alex Rønne Petersen 8a73a965d3 llvm: Add client request support for all archs supported by Valgrind. 2024-11-04 13:53:20 +01:00
Alex Rønne Petersen 2307cf73b0 std.valgrind: Port doClientRequest() to all archs supported by Valgrind. 2024-11-04 12:39:48 +01:00
Alex Rønne Petersen 6b2c8fc688 zig.h: Improve portability of zig_*_windows_teb() helpers.
* Make it work for thumb and aarch64.
* Clean up std.os.windows.teb() a bit.

I also updated stage1/zig.h since the changes are backwards-compatible and are
necessary due to the std.os.windows changes that call the newly-added functions.
2024-11-04 11:59:38 +01:00
Alex Rønne Petersen 4050d9bbf9 std.valgrind: Fix some compile errors. 2024-11-04 10:56:32 +01:00
Alex Rønne Petersen af71694dd9 std.debug: Add handling for armeb, thumb, thumbeb, and aarch64_be. 2024-11-04 08:29:42 +01:00
Alex Rønne Petersen 4049be90de test: Add aarch64_be-linux-(none,gnu,musl) to module tests. 2024-11-04 08:29:42 +01:00
Alex Rønne Petersen 9d0bb7ada8 test: Disable 128-bit atomics behavior tests on aarch64_be.
See: https://github.com/ziglang/zig/issues/21892
2024-11-04 08:29:42 +01:00
Alex Rønne Petersen 2958a90515 test: Disable some vector behavior tests on aarch64_be.
See: https://github.com/ziglang/zig/issues/21893
2024-11-04 08:29:42 +01:00
Alex Rønne Petersen 2f65c39715 std.simd: Disable vector prefix scan test on aarch64_be.
See: https://github.com/ziglang/zig/issues/21893
2024-11-04 08:29:42 +01:00
Alex Rønne Petersen b72b81292f test: Remove some unsupported ohos triples from llvm_targets. 2024-11-04 08:29:42 +01:00
Alex Rønne Petersen 96ea7d3e1c test: Disable reinterpret packed union on all big endian targets.
See: https://github.com/ziglang/zig/issues/21050
2024-11-04 08:29:42 +01:00
Alex Rønne Petersen 814a41b48f link.Coff: Pass -lldmingw to LLD earlier and regardless of -lc.
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.
2024-11-04 07:19:11 +01:00
Alex Rønne Petersen 3054486d1d Merge pull request #21843 from alexrp/callconv-followup
Some follow-up work for #21697
2024-11-03 14:27:09 +01:00
Alex Rønne Petersen 2f003f39b2 Merge pull request #21599 from alexrp/thumb-porting 2024-11-03 14:25:30 +01:00
Alex Rønne Petersen 947b7195bf llvm: Update the list of address spaces for LLVM 19.
Mainly affects amdgcn.
2024-11-03 13:44:38 +01:00
Alex Rønne Petersen 621487d5ab test: Add thumb-linux-(musl)eabi(hf) target triples for module tests. 2024-11-03 09:29:33 +01:00
Alex Rønne Petersen d89cf3e7d8 test: Add the ability to skip specific modules for a target. 2024-11-03 09:29:33 +01:00
Alex Rønne Petersen 3a2647b7d3 glibc: Don't build CRT objects that won't be used. 2024-11-03 09:29:33 +01:00
Alex Rønne Petersen 4c70aea460 Compilation: Use the regular module mechanism for setting PIC on CRT objects.
addCCArgs() will then pass the appropriate flag to Clang.
2024-11-03 09:29:33 +01:00
Alex Rønne Petersen 39abcc303c Compilation: Pass -fno-PIC to clang if PIC is disabled.
Let's not implicitly rely on whatever Clang's default is.
2024-11-03 09:29:33 +01:00
Alex Rønne Petersen c9e67e71c1 std.Target: Replace isARM() with isArmOrThumb() and rename it to isArm().
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.
2024-11-03 09:29:30 +01:00
Alex Rønne Petersen 53d7a7b3c0 Merge pull request #21717 from alexrp/ilp32-abis
Some initial work on x32 and n32 ABI support
2024-11-03 07:13:56 +01:00
Alex Rønne Petersen 4e843b4e2b llvm: Remove extraneous commas for branch hint metadata in textual IR output. 2024-11-02 11:06:33 +01:00
Alex Rønne Petersen e4e3d7ab41 Sema: Disallow calling functions with certain special calling conventions. 2024-11-02 10:44:18 +01:00
Alex Rønne Petersen f508e22705 link.Dwarf: Some minor corrections to calling conventions to ~match Clang.
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.
2024-11-02 10:44:18 +01:00
Alex Rønne Petersen c217fd2b9c cbe: Support some more calling conventions. 2024-11-02 10:44:18 +01:00
Alex Rønne Petersen 3a5142af8d compiler: Handle arm_aapcs16_vfp alongside arm_aapcs_vfp in some places. 2024-11-02 10:44:18 +01:00
Alex Rønne Petersen be8a527eb2 std.os.windows: Deprecate WINAPI in favor of CallingConvention.winapi. 2024-11-02 10:44:18 +01:00
Alex Rønne Petersen 5a6cc552e3 std.os.windows: Fix some incorrect callconv specifiers.
Closes #21869.
2024-11-02 10:44:18 +01:00
Alex Rønne Petersen 82e82b6267 start: Fix callconv for the wWinMainCRTStartup symbol.
This just uses the C calling convention in the vcruntime sources.
2024-11-02 10:44:18 +01:00
Alex Rønne Petersen 8a2d960627 start: Fix a calling convention check to use eql().
Also modernize some callconv uses.

Closes #21813.
2024-11-02 10:44:18 +01:00
Alex Rønne Petersen baf60426d4 std.Target: Rename amdgpu module to amdgcn.
This was an inconsistency left over from c825b567b2.
2024-11-02 10:44:14 +01:00