From 3c7fba2b0f70f0d6860f0be3780fa0176f6339a8 Mon Sep 17 00:00:00 2001 From: Weijia Wang <9713184+wegank@users.noreply.github.com> Date: Thu, 4 May 2023 10:17:02 +0300 Subject: [PATCH 1/2] llvmPackages_16.llvm: fix postPatch on darwin --- pkgs/development/compilers/llvm/16/llvm/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/compilers/llvm/16/llvm/default.nix b/pkgs/development/compilers/llvm/16/llvm/default.nix index 59d620cb9015..604ad63492db 100644 --- a/pkgs/development/compilers/llvm/16/llvm/default.nix +++ b/pkgs/development/compilers/llvm/16/llvm/default.nix @@ -163,7 +163,7 @@ in # This test tries to call `sw_vers` by absolute path (`/usr/bin/sw_vers`) # and thus fails under the sandbox: - substituteInPlace unittests/Support/Host.cpp \ + substituteInPlace unittests/TargetParser/Host.cpp \ --replace '/usr/bin/sw_vers' "${(builtins.toString darwin.DarwinTools) + "/bin/sw_vers" }" '' + optionalString (stdenv.isDarwin && stdenv.hostPlatform.isx86) '' # This test tries to call the intrinsics `@llvm.roundeven.f32` and @@ -208,7 +208,7 @@ in # not clear to me when/where/for what this even gets used in LLVM. # # TODO(@rrbutani): fix/follow-up - substituteInPlace unittests/Support/Host.cpp \ + substituteInPlace unittests/TargetParser/Host.cpp \ --replace "getMacOSHostVersion" "DISABLED_getMacOSHostVersion" # This test fails with a `dysmutil` crash; have not yet dug into what's From fd155c2a9494bd706bea5dc3916869bb3ffa739a Mon Sep 17 00:00:00 2001 From: Weijia Wang <9713184+wegank@users.noreply.github.com> Date: Thu, 4 May 2023 11:42:54 +0300 Subject: [PATCH 2/2] llvmPackages_16.llvm: avoid calling roundevenf on darwin --- pkgs/development/compilers/llvm/16/llvm/default.nix | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/pkgs/development/compilers/llvm/16/llvm/default.nix b/pkgs/development/compilers/llvm/16/llvm/default.nix index 604ad63492db..63fe28277fd8 100644 --- a/pkgs/development/compilers/llvm/16/llvm/default.nix +++ b/pkgs/development/compilers/llvm/16/llvm/default.nix @@ -165,21 +165,19 @@ in # and thus fails under the sandbox: substituteInPlace unittests/TargetParser/Host.cpp \ --replace '/usr/bin/sw_vers' "${(builtins.toString darwin.DarwinTools) + "/bin/sw_vers" }" - '' + optionalString (stdenv.isDarwin && stdenv.hostPlatform.isx86) '' + # This test tries to call the intrinsics `@llvm.roundeven.f32` and # `@llvm.roundeven.f64` which seem to (incorrectly?) lower to `roundevenf` - # and `roundeven` on x86_64 macOS. + # and `roundeven` on macOS. # # However these functions are glibc specific so the test fails: # - https://www.gnu.org/software/gnulib/manual/html_node/roundevenf.html # - https://www.gnu.org/software/gnulib/manual/html_node/roundeven.html # - # TODO(@rrbutani): this seems to run fine on `aarch64-darwin`, why does it - # pass there? substituteInPlace test/ExecutionEngine/Interpreter/intrinsics.ll \ --replace "%roundeven32 = call float @llvm.roundeven.f32(float 0.000000e+00)" "" \ --replace "%roundeven64 = call double @llvm.roundeven.f64(double 0.000000e+00)" "" - + '' + optionalString (stdenv.isDarwin && stdenv.hostPlatform.isx86) '' # This test fails on darwin x86_64 because `sw_vers` reports a different # macOS version than what LLVM finds by reading # `/System/Library/CoreServices/SystemVersion.plist` (which is passed into