summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2014-04-03 07:06:13 +0000
committerTim Northover <tnorthover@apple.com>2014-04-03 07:06:13 +0000
commitc7c6a9370490acb1a4c158e2227f0cdda7d08cb8 (patch)
treeeae046b7fb20cb5252d8a8488734fe2cd08c6706 /llvm/lib
parentf51ee3c416a05a138e22d87aec8b6bbf19969c8a (diff)
downloadbcm5719-llvm-c7c6a9370490acb1a4c158e2227f0cdda7d08cb8.tar.gz
bcm5719-llvm-c7c6a9370490acb1a4c158e2227f0cdda7d08cb8.zip
ARM64: don't generate __sincos_stret calls unless on MachO
This should fix PR19314. llvm-svn: 205514
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/ARM64/ARM64ISelLowering.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/llvm/lib/Target/ARM64/ARM64ISelLowering.cpp b/llvm/lib/Target/ARM64/ARM64ISelLowering.cpp
index 956c57a6495..8164e6d2967 100644
--- a/llvm/lib/Target/ARM64/ARM64ISelLowering.cpp
+++ b/llvm/lib/Target/ARM64/ARM64ISelLowering.cpp
@@ -351,11 +351,16 @@ ARM64TargetLowering::ARM64TargetLowering(ARM64TargetMachine &TM)
setOperationAction(ISD::PREFETCH, MVT::Other, Custom);
- // For iOS, we don't want to the normal expansion of a libcall to
- // sincos. We want to issue a libcall to __sincos_stret to avoid memory
- // traffic.
- setOperationAction(ISD::FSINCOS, MVT::f64, Custom);
- setOperationAction(ISD::FSINCOS, MVT::f32, Custom);
+ if (Subtarget->isTargetMachO()) {
+ // For iOS, we don't want to the normal expansion of a libcall to
+ // sincos. We want to issue a libcall to __sincos_stret to avoid memory
+ // traffic.
+ setOperationAction(ISD::FSINCOS, MVT::f64, Custom);
+ setOperationAction(ISD::FSINCOS, MVT::f32, Custom);
+ } else {
+ setOperationAction(ISD::FSINCOS, MVT::f64, Expand);
+ setOperationAction(ISD::FSINCOS, MVT::f32, Expand);
+ }
// ARM64 does not have floating-point extending loads, i1 sign-extending load,
// floating-point truncating stores, or v2i32->v2i16 truncating store.
OpenPOWER on IntegriCloud