summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorSaleem Abdulrasool <compnerd@compnerd.org>2014-07-24 17:46:36 +0000
committerSaleem Abdulrasool <compnerd@compnerd.org>2014-07-24 17:46:36 +0000
commitc61ed0474e5da9254cf1da2b7282fc27cacc7724 (patch)
tree94e141bfc537811ebe60d43adcde372f6a4c177c /llvm
parent83592a2d3210394944d230319a2325af94b839f1 (diff)
downloadbcm5719-llvm-c61ed0474e5da9254cf1da2b7282fc27cacc7724.tar.gz
bcm5719-llvm-c61ed0474e5da9254cf1da2b7282fc27cacc7724.zip
X86: correct library call setup for Windows itanium
This target is identical to the Windows MSVC (and follows Microsoft ABI for C). Correct the library call setup for this target. The same set of library calls are missing on this environment. llvm-svn: 213883
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/Target/TargetLibraryInfo.cpp2
-rw-r--r--llvm/test/MC/X86/x86-windows-itanium-libcalls.ll16
2 files changed, 17 insertions, 1 deletions
diff --git a/llvm/lib/Target/TargetLibraryInfo.cpp b/llvm/lib/Target/TargetLibraryInfo.cpp
index 6ec0b1f929c..6ff7441bbd3 100644
--- a/llvm/lib/Target/TargetLibraryInfo.cpp
+++ b/llvm/lib/Target/TargetLibraryInfo.cpp
@@ -426,7 +426,7 @@ static void initialize(TargetLibraryInfo &TLI, const Triple &T,
TLI.setUnavailable(LibFunc::fiprintf);
}
- if (T.isKnownWindowsMSVCEnvironment()) {
+ if (T.isKnownWindowsMSVCEnvironment() || T.isWindowsItaniumEnvironment()) {
// Win32 does not support long double
TLI.setUnavailable(LibFunc::acosl);
TLI.setUnavailable(LibFunc::asinl);
diff --git a/llvm/test/MC/X86/x86-windows-itanium-libcalls.ll b/llvm/test/MC/X86/x86-windows-itanium-libcalls.ll
new file mode 100644
index 00000000000..773d03b4def
--- /dev/null
+++ b/llvm/test/MC/X86/x86-windows-itanium-libcalls.ll
@@ -0,0 +1,16 @@
+; RUN: opt -mtriple i686-windows-itanium -O2 -o - %s | llvm-dis | FileCheck %s
+
+target triple = "i686-windows-itanium"
+
+declare dllimport double @floor(double)
+
+define dllexport float @test(float %f) {
+ %conv = fpext float %f to double
+ %call = tail call double @floor(double %conv)
+ %cast = fptrunc double %call to float
+ ret float %cast
+}
+
+; CHECK-NOT: floorf
+; CHECK: floor
+
OpenPOWER on IntegriCloud