mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
Disable calls to *_finite and other glibc-only functions on Musl.
Non-GNU environments don't have __finite_*, so treat them as unavailable. Differential Revision: https://reviews.llvm.org/D51282 llvm-svn: 346250
This commit is contained in:
parent
8d3d43ab16
commit
fa0c365f3a
@ -413,17 +413,17 @@ static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T,
|
|||||||
TLI.setUnavailable(LibFunc_flsll);
|
TLI.setUnavailable(LibFunc_flsll);
|
||||||
}
|
}
|
||||||
|
|
||||||
// The following functions are available on Linux,
|
// The following functions are only available on GNU/Linux (using glibc).
|
||||||
// but Android uses bionic instead of glibc.
|
// Linux variants without glibc (eg: bionic, musl) may have some subset.
|
||||||
if (!T.isOSLinux() || T.isAndroid()) {
|
if (!T.isOSLinux() || !T.isGNUEnvironment()) {
|
||||||
TLI.setUnavailable(LibFunc_dunder_strdup);
|
TLI.setUnavailable(LibFunc_dunder_strdup);
|
||||||
TLI.setUnavailable(LibFunc_dunder_strtok_r);
|
TLI.setUnavailable(LibFunc_dunder_strtok_r);
|
||||||
TLI.setUnavailable(LibFunc_dunder_isoc99_scanf);
|
TLI.setUnavailable(LibFunc_dunder_isoc99_scanf);
|
||||||
TLI.setUnavailable(LibFunc_dunder_isoc99_sscanf);
|
TLI.setUnavailable(LibFunc_dunder_isoc99_sscanf);
|
||||||
TLI.setUnavailable(LibFunc_under_IO_getc);
|
TLI.setUnavailable(LibFunc_under_IO_getc);
|
||||||
TLI.setUnavailable(LibFunc_under_IO_putc);
|
TLI.setUnavailable(LibFunc_under_IO_putc);
|
||||||
// But, Android has memalign.
|
// But, Android and musl have memalign.
|
||||||
if (!T.isAndroid())
|
if (!T.isAndroid() && !T.isMusl())
|
||||||
TLI.setUnavailable(LibFunc_memalign);
|
TLI.setUnavailable(LibFunc_memalign);
|
||||||
TLI.setUnavailable(LibFunc_fopen64);
|
TLI.setUnavailable(LibFunc_fopen64);
|
||||||
TLI.setUnavailable(LibFunc_fseeko64);
|
TLI.setUnavailable(LibFunc_fseeko64);
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||||
; RUN: opt < %s -constprop -S | FileCheck %s
|
; RUN: opt < %s -constprop -S | FileCheck %s
|
||||||
|
; RUN: opt < %s -constprop -S -mtriple=unknown-unknown-linux-musl | FileCheck -check-prefix=MUSL %s
|
||||||
|
|
||||||
; Test to verify constant folding can occur when math routines are mapped
|
; Test to verify constant folding can occur when math routines are mapped
|
||||||
; to the __<func>_finite versions of functions due to __FINITE_MATH_ONLY__
|
; to the __<func>_finite versions of functions due to __FINITE_MATH_ONLY__
|
||||||
@ -57,6 +58,48 @@ define void @T() {
|
|||||||
; CHECK-NEXT: store float 0x40240926E0000000, float* [[SLOTF]]
|
; CHECK-NEXT: store float 0x40240926E0000000, float* [[SLOTF]]
|
||||||
; CHECK-NEXT: ret void
|
; CHECK-NEXT: ret void
|
||||||
;
|
;
|
||||||
|
; MUSL-LABEL: @T(
|
||||||
|
; MUSL-NEXT: [[SLOT:%.*]] = alloca double
|
||||||
|
; MUSL-NEXT: [[SLOTF:%.*]] = alloca float
|
||||||
|
; MUSL-NEXT: call
|
||||||
|
; MUSL-NEXT: store
|
||||||
|
; MUSL-NEXT: call
|
||||||
|
; MUSL-NEXT: store
|
||||||
|
; MUSL-NEXT: call
|
||||||
|
; MUSL-NEXT: store
|
||||||
|
; MUSL-NEXT: call
|
||||||
|
; MUSL-NEXT: store
|
||||||
|
; MUSL-NEXT: call
|
||||||
|
; MUSL-NEXT: store
|
||||||
|
; MUSL-NEXT: call
|
||||||
|
; MUSL-NEXT: store
|
||||||
|
; MUSL-NEXT: call
|
||||||
|
; MUSL-NEXT: store
|
||||||
|
; MUSL-NEXT: call
|
||||||
|
; MUSL-NEXT: store
|
||||||
|
; MUSL-NEXT: call
|
||||||
|
; MUSL-NEXT: store
|
||||||
|
; MUSL-NEXT: call
|
||||||
|
; MUSL-NEXT: store
|
||||||
|
; MUSL-NEXT: call
|
||||||
|
; MUSL-NEXT: store
|
||||||
|
; MUSL-NEXT: call
|
||||||
|
; MUSL-NEXT: store
|
||||||
|
; MUSL-NEXT: call
|
||||||
|
; MUSL-NEXT: store
|
||||||
|
; MUSL-NEXT: call
|
||||||
|
; MUSL-NEXT: store
|
||||||
|
; MUSL-NEXT: call
|
||||||
|
; MUSL-NEXT: store
|
||||||
|
; MUSL-NEXT: call
|
||||||
|
; MUSL-NEXT: store
|
||||||
|
; MUSL-NEXT: call
|
||||||
|
; MUSL-NEXT: store
|
||||||
|
; MUSL-NEXT: call
|
||||||
|
; MUSL-NEXT: store
|
||||||
|
; MUSL-NEXT: call
|
||||||
|
; MUSL-NEXT: store
|
||||||
|
|
||||||
%slot = alloca double
|
%slot = alloca double
|
||||||
%slotf = alloca float
|
%slotf = alloca float
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
; RUN: opt < %s -mtriple=x86_64-- -inferattrs -S | FileCheck %s
|
; RUN: opt < %s -mtriple=x86_64-- -inferattrs -S | FileCheck %s
|
||||||
; RUN: opt < %s -mtriple=x86_64-- -passes=inferattrs -S | FileCheck %s
|
; RUN: opt < %s -mtriple=x86_64-- -passes=inferattrs -S | FileCheck %s
|
||||||
; RUN: opt < %s -mtriple=x86_64-apple-macosx10.8.0 -inferattrs -S | FileCheck -check-prefix=CHECK -check-prefix=CHECK-DARWIN %s
|
; RUN: opt < %s -mtriple=x86_64-apple-macosx10.8.0 -inferattrs -S | FileCheck -check-prefix=CHECK -check-prefix=CHECK-DARWIN %s
|
||||||
; RUN: opt < %s -mtriple=x86_64-unknown-linux -inferattrs -S | FileCheck -check-prefix=CHECK -check-prefix=CHECK-LINUX %s
|
; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -inferattrs -S | FileCheck -check-prefix=CHECK -check-prefix=CHECK-LINUX %s
|
||||||
; RUN: opt < %s -mtriple=nvptx -inferattrs -S | FileCheck -check-prefix=CHECK-NVPTX %s
|
; RUN: opt < %s -mtriple=nvptx -inferattrs -S | FileCheck -check-prefix=CHECK-NVPTX %s
|
||||||
|
|
||||||
; operator new routines
|
; operator new routines
|
||||||
|
Loading…
x
Reference in New Issue
Block a user