[llvm] ceb8016 - [AArch64] Don't generate libcalls for wide shifts on Darwin

Jessica Paquette via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 10 15:59:32 PST 2020


Author: Jessica Paquette
Date: 2020-01-10T15:58:51-08:00
New Revision: ceb801612a678bdffe7e7bf163bd0eed9c9b73a2

URL: https://github.com/llvm/llvm-project/commit/ceb801612a678bdffe7e7bf163bd0eed9c9b73a2
DIFF: https://github.com/llvm/llvm-project/commit/ceb801612a678bdffe7e7bf163bd0eed9c9b73a2.diff

LOG: [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).

Added: 
    

Modified: 
    llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
    llvm/test/CodeGen/AArch64/shift_minsize.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
index 4086595a1bbf..0fa1b7673f9d 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 2728b3f4c733..ac48975f18f8 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:


        


More information about the llvm-commits mailing list