backport marking library functions unavailable on mingw
This commit is contained in:
@@ -0,0 +1,124 @@
|
||||
From c5638a71d805330294e9b6e2c670e1ed7420b63a Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin@martin.st>
|
||||
Date: Fri, 21 May 2021 00:47:39 +0300
|
||||
Subject: [PATCH] [MinGW] Mark a number of library functions unavailable for
|
||||
mingw targets
|
||||
|
||||
These functions were marked unavailable for MSVC targets before,
|
||||
within an "T.isOSWindows() && !T.isOSCygMing()" block, but these ones
|
||||
are unavailable on MinGW targets too.
|
||||
|
||||
This avoids generating calls to stpcpy for MinGW targets, which has
|
||||
been happening since 6dbf0cfcf789365493f70ae69df8a7a59be41c75 (in
|
||||
some cases).
|
||||
|
||||
This fixes https://github.com/mstorsjo/llvm-mingw/issues/201.
|
||||
|
||||
Differential Revision: https://reviews.llvm.org/D102946
|
||||
---
|
||||
lib/Analysis/TargetLibraryInfo.cpp | 48 ++++++++++---------
|
||||
test/Transforms/InstCombine/sprintf-1.ll | 1 +
|
||||
2 files changed, 27 insertions(+), 22 deletions(-)
|
||||
|
||||
diff --git a/lib/Analysis/TargetLibraryInfo.cpp b/lib/Analysis/TargetLibraryInfo.cpp
|
||||
index 153ba073cc10b..05088c189ca22 100644
|
||||
--- a/lib/Analysis/TargetLibraryInfo.cpp
|
||||
+++ b/lib/Analysis/TargetLibraryInfo.cpp
|
||||
@@ -352,59 +352,63 @@ static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T,
|
||||
// Win32 does not support these functions, but
|
||||
// they are generally available on POSIX-compliant systems.
|
||||
TLI.setUnavailable(LibFunc_access);
|
||||
+ TLI.setUnavailable(LibFunc_chmod);
|
||||
+ TLI.setUnavailable(LibFunc_closedir);
|
||||
+ TLI.setUnavailable(LibFunc_fdopen);
|
||||
+ TLI.setUnavailable(LibFunc_fileno);
|
||||
+ TLI.setUnavailable(LibFunc_fseeko);
|
||||
+ TLI.setUnavailable(LibFunc_fstat);
|
||||
+ TLI.setUnavailable(LibFunc_ftello);
|
||||
+ TLI.setUnavailable(LibFunc_gettimeofday);
|
||||
+ TLI.setUnavailable(LibFunc_memccpy);
|
||||
+ TLI.setUnavailable(LibFunc_mkdir);
|
||||
+ TLI.setUnavailable(LibFunc_open);
|
||||
+ TLI.setUnavailable(LibFunc_opendir);
|
||||
+ TLI.setUnavailable(LibFunc_pclose);
|
||||
+ TLI.setUnavailable(LibFunc_popen);
|
||||
+ TLI.setUnavailable(LibFunc_read);
|
||||
+ TLI.setUnavailable(LibFunc_rmdir);
|
||||
+ TLI.setUnavailable(LibFunc_stat);
|
||||
+ TLI.setUnavailable(LibFunc_strcasecmp);
|
||||
+ TLI.setUnavailable(LibFunc_strncasecmp);
|
||||
+ TLI.setUnavailable(LibFunc_unlink);
|
||||
+ TLI.setUnavailable(LibFunc_utime);
|
||||
+ TLI.setUnavailable(LibFunc_write);
|
||||
+ }
|
||||
+
|
||||
+ if (T.isOSWindows() && !T.isWindowsCygwinEnvironment()) {
|
||||
+ // These functions aren't available in either MSVC or MinGW environments.
|
||||
TLI.setUnavailable(LibFunc_bcmp);
|
||||
TLI.setUnavailable(LibFunc_bcopy);
|
||||
TLI.setUnavailable(LibFunc_bzero);
|
||||
- TLI.setUnavailable(LibFunc_chmod);
|
||||
TLI.setUnavailable(LibFunc_chown);
|
||||
- TLI.setUnavailable(LibFunc_closedir);
|
||||
TLI.setUnavailable(LibFunc_ctermid);
|
||||
- TLI.setUnavailable(LibFunc_fdopen);
|
||||
TLI.setUnavailable(LibFunc_ffs);
|
||||
- TLI.setUnavailable(LibFunc_fileno);
|
||||
TLI.setUnavailable(LibFunc_flockfile);
|
||||
- TLI.setUnavailable(LibFunc_fseeko);
|
||||
- TLI.setUnavailable(LibFunc_fstat);
|
||||
TLI.setUnavailable(LibFunc_fstatvfs);
|
||||
- TLI.setUnavailable(LibFunc_ftello);
|
||||
TLI.setUnavailable(LibFunc_ftrylockfile);
|
||||
TLI.setUnavailable(LibFunc_funlockfile);
|
||||
TLI.setUnavailable(LibFunc_getitimer);
|
||||
TLI.setUnavailable(LibFunc_getlogin_r);
|
||||
TLI.setUnavailable(LibFunc_getpwnam);
|
||||
- TLI.setUnavailable(LibFunc_gettimeofday);
|
||||
TLI.setUnavailable(LibFunc_htonl);
|
||||
TLI.setUnavailable(LibFunc_htons);
|
||||
TLI.setUnavailable(LibFunc_lchown);
|
||||
TLI.setUnavailable(LibFunc_lstat);
|
||||
- TLI.setUnavailable(LibFunc_memccpy);
|
||||
- TLI.setUnavailable(LibFunc_mkdir);
|
||||
TLI.setUnavailable(LibFunc_ntohl);
|
||||
TLI.setUnavailable(LibFunc_ntohs);
|
||||
- TLI.setUnavailable(LibFunc_open);
|
||||
- TLI.setUnavailable(LibFunc_opendir);
|
||||
- TLI.setUnavailable(LibFunc_pclose);
|
||||
- TLI.setUnavailable(LibFunc_popen);
|
||||
TLI.setUnavailable(LibFunc_pread);
|
||||
TLI.setUnavailable(LibFunc_pwrite);
|
||||
- TLI.setUnavailable(LibFunc_read);
|
||||
TLI.setUnavailable(LibFunc_readlink);
|
||||
TLI.setUnavailable(LibFunc_realpath);
|
||||
- TLI.setUnavailable(LibFunc_rmdir);
|
||||
TLI.setUnavailable(LibFunc_setitimer);
|
||||
- TLI.setUnavailable(LibFunc_stat);
|
||||
TLI.setUnavailable(LibFunc_statvfs);
|
||||
TLI.setUnavailable(LibFunc_stpcpy);
|
||||
TLI.setUnavailable(LibFunc_stpncpy);
|
||||
- TLI.setUnavailable(LibFunc_strcasecmp);
|
||||
- TLI.setUnavailable(LibFunc_strncasecmp);
|
||||
TLI.setUnavailable(LibFunc_times);
|
||||
TLI.setUnavailable(LibFunc_uname);
|
||||
- TLI.setUnavailable(LibFunc_unlink);
|
||||
TLI.setUnavailable(LibFunc_unsetenv);
|
||||
- TLI.setUnavailable(LibFunc_utime);
|
||||
TLI.setUnavailable(LibFunc_utimes);
|
||||
- TLI.setUnavailable(LibFunc_write);
|
||||
}
|
||||
|
||||
switch (T.getOS()) {
|
||||
diff --git a/test/Transforms/InstCombine/sprintf-1.ll b/test/Transforms/InstCombine/sprintf-1.ll
|
||||
index 187488d9ce78e..704d51724e06b 100644
|
||||
--- a/test/Transforms/InstCombine/sprintf-1.ll
|
||||
+++ b/test/Transforms/InstCombine/sprintf-1.ll
|
||||
@@ -4,6 +4,7 @@
|
||||
; RUN: opt < %s -instcombine -S | FileCheck %s
|
||||
; RUN: opt < %s -mtriple xcore-xmos-elf -instcombine -S | FileCheck %s -check-prefixes=CHECK,CHECK-IPRINTF
|
||||
; RUN: opt < %s -mtriple=i386-pc-windows-msvc -instcombine -S | FileCheck %s --check-prefixes=CHECK,WIN
|
||||
+; RUN: opt < %s -mtriple=i386-mingw32 -instcombine -S | FileCheck %s --check-prefixes=CHECK,WIN
|
||||
|
||||
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
|
||||
|
||||
@@ -76,6 +76,7 @@ source=("https://github.com/llvm/llvm-project/releases/download/llvmorg-${pkgver
|
||||
"0016-llvm-rc-Make-commas-in-user-data-structs-optional.patch"
|
||||
"0017-X86-Teach-X86FloatingPoint-s-handleCall-to-only-eras.patch"
|
||||
"0018-llvm-rc-Allow-dashes-as-part-of-resource-name-strings.patch"
|
||||
"0019-MinGW-Mark-a-number-of-library-functions-unavailable.patch"
|
||||
"0101-Disable-fPIC-errors.patch"
|
||||
"0103-Use-posix-style-path-separators-with-MinGW.patch"
|
||||
"0104-link-pthread-with-mingw.patch"
|
||||
@@ -129,6 +130,7 @@ sha256sums=('129cb25cd13677aad951ce5c2deb0fe4afc1e9d98950f53b51bdcfb5a73afa0e'
|
||||
'f1fa4f06d55afeb2d7f010745d2871d8a6a43140b2abaae173e142e3595aa8ef'
|
||||
'8f98770616e9c0457b8e7dd39c01550e300237d3973da96b827f4b4a9eca07f8'
|
||||
'e7eb5fdaa0c12122be7f801adf9cf748de806843c6c4e65bb28d042e94e78d88'
|
||||
'8a5a038cdbfdcf56a021cb53bbb6b00328c792d632a12dad99d9df0f33a91461'
|
||||
'63b2bda6a487ec69e257c3b7a14d71f6bec649fca058a5a54804f213d45c7c70'
|
||||
'2d1dc7f7cd6bd61f275cd0be6650f3086aee622074ac786ff5a921bf8ecaada2'
|
||||
'715cb8862753854b2d9256e0b70003e2d1f57083d83eaeaf5a095fc72b8a4e26'
|
||||
@@ -186,7 +188,8 @@ prepare() {
|
||||
"0015-Use-TerminateProcess-to-exit-without-running-destruc.patch" \
|
||||
"0016-llvm-rc-Make-commas-in-user-data-structs-optional.patch" \
|
||||
"0017-X86-Teach-X86FloatingPoint-s-handleCall-to-only-eras.patch" \
|
||||
"0018-llvm-rc-Allow-dashes-as-part-of-resource-name-strings.patch"
|
||||
"0018-llvm-rc-Allow-dashes-as-part-of-resource-name-strings.patch" \
|
||||
"0019-MinGW-Mark-a-number-of-library-functions-unavailable.patch"
|
||||
|
||||
if (( ! _clangprefix )); then
|
||||
apply_patch_with_msg \
|
||||
|
||||
@@ -22,6 +22,7 @@ Legend:
|
||||
- `"0016-llvm-rc-Make-commas-in-user-data-structs-optional.patch"` :arrow_down_small:
|
||||
- `"0017-X86-Teach-X86FloatingPoint-s-handleCall-to-only-eras.patch"` :arrow_down_small:
|
||||
- `"0018-llvm-rc-Allow-dashes-as-part-of-resource-name-strings.patch"` :arrow_down_small:
|
||||
- `"0019-MinGW-Mark-a-number-of-library-functions-unavailable.patch"` :arrow_down_small:
|
||||
- `"0101-Disable-fPIC-errors.patch"` :x:
|
||||
- `"0103-Use-posix-style-path-separators-with-MinGW.patch"` :x::x::x: - this one is really imporant
|
||||
- `"0104-link-pthread-with-mingw.patch"` :grey_exclamation:
|
||||
|
||||
Reference in New Issue
Block a user