diff options
author | Jessica Paquette <jpaquette@apple.com> | 2020-01-10 15:46:52 -0800 |
---|---|---|
committer | Jessica Paquette <jpaquette@apple.com> | 2020-01-10 15:58:51 -0800 |
commit | ceb801612a678bdffe7e7bf163bd0eed9c9b73a2 (patch) | |
tree | c962a112bdd20102f3492aa7aa1e25b31ade77c2 | |
parent | 1b8c84b8dd5a4a294943a6a6f0631d2d3a1f9f27 (diff) | |
download | bcm5719-llvm-ceb801612a678bdffe7e7bf163bd0eed9c9b73a2.tar.gz bcm5719-llvm-ceb801612a678bdffe7e7bf163bd0eed9c9b73a2.zip |
[AArch64] Don't generate libcalls for wide shifts on Darwin
Similar to cff90f07cb5cc3.
Darwin doesn't always use compiler-rt, and so we can't assume that these
functions are available (at least on arm64).
-rw-r--r-- | llvm/lib/Target/AArch64/AArch64ISelLowering.cpp | 2 | ||||
-rw-r--r-- | llvm/test/CodeGen/AArch64/shift_minsize.ll | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp index 4086595a1bb..0fa1b7673f9 100644 --- a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp +++ b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp @@ -13102,7 +13102,7 @@ bool AArch64TargetLowering:: bool AArch64TargetLowering::shouldExpandShift(SelectionDAG &DAG, SDNode *N) const { if (DAG.getMachineFunction().getFunction().hasMinSize() && - !Subtarget->isTargetWindows()) + !Subtarget->isTargetWindows() && !Subtarget->isTargetDarwin()) return false; return true; } diff --git a/llvm/test/CodeGen/AArch64/shift_minsize.ll b/llvm/test/CodeGen/AArch64/shift_minsize.ll index 2728b3f4c73..ac48975f18f 100644 --- a/llvm/test/CodeGen/AArch64/shift_minsize.ll +++ b/llvm/test/CodeGen/AArch64/shift_minsize.ll @@ -1,11 +1,16 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc < %s -mtriple=aarch64-unknown-unknown | FileCheck %s ; RUN: llc < %s -mtriple=aarch64-windows | FileCheck %s -check-prefix=CHECK-WIN +; RUN: llc < %s -mtriple=aarch64-apple-darwin | FileCheck %s -check-prefix=CHECK-DARWIN ; The Windows runtime doesn't have these. ; CHECK-WIN-NOT: __ashlti3 ; CHECK-WIN-NOT: __ashrti3 +; Darwin compiler-rt excludes these. +; CHECK-DARWIN-NOT: __ashlti3 +; CHECK-DARWIN-NOT: __ashrti3 + define i64 @f0(i64 %val, i64 %amt) minsize optsize { ; CHECK-LABEL: f0: ; CHECK: // %bb.0: |