diff --git a/llvm/lib/Analysis/TargetLibraryInfo.cpp b/llvm/lib/Analysis/TargetLibraryInfo.cpp --- a/llvm/lib/Analysis/TargetLibraryInfo.cpp +++ b/llvm/lib/Analysis/TargetLibraryInfo.cpp @@ -352,59 +352,63 @@ // 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/llvm/test/Transforms/InstCombine/sprintf-1.ll b/llvm/test/Transforms/InstCombine/sprintf-1.ll --- a/llvm/test/Transforms/InstCombine/sprintf-1.ll +++ b/llvm/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"