TargetLibraryInfo: Add tests for function availability

Check the output of llvm-tli-checker for a sampling of triples. This
is intended to cover all of the paths in the TargetLibraryInfo constructor.
diff --git a/llvm/test/Analysis/TargetLibraryInfo/aarch64-unknown-windows-msvc.test b/llvm/test/Analysis/TargetLibraryInfo/aarch64-unknown-windows-msvc.test
new file mode 100644
index 0000000..30a19e9
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/aarch64-unknown-windows-msvc.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=aarch64-unknown-windows-msvc | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 276 available for 'aarch64-unknown-windows-msvc'
+CHECK-NEXT: available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: not available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: not available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: not available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: not available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: not available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: not available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: not available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: not available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: not available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: not available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: not available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: not available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: not available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '__size_returning_new'
+CHECK-NEXT: not available: '__size_returning_new_hot_cold'
+CHECK-NEXT: not available: '__size_returning_new_aligned'
+CHECK-NEXT: not available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: not available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: not available: 'acoshl'
+CHECK-NEXT: not available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: not available: 'asinhl'
+CHECK-NEXT: not available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: not available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: not available: 'atanhl'
+CHECK-NEXT: not available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: not available: 'bcopy'
+CHECK-NEXT: not available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: not available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: not available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: not available: 'ceill'
+CHECK-NEXT: not available: 'chmod'
+CHECK-NEXT: not available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: not available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: not available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: not available: 'coshl'
+CHECK-NEXT: not available: 'cosl'
+CHECK-NEXT: not available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: not available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: not available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: not available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: not available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: not available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: not available: 'ffs'
+CHECK-NEXT: not available: 'ffsl'
+CHECK-NEXT: not available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: not available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: not available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: not available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: not available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: not available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: not available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: not available: 'frexpf'
+CHECK-NEXT: not available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: not available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: not available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: not available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: not available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: not available: 'ftrylockfile'
+CHECK-NEXT: not available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: not available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: not available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: not available: 'getitimer'
+CHECK-NEXT: not available: 'getlogin_r'
+CHECK-NEXT: not available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: not available: 'gettimeofday'
+CHECK-NEXT: not available: 'htonl'
+CHECK-NEXT: not available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: not available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: not available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: not available: 'ldexpf'
+CHECK-NEXT: not available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: not available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: not available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: not available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: not available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: not available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: not available: 'logl'
+CHECK-NEXT: not available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: not available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: not available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: not available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: not available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: not available: 'nearbyintl'
+CHECK-NEXT: not available: 'ntohl'
+CHECK-NEXT: not available: 'ntohs'
+CHECK-NEXT: not available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: not available: 'opendir'
+CHECK-NEXT: not available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: not available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: not available: 'powl'
+CHECK-NEXT: not available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: not available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: not available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: not available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: not available: 'read'
+CHECK-NEXT: not available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: not available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: not available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: not available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: not available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: not available: 'rintl'
+CHECK-NEXT: not available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: not available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: not available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: not available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: not available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: not available: 'sinhl'
+CHECK-NEXT: not available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: not available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: not available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: not available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: not available: 'stpcpy'
+CHECK-NEXT: not available: 'stpncpy'
+CHECK-NEXT: not available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: not available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: not available: 'tanhl'
+CHECK-NEXT: not available: 'tanl'
+CHECK-NEXT: not available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: not available: 'truncl'
+CHECK-NEXT: not available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: not available: 'unlink'
+CHECK-NEXT: not available: 'unsetenv'
+CHECK-NEXT: not available: 'utime'
+CHECK-NEXT: not available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: not available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/amdgcn-amd-amdhsa.test b/llvm/test/Analysis/TargetLibraryInfo/amdgcn-amd-amdhsa.test
new file mode 100644
index 0000000..a4625fc
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/amdgcn-amd-amdhsa.test
@@ -0,0 +1,527 @@
+# RUN: llvm-tli-checker --triple=amdgcn-amd-amdhsa --dump-tli | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 2 available for 'amdgcn-amd-amdhsa'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: not available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: not available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: not available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: not available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: not available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: not available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: not available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: not available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: not available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: not available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: not available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: not available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: not available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '__size_returning_new'
+CHECK-NEXT: not available: '__size_returning_new_hot_cold'
+CHECK-NEXT: not available: '__size_returning_new_aligned'
+CHECK-NEXT: not available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: not available: '__atomic_load'
+CHECK-NEXT: not available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: not available: '__cxa_atexit'
+CHECK-NEXT: not available: 'atexit'
+CHECK-NEXT: not available: 'abort'
+CHECK-NEXT: not available: 'exit'
+CHECK-NEXT: not available: '_Exit'
+CHECK-NEXT: not available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: not available: '__cxa_throw'
+CHECK-NEXT: not available: '__cxa_guard_abort'
+CHECK-NEXT: not available: '__cxa_guard_acquire'
+CHECK-NEXT: not available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: not available: '__memccpy_chk'
+CHECK-NEXT: not available: '__memcpy_chk'
+CHECK-NEXT: not available: '__memmove_chk'
+CHECK-NEXT: not available: '__mempcpy_chk'
+CHECK-NEXT: not available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: not available: '__snprintf_chk'
+CHECK-NEXT: not available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: not available: '__stpcpy_chk'
+CHECK-NEXT: not available: '__stpncpy_chk'
+CHECK-NEXT: not available: '__strcat_chk'
+CHECK-NEXT: not available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: not available: '__strlcat_chk'
+CHECK-NEXT: not available: '__strlcpy_chk'
+CHECK-NEXT: not available: '__strlen_chk'
+CHECK-NEXT: not available: '__strncat_chk'
+CHECK-NEXT: not available: '__strncpy_chk'
+CHECK-NEXT: not available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: not available: '__vsnprintf_chk'
+CHECK-NEXT: not available: '__vsprintf_chk'
+CHECK-NEXT: not available: 'abs'
+CHECK-NEXT: not available: 'access'
+CHECK-NEXT: not available: 'acos'
+CHECK-NEXT: not available: 'acosf'
+CHECK-NEXT: not available: 'acosh'
+CHECK-NEXT: not available: 'acoshf'
+CHECK-NEXT: not available: 'acoshl'
+CHECK-NEXT: not available: 'acosl'
+CHECK-NEXT: not available: 'aligned_alloc'
+CHECK-NEXT: not available: 'asin'
+CHECK-NEXT: not available: 'asinf'
+CHECK-NEXT: not available: 'asinh'
+CHECK-NEXT: not available: 'asinhf'
+CHECK-NEXT: not available: 'asinhl'
+CHECK-NEXT: not available: 'asinl'
+CHECK-NEXT: not available: 'atan'
+CHECK-NEXT: not available: 'atan2'
+CHECK-NEXT: not available: 'atan2f'
+CHECK-NEXT: not available: 'atan2l'
+CHECK-NEXT: not available: 'atanf'
+CHECK-NEXT: not available: 'atanh'
+CHECK-NEXT: not available: 'atanhf'
+CHECK-NEXT: not available: 'atanhl'
+CHECK-NEXT: not available: 'atanl'
+CHECK-NEXT: not available: 'atof'
+CHECK-NEXT: not available: 'atoi'
+CHECK-NEXT: not available: 'atol'
+CHECK-NEXT: not available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: not available: 'bcopy'
+CHECK-NEXT: not available: 'bzero'
+CHECK-NEXT: not available: 'cabs'
+CHECK-NEXT: not available: 'cabsf'
+CHECK-NEXT: not available: 'cabsl'
+CHECK-NEXT: not available: 'calloc'
+CHECK-NEXT: not available: 'cbrt'
+CHECK-NEXT: not available: 'cbrtf'
+CHECK-NEXT: not available: 'cbrtl'
+CHECK-NEXT: not available: 'ceil'
+CHECK-NEXT: not available: 'ceilf'
+CHECK-NEXT: not available: 'ceill'
+CHECK-NEXT: not available: 'chmod'
+CHECK-NEXT: not available: 'chown'
+CHECK-NEXT: not available: 'clearerr'
+CHECK-NEXT: not available: 'closedir'
+CHECK-NEXT: not available: 'copysign'
+CHECK-NEXT: not available: 'copysignf'
+CHECK-NEXT: not available: 'copysignl'
+CHECK-NEXT: not available: 'cos'
+CHECK-NEXT: not available: 'cosf'
+CHECK-NEXT: not available: 'cosh'
+CHECK-NEXT: not available: 'coshf'
+CHECK-NEXT: not available: 'coshl'
+CHECK-NEXT: not available: 'cosl'
+CHECK-NEXT: not available: 'ctermid'
+CHECK-NEXT: not available: 'erf'
+CHECK-NEXT: not available: 'erff'
+CHECK-NEXT: not available: 'erfl'
+CHECK-NEXT: not available: 'tgamma'
+CHECK-NEXT: not available: 'tgammaf'
+CHECK-NEXT: not available: 'tgammal'
+CHECK-NEXT: not available: 'execl'
+CHECK-NEXT: not available: 'execle'
+CHECK-NEXT: not available: 'execlp'
+CHECK-NEXT: not available: 'execv'
+CHECK-NEXT: not available: 'execvP'
+CHECK-NEXT: not available: 'execve'
+CHECK-NEXT: not available: 'execvp'
+CHECK-NEXT: not available: 'execvpe'
+CHECK-NEXT: not available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: not available: 'exp2'
+CHECK-NEXT: not available: 'exp2f'
+CHECK-NEXT: not available: 'exp2l'
+CHECK-NEXT: not available: 'expf'
+CHECK-NEXT: not available: 'expl'
+CHECK-NEXT: not available: 'expm1'
+CHECK-NEXT: not available: 'expm1f'
+CHECK-NEXT: not available: 'expm1l'
+CHECK-NEXT: not available: 'fabs'
+CHECK-NEXT: not available: 'fabsf'
+CHECK-NEXT: not available: 'fabsl'
+CHECK-NEXT: not available: 'fclose'
+CHECK-NEXT: not available: 'fdopen'
+CHECK-NEXT: not available: 'feof'
+CHECK-NEXT: not available: 'ferror'
+CHECK-NEXT: not available: 'fflush'
+CHECK-NEXT: not available: 'ffs'
+CHECK-NEXT: not available: 'ffsl'
+CHECK-NEXT: not available: 'ffsll'
+CHECK-NEXT: not available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: not available: 'fgetpos'
+CHECK-NEXT: not available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: not available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: not available: 'flockfile'
+CHECK-NEXT: not available: 'floor'
+CHECK-NEXT: not available: 'floorf'
+CHECK-NEXT: not available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: not available: 'fmax'
+CHECK-NEXT: not available: 'fmaxf'
+CHECK-NEXT: not available: 'fmaxl'
+CHECK-NEXT: not available: 'fmin'
+CHECK-NEXT: not available: 'fminf'
+CHECK-NEXT: not available: 'fminl'
+CHECK-NEXT: not available: 'fmaximum_num'
+CHECK-NEXT: not available: 'fmaximum_numf'
+CHECK-NEXT: not available: 'fmaximum_numl'
+CHECK-NEXT: not available: 'fminimum_num'
+CHECK-NEXT: not available: 'fminimum_numf'
+CHECK-NEXT: not available: 'fminimum_numl'
+CHECK-NEXT: not available: 'fmod'
+CHECK-NEXT: not available: 'fmodf'
+CHECK-NEXT: not available: 'fmodl'
+CHECK-NEXT: not available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: not available: 'fork'
+CHECK-NEXT: not available: 'fprintf'
+CHECK-NEXT: not available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: not available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: not available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: not available: 'free'
+CHECK-NEXT: not available: 'frexp'
+CHECK-NEXT: not available: 'frexpf'
+CHECK-NEXT: not available: 'frexpl'
+CHECK-NEXT: not available: 'fscanf'
+CHECK-NEXT: not available: 'fseek'
+CHECK-NEXT: not available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: not available: 'fsetpos'
+CHECK-NEXT: not available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: not available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: not available: 'ftell'
+CHECK-NEXT: not available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: not available: 'ftrylockfile'
+CHECK-NEXT: not available: 'funlockfile'
+CHECK-NEXT: not available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: not available: 'getc'
+CHECK-NEXT: not available: 'getc_unlocked'
+CHECK-NEXT: not available: 'getchar'
+CHECK-NEXT: not available: 'getchar_unlocked'
+CHECK-NEXT: not available: 'getenv'
+CHECK-NEXT: not available: 'getitimer'
+CHECK-NEXT: not available: 'getlogin_r'
+CHECK-NEXT: not available: 'getpwnam'
+CHECK-NEXT: not available: 'gets'
+CHECK-NEXT: not available: 'gettimeofday'
+CHECK-NEXT: not available: 'htonl'
+CHECK-NEXT: not available: 'htons'
+CHECK-NEXT: not available: 'hypot'
+CHECK-NEXT: not available: 'hypotf'
+CHECK-NEXT: not available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: not available: 'isascii'
+CHECK-NEXT: not available: 'isdigit'
+CHECK-NEXT: not available: 'labs'
+CHECK-NEXT: not available: 'lchown'
+CHECK-NEXT: not available: 'ldexp'
+CHECK-NEXT: not available: 'ldexpf'
+CHECK-NEXT: not available: 'ldexpl'
+CHECK-NEXT: not available: 'llabs'
+CHECK-NEXT: not available: 'log'
+CHECK-NEXT: not available: 'log10'
+CHECK-NEXT: not available: 'log10f'
+CHECK-NEXT: not available: 'log10l'
+CHECK-NEXT: not available: 'log1p'
+CHECK-NEXT: not available: 'log1pf'
+CHECK-NEXT: not available: 'log1pl'
+CHECK-NEXT: not available: 'log2'
+CHECK-NEXT: not available: 'log2f'
+CHECK-NEXT: not available: 'log2l'
+CHECK-NEXT: not available: 'ilogb'
+CHECK-NEXT: not available: 'ilogbf'
+CHECK-NEXT: not available: 'ilogbl'
+CHECK-NEXT: not available: 'logb'
+CHECK-NEXT: not available: 'logbf'
+CHECK-NEXT: not available: 'logbl'
+CHECK-NEXT: not available: 'logf'
+CHECK-NEXT: not available: 'logl'
+CHECK-NEXT: not available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: not available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: not available: 'memccpy'
+CHECK-NEXT: not available: 'memchr'
+CHECK-NEXT: not available: 'memcmp'
+CHECK-NEXT: not available: 'memcpy'
+CHECK-NEXT: not available: 'memmove'
+CHECK-NEXT: not available: 'mempcpy'
+CHECK-NEXT: not available: 'memrchr'
+CHECK-NEXT: not available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: not available: 'mkdir'
+CHECK-NEXT: not available: 'mktime'
+CHECK-NEXT: not available: 'modf'
+CHECK-NEXT: not available: 'modff'
+CHECK-NEXT: not available: 'modfl'
+CHECK-NEXT: not available: 'nan'
+CHECK-NEXT: not available: 'nanf'
+CHECK-NEXT: not available: 'nanl'
+CHECK-NEXT: not available: 'nearbyint'
+CHECK-NEXT: not available: 'nearbyintf'
+CHECK-NEXT: not available: 'nearbyintl'
+CHECK-NEXT: not available: 'ntohl'
+CHECK-NEXT: not available: 'ntohs'
+CHECK-NEXT: not available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: not available: 'opendir'
+CHECK-NEXT: not available: 'pclose'
+CHECK-NEXT: not available: 'perror'
+CHECK-NEXT: not available: 'popen'
+CHECK-NEXT: not available: 'posix_memalign'
+CHECK-NEXT: not available: 'pow'
+CHECK-NEXT: not available: 'powf'
+CHECK-NEXT: not available: 'powl'
+CHECK-NEXT: not available: 'pread'
+CHECK-NEXT: not available: 'printf'
+CHECK-NEXT: not available: 'putc'
+CHECK-NEXT: not available: 'putc_unlocked'
+CHECK-NEXT: not available: 'putchar'
+CHECK-NEXT: not available: 'putchar_unlocked'
+CHECK-NEXT: not available: 'puts'
+CHECK-NEXT: not available: 'pwrite'
+CHECK-NEXT: not available: 'qsort'
+CHECK-NEXT: not available: 'read'
+CHECK-NEXT: not available: 'readlink'
+CHECK-NEXT: not available: 'realloc'
+CHECK-NEXT: not available: 'reallocf'
+CHECK-NEXT: not available: 'reallocarray'
+CHECK-NEXT: not available: 'realpath'
+CHECK-NEXT: not available: 'remainder'
+CHECK-NEXT: not available: 'remainderf'
+CHECK-NEXT: not available: 'remainderl'
+CHECK-NEXT: not available: 'remquo'
+CHECK-NEXT: not available: 'remquof'
+CHECK-NEXT: not available: 'remquol'
+CHECK-NEXT: not available: 'fdim'
+CHECK-NEXT: not available: 'fdimf'
+CHECK-NEXT: not available: 'fdiml'
+CHECK-NEXT: not available: 'remove'
+CHECK-NEXT: not available: 'rename'
+CHECK-NEXT: not available: 'rewind'
+CHECK-NEXT: not available: 'rint'
+CHECK-NEXT: not available: 'rintf'
+CHECK-NEXT: not available: 'rintl'
+CHECK-NEXT: not available: 'rmdir'
+CHECK-NEXT: not available: 'round'
+CHECK-NEXT: not available: 'roundeven'
+CHECK-NEXT: not available: 'roundevenf'
+CHECK-NEXT: not available: 'roundevenl'
+CHECK-NEXT: not available: 'roundf'
+CHECK-NEXT: not available: 'roundl'
+CHECK-NEXT: not available: 'scalbln'
+CHECK-NEXT: not available: 'scalblnf'
+CHECK-NEXT: not available: 'scalblnl'
+CHECK-NEXT: not available: 'scalbn'
+CHECK-NEXT: not available: 'scalbnf'
+CHECK-NEXT: not available: 'scalbnl'
+CHECK-NEXT: not available: 'scanf'
+CHECK-NEXT: not available: 'setbuf'
+CHECK-NEXT: not available: 'setitimer'
+CHECK-NEXT: not available: 'setvbuf'
+CHECK-NEXT: not available: 'sin'
+CHECK-NEXT: not available: 'sinf'
+CHECK-NEXT: not available: 'sinh'
+CHECK-NEXT: not available: 'sinhf'
+CHECK-NEXT: not available: 'sinhl'
+CHECK-NEXT: not available: 'sinl'
+CHECK-NEXT: not available: 'sincos'
+CHECK-NEXT: not available: 'sincosf'
+CHECK-NEXT: not available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: not available: 'snprintf'
+CHECK-NEXT: not available: 'sprintf'
+CHECK-NEXT: not available: 'sqrt'
+CHECK-NEXT: not available: 'sqrtf'
+CHECK-NEXT: not available: 'sqrtl'
+CHECK-NEXT: not available: 'sscanf'
+CHECK-NEXT: not available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: not available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: not available: 'stpcpy'
+CHECK-NEXT: not available: 'stpncpy'
+CHECK-NEXT: not available: 'strcasecmp'
+CHECK-NEXT: not available: 'strcat'
+CHECK-NEXT: not available: 'strchr'
+CHECK-NEXT: not available: 'strcmp'
+CHECK-NEXT: not available: 'strcoll'
+CHECK-NEXT: not available: 'strcpy'
+CHECK-NEXT: not available: 'strcspn'
+CHECK-NEXT: not available: 'strdup'
+CHECK-NEXT: not available: 'strlcat'
+CHECK-NEXT: not available: 'strlcpy'
+CHECK-NEXT: not available: 'strlen'
+CHECK-NEXT: not available: 'strncasecmp'
+CHECK-NEXT: not available: 'strncat'
+CHECK-NEXT: not available: 'strncmp'
+CHECK-NEXT: not available: 'strncpy'
+CHECK-NEXT: not available: 'strndup'
+CHECK-NEXT: not available: 'strnlen'
+CHECK-NEXT: not available: 'strpbrk'
+CHECK-NEXT: not available: 'strrchr'
+CHECK-NEXT: not available: 'strspn'
+CHECK-NEXT: not available: 'strstr'
+CHECK-NEXT: not available: 'strtod'
+CHECK-NEXT: not available: 'strtof'
+CHECK-NEXT: not available: 'strtok'
+CHECK-NEXT: not available: 'strtok_r'
+CHECK-NEXT: not available: 'strtol'
+CHECK-NEXT: not available: 'strtold'
+CHECK-NEXT: not available: 'strtoll'
+CHECK-NEXT: not available: 'strtoul'
+CHECK-NEXT: not available: 'strtoull'
+CHECK-NEXT: not available: 'strxfrm'
+CHECK-NEXT: not available: 'system'
+CHECK-NEXT: not available: 'tan'
+CHECK-NEXT: not available: 'tanf'
+CHECK-NEXT: not available: 'tanh'
+CHECK-NEXT: not available: 'tanhf'
+CHECK-NEXT: not available: 'tanhl'
+CHECK-NEXT: not available: 'tanl'
+CHECK-NEXT: not available: 'times'
+CHECK-NEXT: not available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: not available: 'toascii'
+CHECK-NEXT: not available: 'trunc'
+CHECK-NEXT: not available: 'truncf'
+CHECK-NEXT: not available: 'truncl'
+CHECK-NEXT: not available: 'uname'
+CHECK-NEXT: not available: 'ungetc'
+CHECK-NEXT: not available: 'unlink'
+CHECK-NEXT: not available: 'unsetenv'
+CHECK-NEXT: not available: 'utime'
+CHECK-NEXT: not available: 'utimes'
+CHECK-NEXT: not available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: not available: 'vfprintf'
+CHECK-NEXT: not available: 'vfscanf'
+CHECK-NEXT: not available: 'vprintf'
+CHECK-NEXT: not available: 'vscanf'
+CHECK-NEXT: not available: 'vsnprintf'
+CHECK-NEXT: not available: 'vsprintf'
+CHECK-NEXT: not available: 'vsscanf'
+CHECK-NEXT: not available: 'wcslen'
+CHECK-NEXT: not available: 'write'
+
diff --git a/llvm/test/Analysis/TargetLibraryInfo/arm64-apple-darwin.test b/llvm/test/Analysis/TargetLibraryInfo/arm64-apple-darwin.test
new file mode 100644
index 0000000..2279751
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/arm64-apple-darwin.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=arm64-apple-darwin | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 407 available for 'arm64-apple-darwin'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: available: 'bcopy'
+CHECK-NEXT: available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: available: 'chmod'
+CHECK-NEXT: available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: available: 'ffs'
+CHECK-NEXT: available: 'ffsl'
+CHECK-NEXT: available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: available: 'ftrylockfile'
+CHECK-NEXT: available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: available: 'getitimer'
+CHECK-NEXT: available: 'getlogin_r'
+CHECK-NEXT: available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: available: 'gettimeofday'
+CHECK-NEXT: available: 'htonl'
+CHECK-NEXT: available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: not available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: available: 'ntohl'
+CHECK-NEXT: available: 'ntohs'
+CHECK-NEXT: available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: available: 'opendir'
+CHECK-NEXT: available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: available: 'read'
+CHECK-NEXT: available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: available: 'stpcpy'
+CHECK-NEXT: available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: available: 'unlink'
+CHECK-NEXT: available: 'unsetenv'
+CHECK-NEXT: available: 'utime'
+CHECK-NEXT: available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/arm64_32-apple-watchos.test b/llvm/test/Analysis/TargetLibraryInfo/arm64_32-apple-watchos.test
new file mode 100644
index 0000000..1878911
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/arm64_32-apple-watchos.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=arm64_32-apple-watchos | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 415 available for 'arm64_32-apple-watchos'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: available: '__cospi'
+CHECK-NEXT: available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: available: '__sincospi_stret'
+CHECK-NEXT: available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: available: '__sinpi'
+CHECK-NEXT: available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: available: 'bcopy'
+CHECK-NEXT: available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: available: 'chmod'
+CHECK-NEXT: available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: available: 'exp10'
+CHECK-NEXT: available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: available: 'ffs'
+CHECK-NEXT: available: 'ffsl'
+CHECK-NEXT: available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: available: 'ftrylockfile'
+CHECK-NEXT: available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: not available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: not available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: available: 'getitimer'
+CHECK-NEXT: available: 'getlogin_r'
+CHECK-NEXT: available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: available: 'gettimeofday'
+CHECK-NEXT: available: 'htonl'
+CHECK-NEXT: available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: available: 'memset_pattern16'
+CHECK-NEXT: available: 'memset_pattern4'
+CHECK-NEXT: available: 'memset_pattern8'
+CHECK-NEXT: available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: available: 'ntohl'
+CHECK-NEXT: available: 'ntohs'
+CHECK-NEXT: available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: available: 'opendir'
+CHECK-NEXT: available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: not available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: not available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: available: 'read'
+CHECK-NEXT: available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: available: 'stpcpy'
+CHECK-NEXT: available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: available: 'unlink'
+CHECK-NEXT: available: 'unsetenv'
+CHECK-NEXT: available: 'utime'
+CHECK-NEXT: available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/armv7-apple-ios.test b/llvm/test/Analysis/TargetLibraryInfo/armv7-apple-ios.test
new file mode 100644
index 0000000..7889d8d
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/armv7-apple-ios.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=armv7-apple-ios | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 404 available for 'armv7-apple-ios'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: available: 'bcopy'
+CHECK-NEXT: available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: available: 'chmod'
+CHECK-NEXT: available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: available: 'ffs'
+CHECK-NEXT: available: 'ffsl'
+CHECK-NEXT: available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: available: 'ftrylockfile'
+CHECK-NEXT: available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: not available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: not available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: available: 'getitimer'
+CHECK-NEXT: available: 'getlogin_r'
+CHECK-NEXT: available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: available: 'gettimeofday'
+CHECK-NEXT: available: 'htonl'
+CHECK-NEXT: available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: available: 'ntohl'
+CHECK-NEXT: available: 'ntohs'
+CHECK-NEXT: available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: available: 'opendir'
+CHECK-NEXT: available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: not available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: not available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: available: 'read'
+CHECK-NEXT: available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: available: 'stpcpy'
+CHECK-NEXT: available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: available: 'unlink'
+CHECK-NEXT: available: 'unsetenv'
+CHECK-NEXT: available: 'utime'
+CHECK-NEXT: available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/armv7-unknown-linux-android21.test b/llvm/test/Analysis/TargetLibraryInfo/armv7-unknown-linux-android21.test
new file mode 100644
index 0000000..616be91
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/armv7-unknown-linux-android21.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=armv7-unknown-linux-android21 | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 405 available for 'armv7-unknown-linux-android21'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: available: 'bcopy'
+CHECK-NEXT: available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: available: 'chmod'
+CHECK-NEXT: available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: available: 'ffs'
+CHECK-NEXT: available: 'ffsl'
+CHECK-NEXT: available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: available: 'ftrylockfile'
+CHECK-NEXT: available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: not available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: not available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: available: 'getitimer'
+CHECK-NEXT: available: 'getlogin_r'
+CHECK-NEXT: available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: available: 'gettimeofday'
+CHECK-NEXT: available: 'htonl'
+CHECK-NEXT: available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: available: 'memalign'
+CHECK-NEXT: available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: available: 'ntohl'
+CHECK-NEXT: available: 'ntohs'
+CHECK-NEXT: available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: available: 'opendir'
+CHECK-NEXT: available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: not available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: not available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: available: 'read'
+CHECK-NEXT: available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: available: 'stpcpy'
+CHECK-NEXT: available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: available: 'unlink'
+CHECK-NEXT: available: 'unsetenv'
+CHECK-NEXT: available: 'utime'
+CHECK-NEXT: available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/armv7-unknown-linux-android28.test b/llvm/test/Analysis/TargetLibraryInfo/armv7-unknown-linux-android28.test
new file mode 100644
index 0000000..4e4b473
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/armv7-unknown-linux-android28.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=armv7-unknown-linux-android28 | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 415 available for 'armv7-unknown-linux-android28'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: available: 'bcopy'
+CHECK-NEXT: available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: available: 'chmod'
+CHECK-NEXT: available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: available: 'ffs'
+CHECK-NEXT: available: 'ffsl'
+CHECK-NEXT: available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: available: 'ftrylockfile'
+CHECK-NEXT: available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: available: 'getitimer'
+CHECK-NEXT: available: 'getlogin_r'
+CHECK-NEXT: available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: available: 'gettimeofday'
+CHECK-NEXT: available: 'htonl'
+CHECK-NEXT: available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: available: 'memalign'
+CHECK-NEXT: available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: available: 'ntohl'
+CHECK-NEXT: available: 'ntohs'
+CHECK-NEXT: available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: available: 'opendir'
+CHECK-NEXT: available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: available: 'read'
+CHECK-NEXT: available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: available: 'stpcpy'
+CHECK-NEXT: available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: available: 'unlink'
+CHECK-NEXT: available: 'unsetenv'
+CHECK-NEXT: available: 'utime'
+CHECK-NEXT: available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/armv7s-apple-ios7.0.test b/llvm/test/Analysis/TargetLibraryInfo/armv7s-apple-ios7.0.test
new file mode 100644
index 0000000..03cb8c6
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/armv7s-apple-ios7.0.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=armv7s-apple-ios7.0 | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 415 available for 'armv7s-apple-ios7.0'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: available: '__cospi'
+CHECK-NEXT: available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: available: '__sincospi_stret'
+CHECK-NEXT: available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: available: '__sinpi'
+CHECK-NEXT: available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: available: 'bcopy'
+CHECK-NEXT: available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: available: 'chmod'
+CHECK-NEXT: available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: available: 'exp10'
+CHECK-NEXT: available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: available: 'ffs'
+CHECK-NEXT: available: 'ffsl'
+CHECK-NEXT: available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: available: 'ftrylockfile'
+CHECK-NEXT: available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: not available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: not available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: available: 'getitimer'
+CHECK-NEXT: available: 'getlogin_r'
+CHECK-NEXT: available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: available: 'gettimeofday'
+CHECK-NEXT: available: 'htonl'
+CHECK-NEXT: available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: available: 'memset_pattern16'
+CHECK-NEXT: available: 'memset_pattern4'
+CHECK-NEXT: available: 'memset_pattern8'
+CHECK-NEXT: available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: available: 'ntohl'
+CHECK-NEXT: available: 'ntohs'
+CHECK-NEXT: available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: available: 'opendir'
+CHECK-NEXT: available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: not available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: not available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: available: 'read'
+CHECK-NEXT: available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: available: 'stpcpy'
+CHECK-NEXT: available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: available: 'unlink'
+CHECK-NEXT: available: 'unsetenv'
+CHECK-NEXT: available: 'utime'
+CHECK-NEXT: available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/dxil-pc-shadermodel6.3-library.test b/llvm/test/Analysis/TargetLibraryInfo/dxil-pc-shadermodel6.3-library.test
new file mode 100644
index 0000000..43990e4
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/dxil-pc-shadermodel6.3-library.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=dxil-pc-shadermodel6.3-library | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 0 available for 'dxil-pc-shadermodel6.3-library'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: not available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: not available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: not available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: not available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: not available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: not available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: not available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: not available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: not available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: not available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: not available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: not available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: not available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '__size_returning_new'
+CHECK-NEXT: not available: '__size_returning_new_hot_cold'
+CHECK-NEXT: not available: '__size_returning_new_aligned'
+CHECK-NEXT: not available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: not available: '__atomic_load'
+CHECK-NEXT: not available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: not available: '__cxa_atexit'
+CHECK-NEXT: not available: 'atexit'
+CHECK-NEXT: not available: 'abort'
+CHECK-NEXT: not available: 'exit'
+CHECK-NEXT: not available: '_Exit'
+CHECK-NEXT: not available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: not available: '__cxa_throw'
+CHECK-NEXT: not available: '__cxa_guard_abort'
+CHECK-NEXT: not available: '__cxa_guard_acquire'
+CHECK-NEXT: not available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: not available: '__kmpc_alloc_shared'
+CHECK-NEXT: not available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: not available: '__memccpy_chk'
+CHECK-NEXT: not available: '__memcpy_chk'
+CHECK-NEXT: not available: '__memmove_chk'
+CHECK-NEXT: not available: '__mempcpy_chk'
+CHECK-NEXT: not available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: not available: '__snprintf_chk'
+CHECK-NEXT: not available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: not available: '__stpcpy_chk'
+CHECK-NEXT: not available: '__stpncpy_chk'
+CHECK-NEXT: not available: '__strcat_chk'
+CHECK-NEXT: not available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: not available: '__strlcat_chk'
+CHECK-NEXT: not available: '__strlcpy_chk'
+CHECK-NEXT: not available: '__strlen_chk'
+CHECK-NEXT: not available: '__strncat_chk'
+CHECK-NEXT: not available: '__strncpy_chk'
+CHECK-NEXT: not available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: not available: '__vsnprintf_chk'
+CHECK-NEXT: not available: '__vsprintf_chk'
+CHECK-NEXT: not available: 'abs'
+CHECK-NEXT: not available: 'access'
+CHECK-NEXT: not available: 'acos'
+CHECK-NEXT: not available: 'acosf'
+CHECK-NEXT: not available: 'acosh'
+CHECK-NEXT: not available: 'acoshf'
+CHECK-NEXT: not available: 'acoshl'
+CHECK-NEXT: not available: 'acosl'
+CHECK-NEXT: not available: 'aligned_alloc'
+CHECK-NEXT: not available: 'asin'
+CHECK-NEXT: not available: 'asinf'
+CHECK-NEXT: not available: 'asinh'
+CHECK-NEXT: not available: 'asinhf'
+CHECK-NEXT: not available: 'asinhl'
+CHECK-NEXT: not available: 'asinl'
+CHECK-NEXT: not available: 'atan'
+CHECK-NEXT: not available: 'atan2'
+CHECK-NEXT: not available: 'atan2f'
+CHECK-NEXT: not available: 'atan2l'
+CHECK-NEXT: not available: 'atanf'
+CHECK-NEXT: not available: 'atanh'
+CHECK-NEXT: not available: 'atanhf'
+CHECK-NEXT: not available: 'atanhl'
+CHECK-NEXT: not available: 'atanl'
+CHECK-NEXT: not available: 'atof'
+CHECK-NEXT: not available: 'atoi'
+CHECK-NEXT: not available: 'atol'
+CHECK-NEXT: not available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: not available: 'bcopy'
+CHECK-NEXT: not available: 'bzero'
+CHECK-NEXT: not available: 'cabs'
+CHECK-NEXT: not available: 'cabsf'
+CHECK-NEXT: not available: 'cabsl'
+CHECK-NEXT: not available: 'calloc'
+CHECK-NEXT: not available: 'cbrt'
+CHECK-NEXT: not available: 'cbrtf'
+CHECK-NEXT: not available: 'cbrtl'
+CHECK-NEXT: not available: 'ceil'
+CHECK-NEXT: not available: 'ceilf'
+CHECK-NEXT: not available: 'ceill'
+CHECK-NEXT: not available: 'chmod'
+CHECK-NEXT: not available: 'chown'
+CHECK-NEXT: not available: 'clearerr'
+CHECK-NEXT: not available: 'closedir'
+CHECK-NEXT: not available: 'copysign'
+CHECK-NEXT: not available: 'copysignf'
+CHECK-NEXT: not available: 'copysignl'
+CHECK-NEXT: not available: 'cos'
+CHECK-NEXT: not available: 'cosf'
+CHECK-NEXT: not available: 'cosh'
+CHECK-NEXT: not available: 'coshf'
+CHECK-NEXT: not available: 'coshl'
+CHECK-NEXT: not available: 'cosl'
+CHECK-NEXT: not available: 'ctermid'
+CHECK-NEXT: not available: 'erf'
+CHECK-NEXT: not available: 'erff'
+CHECK-NEXT: not available: 'erfl'
+CHECK-NEXT: not available: 'tgamma'
+CHECK-NEXT: not available: 'tgammaf'
+CHECK-NEXT: not available: 'tgammal'
+CHECK-NEXT: not available: 'execl'
+CHECK-NEXT: not available: 'execle'
+CHECK-NEXT: not available: 'execlp'
+CHECK-NEXT: not available: 'execv'
+CHECK-NEXT: not available: 'execvP'
+CHECK-NEXT: not available: 'execve'
+CHECK-NEXT: not available: 'execvp'
+CHECK-NEXT: not available: 'execvpe'
+CHECK-NEXT: not available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: not available: 'exp2'
+CHECK-NEXT: not available: 'exp2f'
+CHECK-NEXT: not available: 'exp2l'
+CHECK-NEXT: not available: 'expf'
+CHECK-NEXT: not available: 'expl'
+CHECK-NEXT: not available: 'expm1'
+CHECK-NEXT: not available: 'expm1f'
+CHECK-NEXT: not available: 'expm1l'
+CHECK-NEXT: not available: 'fabs'
+CHECK-NEXT: not available: 'fabsf'
+CHECK-NEXT: not available: 'fabsl'
+CHECK-NEXT: not available: 'fclose'
+CHECK-NEXT: not available: 'fdopen'
+CHECK-NEXT: not available: 'feof'
+CHECK-NEXT: not available: 'ferror'
+CHECK-NEXT: not available: 'fflush'
+CHECK-NEXT: not available: 'ffs'
+CHECK-NEXT: not available: 'ffsl'
+CHECK-NEXT: not available: 'ffsll'
+CHECK-NEXT: not available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: not available: 'fgetpos'
+CHECK-NEXT: not available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: not available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: not available: 'flockfile'
+CHECK-NEXT: not available: 'floor'
+CHECK-NEXT: not available: 'floorf'
+CHECK-NEXT: not available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: not available: 'fmax'
+CHECK-NEXT: not available: 'fmaxf'
+CHECK-NEXT: not available: 'fmaxl'
+CHECK-NEXT: not available: 'fmin'
+CHECK-NEXT: not available: 'fminf'
+CHECK-NEXT: not available: 'fminl'
+CHECK-NEXT: not available: 'fmaximum_num'
+CHECK-NEXT: not available: 'fmaximum_numf'
+CHECK-NEXT: not available: 'fmaximum_numl'
+CHECK-NEXT: not available: 'fminimum_num'
+CHECK-NEXT: not available: 'fminimum_numf'
+CHECK-NEXT: not available: 'fminimum_numl'
+CHECK-NEXT: not available: 'fmod'
+CHECK-NEXT: not available: 'fmodf'
+CHECK-NEXT: not available: 'fmodl'
+CHECK-NEXT: not available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: not available: 'fork'
+CHECK-NEXT: not available: 'fprintf'
+CHECK-NEXT: not available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: not available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: not available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: not available: 'free'
+CHECK-NEXT: not available: 'frexp'
+CHECK-NEXT: not available: 'frexpf'
+CHECK-NEXT: not available: 'frexpl'
+CHECK-NEXT: not available: 'fscanf'
+CHECK-NEXT: not available: 'fseek'
+CHECK-NEXT: not available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: not available: 'fsetpos'
+CHECK-NEXT: not available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: not available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: not available: 'ftell'
+CHECK-NEXT: not available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: not available: 'ftrylockfile'
+CHECK-NEXT: not available: 'funlockfile'
+CHECK-NEXT: not available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: not available: 'getc'
+CHECK-NEXT: not available: 'getc_unlocked'
+CHECK-NEXT: not available: 'getchar'
+CHECK-NEXT: not available: 'getchar_unlocked'
+CHECK-NEXT: not available: 'getenv'
+CHECK-NEXT: not available: 'getitimer'
+CHECK-NEXT: not available: 'getlogin_r'
+CHECK-NEXT: not available: 'getpwnam'
+CHECK-NEXT: not available: 'gets'
+CHECK-NEXT: not available: 'gettimeofday'
+CHECK-NEXT: not available: 'htonl'
+CHECK-NEXT: not available: 'htons'
+CHECK-NEXT: not available: 'hypot'
+CHECK-NEXT: not available: 'hypotf'
+CHECK-NEXT: not available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: not available: 'isascii'
+CHECK-NEXT: not available: 'isdigit'
+CHECK-NEXT: not available: 'labs'
+CHECK-NEXT: not available: 'lchown'
+CHECK-NEXT: not available: 'ldexp'
+CHECK-NEXT: not available: 'ldexpf'
+CHECK-NEXT: not available: 'ldexpl'
+CHECK-NEXT: not available: 'llabs'
+CHECK-NEXT: not available: 'log'
+CHECK-NEXT: not available: 'log10'
+CHECK-NEXT: not available: 'log10f'
+CHECK-NEXT: not available: 'log10l'
+CHECK-NEXT: not available: 'log1p'
+CHECK-NEXT: not available: 'log1pf'
+CHECK-NEXT: not available: 'log1pl'
+CHECK-NEXT: not available: 'log2'
+CHECK-NEXT: not available: 'log2f'
+CHECK-NEXT: not available: 'log2l'
+CHECK-NEXT: not available: 'ilogb'
+CHECK-NEXT: not available: 'ilogbf'
+CHECK-NEXT: not available: 'ilogbl'
+CHECK-NEXT: not available: 'logb'
+CHECK-NEXT: not available: 'logbf'
+CHECK-NEXT: not available: 'logbl'
+CHECK-NEXT: not available: 'logf'
+CHECK-NEXT: not available: 'logl'
+CHECK-NEXT: not available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: not available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: not available: 'memccpy'
+CHECK-NEXT: not available: 'memchr'
+CHECK-NEXT: not available: 'memcmp'
+CHECK-NEXT: not available: 'memcpy'
+CHECK-NEXT: not available: 'memmove'
+CHECK-NEXT: not available: 'mempcpy'
+CHECK-NEXT: not available: 'memrchr'
+CHECK-NEXT: not available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: not available: 'mkdir'
+CHECK-NEXT: not available: 'mktime'
+CHECK-NEXT: not available: 'modf'
+CHECK-NEXT: not available: 'modff'
+CHECK-NEXT: not available: 'modfl'
+CHECK-NEXT: not available: 'nan'
+CHECK-NEXT: not available: 'nanf'
+CHECK-NEXT: not available: 'nanl'
+CHECK-NEXT: not available: 'nearbyint'
+CHECK-NEXT: not available: 'nearbyintf'
+CHECK-NEXT: not available: 'nearbyintl'
+CHECK-NEXT: not available: 'ntohl'
+CHECK-NEXT: not available: 'ntohs'
+CHECK-NEXT: not available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: not available: 'opendir'
+CHECK-NEXT: not available: 'pclose'
+CHECK-NEXT: not available: 'perror'
+CHECK-NEXT: not available: 'popen'
+CHECK-NEXT: not available: 'posix_memalign'
+CHECK-NEXT: not available: 'pow'
+CHECK-NEXT: not available: 'powf'
+CHECK-NEXT: not available: 'powl'
+CHECK-NEXT: not available: 'pread'
+CHECK-NEXT: not available: 'printf'
+CHECK-NEXT: not available: 'putc'
+CHECK-NEXT: not available: 'putc_unlocked'
+CHECK-NEXT: not available: 'putchar'
+CHECK-NEXT: not available: 'putchar_unlocked'
+CHECK-NEXT: not available: 'puts'
+CHECK-NEXT: not available: 'pwrite'
+CHECK-NEXT: not available: 'qsort'
+CHECK-NEXT: not available: 'read'
+CHECK-NEXT: not available: 'readlink'
+CHECK-NEXT: not available: 'realloc'
+CHECK-NEXT: not available: 'reallocf'
+CHECK-NEXT: not available: 'reallocarray'
+CHECK-NEXT: not available: 'realpath'
+CHECK-NEXT: not available: 'remainder'
+CHECK-NEXT: not available: 'remainderf'
+CHECK-NEXT: not available: 'remainderl'
+CHECK-NEXT: not available: 'remquo'
+CHECK-NEXT: not available: 'remquof'
+CHECK-NEXT: not available: 'remquol'
+CHECK-NEXT: not available: 'fdim'
+CHECK-NEXT: not available: 'fdimf'
+CHECK-NEXT: not available: 'fdiml'
+CHECK-NEXT: not available: 'remove'
+CHECK-NEXT: not available: 'rename'
+CHECK-NEXT: not available: 'rewind'
+CHECK-NEXT: not available: 'rint'
+CHECK-NEXT: not available: 'rintf'
+CHECK-NEXT: not available: 'rintl'
+CHECK-NEXT: not available: 'rmdir'
+CHECK-NEXT: not available: 'round'
+CHECK-NEXT: not available: 'roundeven'
+CHECK-NEXT: not available: 'roundevenf'
+CHECK-NEXT: not available: 'roundevenl'
+CHECK-NEXT: not available: 'roundf'
+CHECK-NEXT: not available: 'roundl'
+CHECK-NEXT: not available: 'scalbln'
+CHECK-NEXT: not available: 'scalblnf'
+CHECK-NEXT: not available: 'scalblnl'
+CHECK-NEXT: not available: 'scalbn'
+CHECK-NEXT: not available: 'scalbnf'
+CHECK-NEXT: not available: 'scalbnl'
+CHECK-NEXT: not available: 'scanf'
+CHECK-NEXT: not available: 'setbuf'
+CHECK-NEXT: not available: 'setitimer'
+CHECK-NEXT: not available: 'setvbuf'
+CHECK-NEXT: not available: 'sin'
+CHECK-NEXT: not available: 'sinf'
+CHECK-NEXT: not available: 'sinh'
+CHECK-NEXT: not available: 'sinhf'
+CHECK-NEXT: not available: 'sinhl'
+CHECK-NEXT: not available: 'sinl'
+CHECK-NEXT: not available: 'sincos'
+CHECK-NEXT: not available: 'sincosf'
+CHECK-NEXT: not available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: not available: 'snprintf'
+CHECK-NEXT: not available: 'sprintf'
+CHECK-NEXT: not available: 'sqrt'
+CHECK-NEXT: not available: 'sqrtf'
+CHECK-NEXT: not available: 'sqrtl'
+CHECK-NEXT: not available: 'sscanf'
+CHECK-NEXT: not available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: not available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: not available: 'stpcpy'
+CHECK-NEXT: not available: 'stpncpy'
+CHECK-NEXT: not available: 'strcasecmp'
+CHECK-NEXT: not available: 'strcat'
+CHECK-NEXT: not available: 'strchr'
+CHECK-NEXT: not available: 'strcmp'
+CHECK-NEXT: not available: 'strcoll'
+CHECK-NEXT: not available: 'strcpy'
+CHECK-NEXT: not available: 'strcspn'
+CHECK-NEXT: not available: 'strdup'
+CHECK-NEXT: not available: 'strlcat'
+CHECK-NEXT: not available: 'strlcpy'
+CHECK-NEXT: not available: 'strlen'
+CHECK-NEXT: not available: 'strncasecmp'
+CHECK-NEXT: not available: 'strncat'
+CHECK-NEXT: not available: 'strncmp'
+CHECK-NEXT: not available: 'strncpy'
+CHECK-NEXT: not available: 'strndup'
+CHECK-NEXT: not available: 'strnlen'
+CHECK-NEXT: not available: 'strpbrk'
+CHECK-NEXT: not available: 'strrchr'
+CHECK-NEXT: not available: 'strspn'
+CHECK-NEXT: not available: 'strstr'
+CHECK-NEXT: not available: 'strtod'
+CHECK-NEXT: not available: 'strtof'
+CHECK-NEXT: not available: 'strtok'
+CHECK-NEXT: not available: 'strtok_r'
+CHECK-NEXT: not available: 'strtol'
+CHECK-NEXT: not available: 'strtold'
+CHECK-NEXT: not available: 'strtoll'
+CHECK-NEXT: not available: 'strtoul'
+CHECK-NEXT: not available: 'strtoull'
+CHECK-NEXT: not available: 'strxfrm'
+CHECK-NEXT: not available: 'system'
+CHECK-NEXT: not available: 'tan'
+CHECK-NEXT: not available: 'tanf'
+CHECK-NEXT: not available: 'tanh'
+CHECK-NEXT: not available: 'tanhf'
+CHECK-NEXT: not available: 'tanhl'
+CHECK-NEXT: not available: 'tanl'
+CHECK-NEXT: not available: 'times'
+CHECK-NEXT: not available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: not available: 'toascii'
+CHECK-NEXT: not available: 'trunc'
+CHECK-NEXT: not available: 'truncf'
+CHECK-NEXT: not available: 'truncl'
+CHECK-NEXT: not available: 'uname'
+CHECK-NEXT: not available: 'ungetc'
+CHECK-NEXT: not available: 'unlink'
+CHECK-NEXT: not available: 'unsetenv'
+CHECK-NEXT: not available: 'utime'
+CHECK-NEXT: not available: 'utimes'
+CHECK-NEXT: not available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: not available: 'vfprintf'
+CHECK-NEXT: not available: 'vfscanf'
+CHECK-NEXT: not available: 'vprintf'
+CHECK-NEXT: not available: 'vscanf'
+CHECK-NEXT: not available: 'vsnprintf'
+CHECK-NEXT: not available: 'vsprintf'
+CHECK-NEXT: not available: 'vsscanf'
+CHECK-NEXT: not available: 'wcslen'
+CHECK-NEXT: not available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/i386-apple-macosx10.6.0.test b/llvm/test/Analysis/TargetLibraryInfo/i386-apple-macosx10.6.0.test
new file mode 100644
index 0000000..fcb3295
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/i386-apple-macosx10.6.0.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=i386-apple-macosx10.6.0 | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 410 available for 'i386-apple-macosx10.6.0'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: available: 'bcopy'
+CHECK-NEXT: available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: available: 'chmod'
+CHECK-NEXT: available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: available: 'ffs'
+CHECK-NEXT: available: 'ffsl'
+CHECK-NEXT: available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: available: 'ftrylockfile'
+CHECK-NEXT: available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: available: 'getitimer'
+CHECK-NEXT: available: 'getlogin_r'
+CHECK-NEXT: available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: available: 'gettimeofday'
+CHECK-NEXT: available: 'htonl'
+CHECK-NEXT: available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: not available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: available: 'memset_pattern16'
+CHECK-NEXT: available: 'memset_pattern4'
+CHECK-NEXT: available: 'memset_pattern8'
+CHECK-NEXT: available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: available: 'ntohl'
+CHECK-NEXT: available: 'ntohs'
+CHECK-NEXT: available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: available: 'opendir'
+CHECK-NEXT: available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: available: 'read'
+CHECK-NEXT: available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: available: 'stpcpy'
+CHECK-NEXT: available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: available: 'unlink'
+CHECK-NEXT: available: 'unsetenv'
+CHECK-NEXT: available: 'utime'
+CHECK-NEXT: available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/i386-apple-macosx10.7.0.test b/llvm/test/Analysis/TargetLibraryInfo/i386-apple-macosx10.7.0.test
new file mode 100644
index 0000000..cb7b0b1
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/i386-apple-macosx10.7.0.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=i386-apple-macosx10.7.0 | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 410 available for 'i386-apple-macosx10.7.0'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: available: 'bcopy'
+CHECK-NEXT: available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: available: 'chmod'
+CHECK-NEXT: available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: available: 'ffs'
+CHECK-NEXT: available: 'ffsl'
+CHECK-NEXT: available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: available: 'ftrylockfile'
+CHECK-NEXT: available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: available: 'getitimer'
+CHECK-NEXT: available: 'getlogin_r'
+CHECK-NEXT: available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: available: 'gettimeofday'
+CHECK-NEXT: available: 'htonl'
+CHECK-NEXT: available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: not available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: available: 'memset_pattern16'
+CHECK-NEXT: available: 'memset_pattern4'
+CHECK-NEXT: available: 'memset_pattern8'
+CHECK-NEXT: available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: available: 'ntohl'
+CHECK-NEXT: available: 'ntohs'
+CHECK-NEXT: available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: available: 'opendir'
+CHECK-NEXT: available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: available: 'read'
+CHECK-NEXT: available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: available: 'stpcpy'
+CHECK-NEXT: available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: available: 'unlink'
+CHECK-NEXT: available: 'unsetenv'
+CHECK-NEXT: available: 'utime'
+CHECK-NEXT: available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/i386-pc-linux-gnu.test b/llvm/test/Analysis/TargetLibraryInfo/i386-pc-linux-gnu.test
new file mode 100644
index 0000000..ef3adec
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/i386-pc-linux-gnu.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=i386-pc-linux-gnu | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 477 available for 'i386-pc-linux-gnu'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: available: '_IO_getc'
+CHECK-NEXT: available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: available: '__acos_finite'
+CHECK-NEXT: available: '__acosf_finite'
+CHECK-NEXT: available: '__acosh_finite'
+CHECK-NEXT: available: '__acoshf_finite'
+CHECK-NEXT: available: '__acoshl_finite'
+CHECK-NEXT: available: '__acosl_finite'
+CHECK-NEXT: available: '__asin_finite'
+CHECK-NEXT: available: '__asinf_finite'
+CHECK-NEXT: available: '__asinl_finite'
+CHECK-NEXT: available: '__atan2_finite'
+CHECK-NEXT: available: '__atan2f_finite'
+CHECK-NEXT: available: '__atan2l_finite'
+CHECK-NEXT: available: '__atanh_finite'
+CHECK-NEXT: available: '__atanhf_finite'
+CHECK-NEXT: available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: available: '__cosh_finite'
+CHECK-NEXT: available: '__coshf_finite'
+CHECK-NEXT: available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: available: '__exp10_finite'
+CHECK-NEXT: available: '__exp10f_finite'
+CHECK-NEXT: available: '__exp10l_finite'
+CHECK-NEXT: available: '__exp2_finite'
+CHECK-NEXT: available: '__exp2f_finite'
+CHECK-NEXT: available: '__exp2l_finite'
+CHECK-NEXT: available: '__exp_finite'
+CHECK-NEXT: available: '__expf_finite'
+CHECK-NEXT: available: '__expl_finite'
+CHECK-NEXT: available: '__isoc99_scanf'
+CHECK-NEXT: available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: available: '__log10_finite'
+CHECK-NEXT: available: '__log10f_finite'
+CHECK-NEXT: available: '__log10l_finite'
+CHECK-NEXT: available: '__log2_finite'
+CHECK-NEXT: available: '__log2f_finite'
+CHECK-NEXT: available: '__log2l_finite'
+CHECK-NEXT: available: '__log_finite'
+CHECK-NEXT: available: '__logf_finite'
+CHECK-NEXT: available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: available: '__pow_finite'
+CHECK-NEXT: available: '__powf_finite'
+CHECK-NEXT: available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: available: '__sinh_finite'
+CHECK-NEXT: available: '__sinhf_finite'
+CHECK-NEXT: available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: available: '__sqrt_finite'
+CHECK-NEXT: available: '__sqrtf_finite'
+CHECK-NEXT: available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: available: 'bcmp'
+CHECK-NEXT: available: 'bcopy'
+CHECK-NEXT: available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: available: 'chmod'
+CHECK-NEXT: available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: available: 'ffs'
+CHECK-NEXT: available: 'ffsl'
+CHECK-NEXT: available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: available: 'fseeko'
+CHECK-NEXT: available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: available: 'fstat'
+CHECK-NEXT: available: 'fstat64'
+CHECK-NEXT: available: 'fstatvfs'
+CHECK-NEXT: available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: available: 'ftello'
+CHECK-NEXT: available: 'ftello64'
+CHECK-NEXT: available: 'ftrylockfile'
+CHECK-NEXT: available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: available: 'getitimer'
+CHECK-NEXT: available: 'getlogin_r'
+CHECK-NEXT: available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: available: 'gettimeofday'
+CHECK-NEXT: available: 'htonl'
+CHECK-NEXT: available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: available: 'lstat'
+CHECK-NEXT: available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: available: 'memalign'
+CHECK-NEXT: available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: available: 'ntohl'
+CHECK-NEXT: available: 'ntohs'
+CHECK-NEXT: available: 'open'
+CHECK-NEXT: available: 'open64'
+CHECK-NEXT: available: 'opendir'
+CHECK-NEXT: available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: available: 'read'
+CHECK-NEXT: available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: available: 'stat'
+CHECK-NEXT: available: 'stat64'
+CHECK-NEXT: available: 'statvfs'
+CHECK-NEXT: available: 'statvfs64'
+CHECK-NEXT: available: 'stpcpy'
+CHECK-NEXT: available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: available: 'unlink'
+CHECK-NEXT: available: 'unsetenv'
+CHECK-NEXT: available: 'utime'
+CHECK-NEXT: available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/i386-pc-windows-msvc.test b/llvm/test/Analysis/TargetLibraryInfo/i386-pc-windows-msvc.test
new file mode 100644
index 0000000..65eb2f0
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/i386-pc-windows-msvc.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=i386-pc-windows-msvc | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 252 available for 'i386-pc-windows-msvc'
+CHECK-NEXT: available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: not available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: not available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: not available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: not available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: not available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: not available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: not available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: not available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: not available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: not available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: not available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: not available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: not available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '__size_returning_new'
+CHECK-NEXT: not available: '__size_returning_new_hot_cold'
+CHECK-NEXT: not available: '__size_returning_new_aligned'
+CHECK-NEXT: not available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: not available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: not available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: not available: 'acoshl'
+CHECK-NEXT: not available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: not available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: not available: 'asinhl'
+CHECK-NEXT: not available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: not available: 'atan2f'
+CHECK-NEXT: not available: 'atan2l'
+CHECK-NEXT: not available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: not available: 'atanhl'
+CHECK-NEXT: not available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: not available: 'bcopy'
+CHECK-NEXT: not available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: not available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: not available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: not available: 'ceilf'
+CHECK-NEXT: not available: 'ceill'
+CHECK-NEXT: not available: 'chmod'
+CHECK-NEXT: not available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: not available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: not available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: not available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: not available: 'coshf'
+CHECK-NEXT: not available: 'coshl'
+CHECK-NEXT: not available: 'cosl'
+CHECK-NEXT: not available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: not available: 'exp2l'
+CHECK-NEXT: not available: 'expf'
+CHECK-NEXT: not available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: not available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: not available: 'fabsf'
+CHECK-NEXT: not available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: not available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: not available: 'ffs'
+CHECK-NEXT: not available: 'ffsl'
+CHECK-NEXT: not available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: not available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: not available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: not available: 'floorf'
+CHECK-NEXT: not available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: not available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: not available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: not available: 'fmodf'
+CHECK-NEXT: not available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: not available: 'frexpf'
+CHECK-NEXT: not available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: not available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: not available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: not available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: not available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: not available: 'ftrylockfile'
+CHECK-NEXT: not available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: not available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: not available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: not available: 'getitimer'
+CHECK-NEXT: not available: 'getlogin_r'
+CHECK-NEXT: not available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: not available: 'gettimeofday'
+CHECK-NEXT: not available: 'htonl'
+CHECK-NEXT: not available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: not available: 'hypotf'
+CHECK-NEXT: not available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: not available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: not available: 'ldexpf'
+CHECK-NEXT: not available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: not available: 'log10f'
+CHECK-NEXT: not available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: not available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: not available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: not available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: not available: 'logbl'
+CHECK-NEXT: not available: 'logf'
+CHECK-NEXT: not available: 'logl'
+CHECK-NEXT: not available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: not available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: not available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: not available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: not available: 'modff'
+CHECK-NEXT: not available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: not available: 'nearbyintl'
+CHECK-NEXT: not available: 'ntohl'
+CHECK-NEXT: not available: 'ntohs'
+CHECK-NEXT: not available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: not available: 'opendir'
+CHECK-NEXT: not available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: not available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: not available: 'powf'
+CHECK-NEXT: not available: 'powl'
+CHECK-NEXT: not available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: not available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: not available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: not available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: not available: 'read'
+CHECK-NEXT: not available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: not available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: not available: 'remainderf'
+CHECK-NEXT: not available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: not available: 'remquof'
+CHECK-NEXT: not available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: not available: 'fdimf'
+CHECK-NEXT: not available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: not available: 'rintl'
+CHECK-NEXT: not available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: not available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: not available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: not available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: not available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: not available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: not available: 'sinhf'
+CHECK-NEXT: not available: 'sinhl'
+CHECK-NEXT: not available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: not available: 'sqrtf'
+CHECK-NEXT: not available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: not available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: not available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: not available: 'stpcpy'
+CHECK-NEXT: not available: 'stpncpy'
+CHECK-NEXT: not available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: not available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: not available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: not available: 'tanhf'
+CHECK-NEXT: not available: 'tanhl'
+CHECK-NEXT: not available: 'tanl'
+CHECK-NEXT: not available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: not available: 'truncl'
+CHECK-NEXT: not available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: not available: 'unlink'
+CHECK-NEXT: not available: 'unsetenv'
+CHECK-NEXT: not available: 'utime'
+CHECK-NEXT: not available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: not available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/i386-unknown-linux-musl.test b/llvm/test/Analysis/TargetLibraryInfo/i386-unknown-linux-musl.test
new file mode 100644
index 0000000..b2ddfb4
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/i386-unknown-linux-musl.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=i386-unknown-linux-musl | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 406 available for 'i386-unknown-linux-musl'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: available: 'bcmp'
+CHECK-NEXT: available: 'bcopy'
+CHECK-NEXT: available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: available: 'chmod'
+CHECK-NEXT: available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: available: 'ffs'
+CHECK-NEXT: available: 'ffsl'
+CHECK-NEXT: available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: available: 'ftrylockfile'
+CHECK-NEXT: available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: not available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: not available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: available: 'getitimer'
+CHECK-NEXT: available: 'getlogin_r'
+CHECK-NEXT: available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: available: 'gettimeofday'
+CHECK-NEXT: available: 'htonl'
+CHECK-NEXT: available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: available: 'memalign'
+CHECK-NEXT: available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: available: 'ntohl'
+CHECK-NEXT: available: 'ntohs'
+CHECK-NEXT: available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: available: 'opendir'
+CHECK-NEXT: available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: not available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: not available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: available: 'read'
+CHECK-NEXT: available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: available: 'stpcpy'
+CHECK-NEXT: available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: available: 'unlink'
+CHECK-NEXT: available: 'unsetenv'
+CHECK-NEXT: available: 'utime'
+CHECK-NEXT: available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/i686-apple-macosx.test b/llvm/test/Analysis/TargetLibraryInfo/i686-apple-macosx.test
new file mode 100644
index 0000000..d0e4de4
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/i686-apple-macosx.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=i686-apple-macosx | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 407 available for 'i686-apple-macosx'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: available: 'bcopy'
+CHECK-NEXT: available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: available: 'chmod'
+CHECK-NEXT: available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: available: 'ffs'
+CHECK-NEXT: available: 'ffsl'
+CHECK-NEXT: available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: available: 'ftrylockfile'
+CHECK-NEXT: available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: available: 'getitimer'
+CHECK-NEXT: available: 'getlogin_r'
+CHECK-NEXT: available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: available: 'gettimeofday'
+CHECK-NEXT: available: 'htonl'
+CHECK-NEXT: available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: not available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: available: 'ntohl'
+CHECK-NEXT: available: 'ntohs'
+CHECK-NEXT: available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: available: 'opendir'
+CHECK-NEXT: available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: available: 'read'
+CHECK-NEXT: available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: available: 'stpcpy'
+CHECK-NEXT: available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: available: 'unlink'
+CHECK-NEXT: available: 'unsetenv'
+CHECK-NEXT: available: 'utime'
+CHECK-NEXT: available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/i686-pc-cygwin.test b/llvm/test/Analysis/TargetLibraryInfo/i686-pc-cygwin.test
new file mode 100644
index 0000000..69549dc
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/i686-pc-cygwin.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=i686-pc-cygwin | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 402 available for 'i686-pc-cygwin'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: available: 'bcopy'
+CHECK-NEXT: available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: available: 'chmod'
+CHECK-NEXT: available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: available: 'ffs'
+CHECK-NEXT: not available: 'ffsl'
+CHECK-NEXT: not available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: available: 'ftrylockfile'
+CHECK-NEXT: available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: not available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: not available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: available: 'getitimer'
+CHECK-NEXT: available: 'getlogin_r'
+CHECK-NEXT: available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: available: 'gettimeofday'
+CHECK-NEXT: available: 'htonl'
+CHECK-NEXT: available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: available: 'ntohl'
+CHECK-NEXT: available: 'ntohs'
+CHECK-NEXT: available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: available: 'opendir'
+CHECK-NEXT: available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: not available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: not available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: available: 'read'
+CHECK-NEXT: available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: available: 'stpcpy'
+CHECK-NEXT: available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: available: 'unlink'
+CHECK-NEXT: available: 'unsetenv'
+CHECK-NEXT: available: 'utime'
+CHECK-NEXT: available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/linux-arm-gnueabihf.test b/llvm/test/Analysis/TargetLibraryInfo/linux-arm-gnueabihf.test
new file mode 100644
index 0000000..01fab81
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/linux-arm-gnueabihf.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=linux-arm-gnueabihf | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 402 available for 'linux-arm-gnueabihf'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: available: 'bcopy'
+CHECK-NEXT: available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: available: 'chmod'
+CHECK-NEXT: available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: available: 'ffs'
+CHECK-NEXT: not available: 'ffsl'
+CHECK-NEXT: not available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: available: 'ftrylockfile'
+CHECK-NEXT: available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: not available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: not available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: available: 'getitimer'
+CHECK-NEXT: available: 'getlogin_r'
+CHECK-NEXT: available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: available: 'gettimeofday'
+CHECK-NEXT: available: 'htonl'
+CHECK-NEXT: available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: available: 'ntohl'
+CHECK-NEXT: available: 'ntohs'
+CHECK-NEXT: available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: available: 'opendir'
+CHECK-NEXT: available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: not available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: not available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: available: 'read'
+CHECK-NEXT: available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: available: 'stpcpy'
+CHECK-NEXT: available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: available: 'unlink'
+CHECK-NEXT: available: 'unsetenv'
+CHECK-NEXT: available: 'utime'
+CHECK-NEXT: available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/nvptx64-nvidia-cuda.test b/llvm/test/Analysis/TargetLibraryInfo/nvptx64-nvidia-cuda.test
new file mode 100644
index 0000000..cad2787
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/nvptx64-nvidia-cuda.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=nvptx64-nvidia-cuda | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 5 available for 'nvptx64-nvidia-cuda'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: not available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: not available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: not available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: not available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: not available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: not available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: not available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: not available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: not available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: not available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: not available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: not available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: not available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '__size_returning_new'
+CHECK-NEXT: not available: '__size_returning_new_hot_cold'
+CHECK-NEXT: not available: '__size_returning_new_aligned'
+CHECK-NEXT: not available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: not available: '__atomic_load'
+CHECK-NEXT: not available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: not available: '__cxa_atexit'
+CHECK-NEXT: not available: 'atexit'
+CHECK-NEXT: not available: 'abort'
+CHECK-NEXT: not available: 'exit'
+CHECK-NEXT: not available: '_Exit'
+CHECK-NEXT: not available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: not available: '__cxa_throw'
+CHECK-NEXT: not available: '__cxa_guard_abort'
+CHECK-NEXT: not available: '__cxa_guard_acquire'
+CHECK-NEXT: not available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: not available: '__memccpy_chk'
+CHECK-NEXT: not available: '__memcpy_chk'
+CHECK-NEXT: not available: '__memmove_chk'
+CHECK-NEXT: not available: '__mempcpy_chk'
+CHECK-NEXT: not available: '__memset_chk'
+CHECK-NEXT: available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: not available: '__snprintf_chk'
+CHECK-NEXT: not available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: not available: '__stpcpy_chk'
+CHECK-NEXT: not available: '__stpncpy_chk'
+CHECK-NEXT: not available: '__strcat_chk'
+CHECK-NEXT: not available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: not available: '__strlcat_chk'
+CHECK-NEXT: not available: '__strlcpy_chk'
+CHECK-NEXT: not available: '__strlen_chk'
+CHECK-NEXT: not available: '__strncat_chk'
+CHECK-NEXT: not available: '__strncpy_chk'
+CHECK-NEXT: not available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: not available: '__vsnprintf_chk'
+CHECK-NEXT: not available: '__vsprintf_chk'
+CHECK-NEXT: not available: 'abs'
+CHECK-NEXT: not available: 'access'
+CHECK-NEXT: not available: 'acos'
+CHECK-NEXT: not available: 'acosf'
+CHECK-NEXT: not available: 'acosh'
+CHECK-NEXT: not available: 'acoshf'
+CHECK-NEXT: not available: 'acoshl'
+CHECK-NEXT: not available: 'acosl'
+CHECK-NEXT: not available: 'aligned_alloc'
+CHECK-NEXT: not available: 'asin'
+CHECK-NEXT: not available: 'asinf'
+CHECK-NEXT: not available: 'asinh'
+CHECK-NEXT: not available: 'asinhf'
+CHECK-NEXT: not available: 'asinhl'
+CHECK-NEXT: not available: 'asinl'
+CHECK-NEXT: not available: 'atan'
+CHECK-NEXT: not available: 'atan2'
+CHECK-NEXT: not available: 'atan2f'
+CHECK-NEXT: not available: 'atan2l'
+CHECK-NEXT: not available: 'atanf'
+CHECK-NEXT: not available: 'atanh'
+CHECK-NEXT: not available: 'atanhf'
+CHECK-NEXT: not available: 'atanhl'
+CHECK-NEXT: not available: 'atanl'
+CHECK-NEXT: not available: 'atof'
+CHECK-NEXT: not available: 'atoi'
+CHECK-NEXT: not available: 'atol'
+CHECK-NEXT: not available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: not available: 'bcopy'
+CHECK-NEXT: not available: 'bzero'
+CHECK-NEXT: not available: 'cabs'
+CHECK-NEXT: not available: 'cabsf'
+CHECK-NEXT: not available: 'cabsl'
+CHECK-NEXT: not available: 'calloc'
+CHECK-NEXT: not available: 'cbrt'
+CHECK-NEXT: not available: 'cbrtf'
+CHECK-NEXT: not available: 'cbrtl'
+CHECK-NEXT: not available: 'ceil'
+CHECK-NEXT: not available: 'ceilf'
+CHECK-NEXT: not available: 'ceill'
+CHECK-NEXT: not available: 'chmod'
+CHECK-NEXT: not available: 'chown'
+CHECK-NEXT: not available: 'clearerr'
+CHECK-NEXT: not available: 'closedir'
+CHECK-NEXT: not available: 'copysign'
+CHECK-NEXT: not available: 'copysignf'
+CHECK-NEXT: not available: 'copysignl'
+CHECK-NEXT: not available: 'cos'
+CHECK-NEXT: not available: 'cosf'
+CHECK-NEXT: not available: 'cosh'
+CHECK-NEXT: not available: 'coshf'
+CHECK-NEXT: not available: 'coshl'
+CHECK-NEXT: not available: 'cosl'
+CHECK-NEXT: not available: 'ctermid'
+CHECK-NEXT: not available: 'erf'
+CHECK-NEXT: not available: 'erff'
+CHECK-NEXT: not available: 'erfl'
+CHECK-NEXT: not available: 'tgamma'
+CHECK-NEXT: not available: 'tgammaf'
+CHECK-NEXT: not available: 'tgammal'
+CHECK-NEXT: not available: 'execl'
+CHECK-NEXT: not available: 'execle'
+CHECK-NEXT: not available: 'execlp'
+CHECK-NEXT: not available: 'execv'
+CHECK-NEXT: not available: 'execvP'
+CHECK-NEXT: not available: 'execve'
+CHECK-NEXT: not available: 'execvp'
+CHECK-NEXT: not available: 'execvpe'
+CHECK-NEXT: not available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: not available: 'exp2'
+CHECK-NEXT: not available: 'exp2f'
+CHECK-NEXT: not available: 'exp2l'
+CHECK-NEXT: not available: 'expf'
+CHECK-NEXT: not available: 'expl'
+CHECK-NEXT: not available: 'expm1'
+CHECK-NEXT: not available: 'expm1f'
+CHECK-NEXT: not available: 'expm1l'
+CHECK-NEXT: not available: 'fabs'
+CHECK-NEXT: not available: 'fabsf'
+CHECK-NEXT: not available: 'fabsl'
+CHECK-NEXT: not available: 'fclose'
+CHECK-NEXT: not available: 'fdopen'
+CHECK-NEXT: not available: 'feof'
+CHECK-NEXT: not available: 'ferror'
+CHECK-NEXT: not available: 'fflush'
+CHECK-NEXT: not available: 'ffs'
+CHECK-NEXT: not available: 'ffsl'
+CHECK-NEXT: not available: 'ffsll'
+CHECK-NEXT: not available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: not available: 'fgetpos'
+CHECK-NEXT: not available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: not available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: not available: 'flockfile'
+CHECK-NEXT: not available: 'floor'
+CHECK-NEXT: not available: 'floorf'
+CHECK-NEXT: not available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: not available: 'fmax'
+CHECK-NEXT: not available: 'fmaxf'
+CHECK-NEXT: not available: 'fmaxl'
+CHECK-NEXT: not available: 'fmin'
+CHECK-NEXT: not available: 'fminf'
+CHECK-NEXT: not available: 'fminl'
+CHECK-NEXT: not available: 'fmaximum_num'
+CHECK-NEXT: not available: 'fmaximum_numf'
+CHECK-NEXT: not available: 'fmaximum_numl'
+CHECK-NEXT: not available: 'fminimum_num'
+CHECK-NEXT: not available: 'fminimum_numf'
+CHECK-NEXT: not available: 'fminimum_numl'
+CHECK-NEXT: not available: 'fmod'
+CHECK-NEXT: not available: 'fmodf'
+CHECK-NEXT: not available: 'fmodl'
+CHECK-NEXT: not available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: not available: 'fork'
+CHECK-NEXT: not available: 'fprintf'
+CHECK-NEXT: not available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: not available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: not available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: not available: 'frexp'
+CHECK-NEXT: not available: 'frexpf'
+CHECK-NEXT: not available: 'frexpl'
+CHECK-NEXT: not available: 'fscanf'
+CHECK-NEXT: not available: 'fseek'
+CHECK-NEXT: not available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: not available: 'fsetpos'
+CHECK-NEXT: not available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: not available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: not available: 'ftell'
+CHECK-NEXT: not available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: not available: 'ftrylockfile'
+CHECK-NEXT: not available: 'funlockfile'
+CHECK-NEXT: not available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: not available: 'getc'
+CHECK-NEXT: not available: 'getc_unlocked'
+CHECK-NEXT: not available: 'getchar'
+CHECK-NEXT: not available: 'getchar_unlocked'
+CHECK-NEXT: not available: 'getenv'
+CHECK-NEXT: not available: 'getitimer'
+CHECK-NEXT: not available: 'getlogin_r'
+CHECK-NEXT: not available: 'getpwnam'
+CHECK-NEXT: not available: 'gets'
+CHECK-NEXT: not available: 'gettimeofday'
+CHECK-NEXT: not available: 'htonl'
+CHECK-NEXT: not available: 'htons'
+CHECK-NEXT: not available: 'hypot'
+CHECK-NEXT: not available: 'hypotf'
+CHECK-NEXT: not available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: not available: 'isascii'
+CHECK-NEXT: not available: 'isdigit'
+CHECK-NEXT: not available: 'labs'
+CHECK-NEXT: not available: 'lchown'
+CHECK-NEXT: not available: 'ldexp'
+CHECK-NEXT: not available: 'ldexpf'
+CHECK-NEXT: not available: 'ldexpl'
+CHECK-NEXT: not available: 'llabs'
+CHECK-NEXT: not available: 'log'
+CHECK-NEXT: not available: 'log10'
+CHECK-NEXT: not available: 'log10f'
+CHECK-NEXT: not available: 'log10l'
+CHECK-NEXT: not available: 'log1p'
+CHECK-NEXT: not available: 'log1pf'
+CHECK-NEXT: not available: 'log1pl'
+CHECK-NEXT: not available: 'log2'
+CHECK-NEXT: not available: 'log2f'
+CHECK-NEXT: not available: 'log2l'
+CHECK-NEXT: not available: 'ilogb'
+CHECK-NEXT: not available: 'ilogbf'
+CHECK-NEXT: not available: 'ilogbl'
+CHECK-NEXT: not available: 'logb'
+CHECK-NEXT: not available: 'logbf'
+CHECK-NEXT: not available: 'logbl'
+CHECK-NEXT: not available: 'logf'
+CHECK-NEXT: not available: 'logl'
+CHECK-NEXT: not available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: not available: 'memccpy'
+CHECK-NEXT: not available: 'memchr'
+CHECK-NEXT: not available: 'memcmp'
+CHECK-NEXT: not available: 'memcpy'
+CHECK-NEXT: not available: 'memmove'
+CHECK-NEXT: not available: 'mempcpy'
+CHECK-NEXT: not available: 'memrchr'
+CHECK-NEXT: not available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: not available: 'mkdir'
+CHECK-NEXT: not available: 'mktime'
+CHECK-NEXT: not available: 'modf'
+CHECK-NEXT: not available: 'modff'
+CHECK-NEXT: not available: 'modfl'
+CHECK-NEXT: not available: 'nan'
+CHECK-NEXT: not available: 'nanf'
+CHECK-NEXT: not available: 'nanl'
+CHECK-NEXT: not available: 'nearbyint'
+CHECK-NEXT: not available: 'nearbyintf'
+CHECK-NEXT: not available: 'nearbyintl'
+CHECK-NEXT: not available: 'ntohl'
+CHECK-NEXT: not available: 'ntohs'
+CHECK-NEXT: not available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: not available: 'opendir'
+CHECK-NEXT: not available: 'pclose'
+CHECK-NEXT: not available: 'perror'
+CHECK-NEXT: not available: 'popen'
+CHECK-NEXT: not available: 'posix_memalign'
+CHECK-NEXT: not available: 'pow'
+CHECK-NEXT: not available: 'powf'
+CHECK-NEXT: not available: 'powl'
+CHECK-NEXT: not available: 'pread'
+CHECK-NEXT: not available: 'printf'
+CHECK-NEXT: not available: 'putc'
+CHECK-NEXT: not available: 'putc_unlocked'
+CHECK-NEXT: not available: 'putchar'
+CHECK-NEXT: not available: 'putchar_unlocked'
+CHECK-NEXT: not available: 'puts'
+CHECK-NEXT: not available: 'pwrite'
+CHECK-NEXT: not available: 'qsort'
+CHECK-NEXT: not available: 'read'
+CHECK-NEXT: not available: 'readlink'
+CHECK-NEXT: not available: 'realloc'
+CHECK-NEXT: not available: 'reallocf'
+CHECK-NEXT: not available: 'reallocarray'
+CHECK-NEXT: not available: 'realpath'
+CHECK-NEXT: not available: 'remainder'
+CHECK-NEXT: not available: 'remainderf'
+CHECK-NEXT: not available: 'remainderl'
+CHECK-NEXT: not available: 'remquo'
+CHECK-NEXT: not available: 'remquof'
+CHECK-NEXT: not available: 'remquol'
+CHECK-NEXT: not available: 'fdim'
+CHECK-NEXT: not available: 'fdimf'
+CHECK-NEXT: not available: 'fdiml'
+CHECK-NEXT: not available: 'remove'
+CHECK-NEXT: not available: 'rename'
+CHECK-NEXT: not available: 'rewind'
+CHECK-NEXT: not available: 'rint'
+CHECK-NEXT: not available: 'rintf'
+CHECK-NEXT: not available: 'rintl'
+CHECK-NEXT: not available: 'rmdir'
+CHECK-NEXT: not available: 'round'
+CHECK-NEXT: not available: 'roundeven'
+CHECK-NEXT: not available: 'roundevenf'
+CHECK-NEXT: not available: 'roundevenl'
+CHECK-NEXT: not available: 'roundf'
+CHECK-NEXT: not available: 'roundl'
+CHECK-NEXT: not available: 'scalbln'
+CHECK-NEXT: not available: 'scalblnf'
+CHECK-NEXT: not available: 'scalblnl'
+CHECK-NEXT: not available: 'scalbn'
+CHECK-NEXT: not available: 'scalbnf'
+CHECK-NEXT: not available: 'scalbnl'
+CHECK-NEXT: not available: 'scanf'
+CHECK-NEXT: not available: 'setbuf'
+CHECK-NEXT: not available: 'setitimer'
+CHECK-NEXT: not available: 'setvbuf'
+CHECK-NEXT: not available: 'sin'
+CHECK-NEXT: not available: 'sinf'
+CHECK-NEXT: not available: 'sinh'
+CHECK-NEXT: not available: 'sinhf'
+CHECK-NEXT: not available: 'sinhl'
+CHECK-NEXT: not available: 'sinl'
+CHECK-NEXT: not available: 'sincos'
+CHECK-NEXT: not available: 'sincosf'
+CHECK-NEXT: not available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: not available: 'snprintf'
+CHECK-NEXT: not available: 'sprintf'
+CHECK-NEXT: not available: 'sqrt'
+CHECK-NEXT: not available: 'sqrtf'
+CHECK-NEXT: not available: 'sqrtl'
+CHECK-NEXT: not available: 'sscanf'
+CHECK-NEXT: not available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: not available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: not available: 'stpcpy'
+CHECK-NEXT: not available: 'stpncpy'
+CHECK-NEXT: not available: 'strcasecmp'
+CHECK-NEXT: not available: 'strcat'
+CHECK-NEXT: not available: 'strchr'
+CHECK-NEXT: not available: 'strcmp'
+CHECK-NEXT: not available: 'strcoll'
+CHECK-NEXT: not available: 'strcpy'
+CHECK-NEXT: not available: 'strcspn'
+CHECK-NEXT: not available: 'strdup'
+CHECK-NEXT: not available: 'strlcat'
+CHECK-NEXT: not available: 'strlcpy'
+CHECK-NEXT: not available: 'strlen'
+CHECK-NEXT: not available: 'strncasecmp'
+CHECK-NEXT: not available: 'strncat'
+CHECK-NEXT: not available: 'strncmp'
+CHECK-NEXT: not available: 'strncpy'
+CHECK-NEXT: not available: 'strndup'
+CHECK-NEXT: not available: 'strnlen'
+CHECK-NEXT: not available: 'strpbrk'
+CHECK-NEXT: not available: 'strrchr'
+CHECK-NEXT: not available: 'strspn'
+CHECK-NEXT: not available: 'strstr'
+CHECK-NEXT: not available: 'strtod'
+CHECK-NEXT: not available: 'strtof'
+CHECK-NEXT: not available: 'strtok'
+CHECK-NEXT: not available: 'strtok_r'
+CHECK-NEXT: not available: 'strtol'
+CHECK-NEXT: not available: 'strtold'
+CHECK-NEXT: not available: 'strtoll'
+CHECK-NEXT: not available: 'strtoul'
+CHECK-NEXT: not available: 'strtoull'
+CHECK-NEXT: not available: 'strxfrm'
+CHECK-NEXT: not available: 'system'
+CHECK-NEXT: not available: 'tan'
+CHECK-NEXT: not available: 'tanf'
+CHECK-NEXT: not available: 'tanh'
+CHECK-NEXT: not available: 'tanhf'
+CHECK-NEXT: not available: 'tanhl'
+CHECK-NEXT: not available: 'tanl'
+CHECK-NEXT: not available: 'times'
+CHECK-NEXT: not available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: not available: 'toascii'
+CHECK-NEXT: not available: 'trunc'
+CHECK-NEXT: not available: 'truncf'
+CHECK-NEXT: not available: 'truncl'
+CHECK-NEXT: not available: 'uname'
+CHECK-NEXT: not available: 'ungetc'
+CHECK-NEXT: not available: 'unlink'
+CHECK-NEXT: not available: 'unsetenv'
+CHECK-NEXT: not available: 'utime'
+CHECK-NEXT: not available: 'utimes'
+CHECK-NEXT: not available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: not available: 'vfprintf'
+CHECK-NEXT: not available: 'vfscanf'
+CHECK-NEXT: not available: 'vprintf'
+CHECK-NEXT: not available: 'vscanf'
+CHECK-NEXT: not available: 'vsnprintf'
+CHECK-NEXT: not available: 'vsprintf'
+CHECK-NEXT: not available: 'vsscanf'
+CHECK-NEXT: not available: 'wcslen'
+CHECK-NEXT: not available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/powerpc64-ibm-aix-xcoff.test b/llvm/test/Analysis/TargetLibraryInfo/powerpc64-ibm-aix-xcoff.test
new file mode 100644
index 0000000..1650d9f
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/powerpc64-ibm-aix-xcoff.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=powerpc64-ibm-aix-xcoff | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 405 available for 'powerpc64-ibm-aix-xcoff'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: available: 'bcopy'
+CHECK-NEXT: available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: available: 'chmod'
+CHECK-NEXT: available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: available: 'ffs'
+CHECK-NEXT: not available: 'ffsl'
+CHECK-NEXT: not available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: available: 'ftrylockfile'
+CHECK-NEXT: available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: not available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: not available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: available: 'getitimer'
+CHECK-NEXT: available: 'getlogin_r'
+CHECK-NEXT: available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: available: 'gettimeofday'
+CHECK-NEXT: available: 'htonl'
+CHECK-NEXT: available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: not available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: available: 'ntohl'
+CHECK-NEXT: available: 'ntohs'
+CHECK-NEXT: available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: available: 'opendir'
+CHECK-NEXT: available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: not available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: not available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: available: 'read'
+CHECK-NEXT: available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: available: 'stpcpy'
+CHECK-NEXT: available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: available: 'unlink'
+CHECK-NEXT: available: 'unsetenv'
+CHECK-NEXT: available: 'utime'
+CHECK-NEXT: available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: available: 'vec_calloc'
+CHECK-NEXT: available: 'vec_free'
+CHECK-NEXT: available: 'vec_malloc'
+CHECK-NEXT: available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/sparc64-unknown-solaris.test b/llvm/test/Analysis/TargetLibraryInfo/sparc64-unknown-solaris.test
new file mode 100644
index 0000000..efbb147
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/sparc64-unknown-solaris.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=sparc64-unknown-solaris | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 403 available for 'sparc64-unknown-solaris'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: available: 'bcmp'
+CHECK-NEXT: available: 'bcopy'
+CHECK-NEXT: available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: available: 'chmod'
+CHECK-NEXT: available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: available: 'ffs'
+CHECK-NEXT: not available: 'ffsl'
+CHECK-NEXT: not available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: available: 'ftrylockfile'
+CHECK-NEXT: available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: not available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: not available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: available: 'getitimer'
+CHECK-NEXT: available: 'getlogin_r'
+CHECK-NEXT: available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: available: 'gettimeofday'
+CHECK-NEXT: available: 'htonl'
+CHECK-NEXT: available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: available: 'ntohl'
+CHECK-NEXT: available: 'ntohs'
+CHECK-NEXT: available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: available: 'opendir'
+CHECK-NEXT: available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: not available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: not available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: available: 'read'
+CHECK-NEXT: available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: available: 'stpcpy'
+CHECK-NEXT: available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: available: 'unlink'
+CHECK-NEXT: available: 'unsetenv'
+CHECK-NEXT: available: 'utime'
+CHECK-NEXT: available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/thumbv7-apple-ios3.0.0.test b/llvm/test/Analysis/TargetLibraryInfo/thumbv7-apple-ios3.0.0.test
new file mode 100644
index 0000000..4cb665b
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/thumbv7-apple-ios3.0.0.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=thumbv7-apple-ios3.0.0 | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 407 available for 'thumbv7-apple-ios3.0.0'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: available: 'bcopy'
+CHECK-NEXT: available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: available: 'chmod'
+CHECK-NEXT: available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: available: 'ffs'
+CHECK-NEXT: available: 'ffsl'
+CHECK-NEXT: available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: available: 'ftrylockfile'
+CHECK-NEXT: available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: not available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: not available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: available: 'getitimer'
+CHECK-NEXT: available: 'getlogin_r'
+CHECK-NEXT: available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: available: 'gettimeofday'
+CHECK-NEXT: available: 'htonl'
+CHECK-NEXT: available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: available: 'memset_pattern16'
+CHECK-NEXT: available: 'memset_pattern4'
+CHECK-NEXT: available: 'memset_pattern8'
+CHECK-NEXT: available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: available: 'ntohl'
+CHECK-NEXT: available: 'ntohs'
+CHECK-NEXT: available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: available: 'opendir'
+CHECK-NEXT: available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: not available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: not available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: available: 'read'
+CHECK-NEXT: available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: available: 'stpcpy'
+CHECK-NEXT: available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: available: 'unlink'
+CHECK-NEXT: available: 'unsetenv'
+CHECK-NEXT: available: 'utime'
+CHECK-NEXT: available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/thumbv7-windows-msvc.test b/llvm/test/Analysis/TargetLibraryInfo/thumbv7-windows-msvc.test
new file mode 100644
index 0000000..dee2a3f
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/thumbv7-windows-msvc.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=thumbv7-windows-msvc | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 402 available for 'thumbv7-windows-msvc'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: available: 'bcopy'
+CHECK-NEXT: available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: available: 'chmod'
+CHECK-NEXT: available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: available: 'ffs'
+CHECK-NEXT: not available: 'ffsl'
+CHECK-NEXT: not available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: available: 'ftrylockfile'
+CHECK-NEXT: available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: not available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: not available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: available: 'getitimer'
+CHECK-NEXT: available: 'getlogin_r'
+CHECK-NEXT: available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: available: 'gettimeofday'
+CHECK-NEXT: available: 'htonl'
+CHECK-NEXT: available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: available: 'ntohl'
+CHECK-NEXT: available: 'ntohs'
+CHECK-NEXT: available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: available: 'opendir'
+CHECK-NEXT: available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: not available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: not available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: available: 'read'
+CHECK-NEXT: available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: available: 'stpcpy'
+CHECK-NEXT: available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: available: 'unlink'
+CHECK-NEXT: available: 'unsetenv'
+CHECK-NEXT: available: 'utime'
+CHECK-NEXT: available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/wasm64-unknown-emscripten.test b/llvm/test/Analysis/TargetLibraryInfo/wasm64-unknown-emscripten.test
new file mode 100644
index 0000000..1722725
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/wasm64-unknown-emscripten.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=wasm64-unknown-emscripten | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 408 available for 'wasm64-unknown-emscripten'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: available: '__small_fprintf'
+CHECK-NEXT: available: '__small_printf'
+CHECK-NEXT: available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: available: 'bcopy'
+CHECK-NEXT: available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: available: 'chmod'
+CHECK-NEXT: available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: available: 'ffs'
+CHECK-NEXT: not available: 'ffsl'
+CHECK-NEXT: not available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: available: 'fiprintf'
+CHECK-NEXT: available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: available: 'ftrylockfile'
+CHECK-NEXT: available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: not available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: not available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: available: 'getitimer'
+CHECK-NEXT: available: 'getlogin_r'
+CHECK-NEXT: available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: available: 'gettimeofday'
+CHECK-NEXT: available: 'htonl'
+CHECK-NEXT: available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: available: 'ntohl'
+CHECK-NEXT: available: 'ntohs'
+CHECK-NEXT: available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: available: 'opendir'
+CHECK-NEXT: available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: not available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: not available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: available: 'read'
+CHECK-NEXT: available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: available: 'stpcpy'
+CHECK-NEXT: available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: available: 'unlink'
+CHECK-NEXT: available: 'unsetenv'
+CHECK-NEXT: available: 'utime'
+CHECK-NEXT: available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/x86_64-apple-darwin10.9.0.test b/llvm/test/Analysis/TargetLibraryInfo/x86_64-apple-darwin10.9.0.test
new file mode 100644
index 0000000..9496e9c
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/x86_64-apple-darwin10.9.0.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=x86_64-apple-darwin10.9.0 | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 410 available for 'x86_64-apple-darwin10.9.0'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: available: 'bcopy'
+CHECK-NEXT: available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: available: 'chmod'
+CHECK-NEXT: available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: available: 'ffs'
+CHECK-NEXT: available: 'ffsl'
+CHECK-NEXT: available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: available: 'ftrylockfile'
+CHECK-NEXT: available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: available: 'getitimer'
+CHECK-NEXT: available: 'getlogin_r'
+CHECK-NEXT: available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: available: 'gettimeofday'
+CHECK-NEXT: available: 'htonl'
+CHECK-NEXT: available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: not available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: available: 'memset_pattern16'
+CHECK-NEXT: available: 'memset_pattern4'
+CHECK-NEXT: available: 'memset_pattern8'
+CHECK-NEXT: available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: available: 'ntohl'
+CHECK-NEXT: available: 'ntohs'
+CHECK-NEXT: available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: available: 'opendir'
+CHECK-NEXT: available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: available: 'read'
+CHECK-NEXT: available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: available: 'stpcpy'
+CHECK-NEXT: available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: available: 'unlink'
+CHECK-NEXT: available: 'unsetenv'
+CHECK-NEXT: available: 'utime'
+CHECK-NEXT: available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/x86_64-apple-darwin10.test b/llvm/test/Analysis/TargetLibraryInfo/x86_64-apple-darwin10.test
new file mode 100644
index 0000000..11ce213
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/x86_64-apple-darwin10.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=x86_64-apple-darwin10 | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 410 available for 'x86_64-apple-darwin10'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: available: 'bcopy'
+CHECK-NEXT: available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: available: 'chmod'
+CHECK-NEXT: available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: available: 'ffs'
+CHECK-NEXT: available: 'ffsl'
+CHECK-NEXT: available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: available: 'ftrylockfile'
+CHECK-NEXT: available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: available: 'getitimer'
+CHECK-NEXT: available: 'getlogin_r'
+CHECK-NEXT: available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: available: 'gettimeofday'
+CHECK-NEXT: available: 'htonl'
+CHECK-NEXT: available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: not available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: available: 'memset_pattern16'
+CHECK-NEXT: available: 'memset_pattern4'
+CHECK-NEXT: available: 'memset_pattern8'
+CHECK-NEXT: available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: available: 'ntohl'
+CHECK-NEXT: available: 'ntohs'
+CHECK-NEXT: available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: available: 'opendir'
+CHECK-NEXT: available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: available: 'read'
+CHECK-NEXT: available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: available: 'stpcpy'
+CHECK-NEXT: available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: available: 'unlink'
+CHECK-NEXT: available: 'unsetenv'
+CHECK-NEXT: available: 'utime'
+CHECK-NEXT: available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/x86_64-apple-macosx10.5.0.test b/llvm/test/Analysis/TargetLibraryInfo/x86_64-apple-macosx10.5.0.test
new file mode 100644
index 0000000..14ac222
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/x86_64-apple-macosx10.5.0.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=x86_64-apple-macosx10.5.0 | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 410 available for 'x86_64-apple-macosx10.5.0'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: available: 'bcopy'
+CHECK-NEXT: available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: available: 'chmod'
+CHECK-NEXT: available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: available: 'ffs'
+CHECK-NEXT: available: 'ffsl'
+CHECK-NEXT: available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: available: 'ftrylockfile'
+CHECK-NEXT: available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: available: 'getitimer'
+CHECK-NEXT: available: 'getlogin_r'
+CHECK-NEXT: available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: available: 'gettimeofday'
+CHECK-NEXT: available: 'htonl'
+CHECK-NEXT: available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: not available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: available: 'memset_pattern16'
+CHECK-NEXT: available: 'memset_pattern4'
+CHECK-NEXT: available: 'memset_pattern8'
+CHECK-NEXT: available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: available: 'ntohl'
+CHECK-NEXT: available: 'ntohs'
+CHECK-NEXT: available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: available: 'opendir'
+CHECK-NEXT: available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: available: 'read'
+CHECK-NEXT: available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: available: 'stpcpy'
+CHECK-NEXT: available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: available: 'unlink'
+CHECK-NEXT: available: 'unsetenv'
+CHECK-NEXT: available: 'utime'
+CHECK-NEXT: available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/x86_64-pc-cygwin.test b/llvm/test/Analysis/TargetLibraryInfo/x86_64-pc-cygwin.test
new file mode 100644
index 0000000..c23002c
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/x86_64-pc-cygwin.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=x86_64-pc-cygwin | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 402 available for 'x86_64-pc-cygwin'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: available: 'bcopy'
+CHECK-NEXT: available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: available: 'chmod'
+CHECK-NEXT: available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: available: 'ffs'
+CHECK-NEXT: not available: 'ffsl'
+CHECK-NEXT: not available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: available: 'ftrylockfile'
+CHECK-NEXT: available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: not available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: not available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: available: 'getitimer'
+CHECK-NEXT: available: 'getlogin_r'
+CHECK-NEXT: available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: available: 'gettimeofday'
+CHECK-NEXT: available: 'htonl'
+CHECK-NEXT: available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: available: 'ntohl'
+CHECK-NEXT: available: 'ntohs'
+CHECK-NEXT: available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: available: 'opendir'
+CHECK-NEXT: available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: not available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: not available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: available: 'read'
+CHECK-NEXT: available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: available: 'stpcpy'
+CHECK-NEXT: available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: available: 'unlink'
+CHECK-NEXT: available: 'unsetenv'
+CHECK-NEXT: available: 'utime'
+CHECK-NEXT: available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/x86_64-pc-windows-msvc.test b/llvm/test/Analysis/TargetLibraryInfo/x86_64-pc-windows-msvc.test
new file mode 100644
index 0000000..d4dda65
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/x86_64-pc-windows-msvc.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=x86_64-pc-windows-msvc | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 275 available for 'x86_64-pc-windows-msvc'
+CHECK-NEXT: available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: not available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: not available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: not available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: not available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: not available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: not available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: not available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: not available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: not available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: not available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: not available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: not available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: not available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '__size_returning_new'
+CHECK-NEXT: not available: '__size_returning_new_hot_cold'
+CHECK-NEXT: not available: '__size_returning_new_aligned'
+CHECK-NEXT: not available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: not available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: not available: 'acoshl'
+CHECK-NEXT: not available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: not available: 'asinhl'
+CHECK-NEXT: not available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: not available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: not available: 'atanhl'
+CHECK-NEXT: not available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: not available: 'bcopy'
+CHECK-NEXT: not available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: not available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: not available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: not available: 'ceill'
+CHECK-NEXT: not available: 'chmod'
+CHECK-NEXT: not available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: not available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: not available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: not available: 'coshl'
+CHECK-NEXT: not available: 'cosl'
+CHECK-NEXT: not available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: not available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: not available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: not available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: not available: 'fabsf'
+CHECK-NEXT: not available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: not available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: not available: 'ffs'
+CHECK-NEXT: not available: 'ffsl'
+CHECK-NEXT: not available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: not available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: not available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: not available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: not available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: not available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: not available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: not available: 'frexpf'
+CHECK-NEXT: not available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: not available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: not available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: not available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: not available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: not available: 'ftrylockfile'
+CHECK-NEXT: not available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: not available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: not available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: not available: 'getitimer'
+CHECK-NEXT: not available: 'getlogin_r'
+CHECK-NEXT: not available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: not available: 'gettimeofday'
+CHECK-NEXT: not available: 'htonl'
+CHECK-NEXT: not available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: not available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: not available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: not available: 'ldexpf'
+CHECK-NEXT: not available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: not available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: not available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: not available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: not available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: not available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: not available: 'logl'
+CHECK-NEXT: not available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: not available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: not available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: not available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: not available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: not available: 'nearbyintl'
+CHECK-NEXT: not available: 'ntohl'
+CHECK-NEXT: not available: 'ntohs'
+CHECK-NEXT: not available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: not available: 'opendir'
+CHECK-NEXT: not available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: not available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: not available: 'powl'
+CHECK-NEXT: not available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: not available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: not available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: not available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: not available: 'read'
+CHECK-NEXT: not available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: not available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: not available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: not available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: not available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: not available: 'rintl'
+CHECK-NEXT: not available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: not available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: not available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: not available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: not available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: not available: 'sinhl'
+CHECK-NEXT: not available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: not available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: not available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: not available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: not available: 'stpcpy'
+CHECK-NEXT: not available: 'stpncpy'
+CHECK-NEXT: not available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: not available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: not available: 'tanhl'
+CHECK-NEXT: not available: 'tanl'
+CHECK-NEXT: not available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: not available: 'truncl'
+CHECK-NEXT: not available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: not available: 'unlink'
+CHECK-NEXT: not available: 'unsetenv'
+CHECK-NEXT: not available: 'utime'
+CHECK-NEXT: not available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: not available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/x86_64-pc-windows-msvc17.test b/llvm/test/Analysis/TargetLibraryInfo/x86_64-pc-windows-msvc17.test
new file mode 100644
index 0000000..2653cba
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/x86_64-pc-windows-msvc17.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=x86_64-pc-windows-msvc17 | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 242 available for 'x86_64-pc-windows-msvc17'
+CHECK-NEXT: available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: not available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: not available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: not available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: not available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: not available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: not available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: not available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: not available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: not available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: not available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: not available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: not available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: not available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '__size_returning_new'
+CHECK-NEXT: not available: '__size_returning_new_hot_cold'
+CHECK-NEXT: not available: '__size_returning_new_aligned'
+CHECK-NEXT: not available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: not available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: not available: 'acosh'
+CHECK-NEXT: not available: 'acoshf'
+CHECK-NEXT: not available: 'acoshl'
+CHECK-NEXT: not available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: not available: 'asinh'
+CHECK-NEXT: not available: 'asinhf'
+CHECK-NEXT: not available: 'asinhl'
+CHECK-NEXT: not available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: not available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: not available: 'atanh'
+CHECK-NEXT: not available: 'atanhf'
+CHECK-NEXT: not available: 'atanhl'
+CHECK-NEXT: not available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: not available: 'bcopy'
+CHECK-NEXT: not available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: not available: 'cabsf'
+CHECK-NEXT: not available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: not available: 'cbrt'
+CHECK-NEXT: not available: 'cbrtf'
+CHECK-NEXT: not available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: not available: 'ceill'
+CHECK-NEXT: not available: 'chmod'
+CHECK-NEXT: not available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: not available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: not available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: not available: 'coshl'
+CHECK-NEXT: not available: 'cosl'
+CHECK-NEXT: not available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: not available: 'exp2'
+CHECK-NEXT: not available: 'exp2f'
+CHECK-NEXT: not available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: not available: 'expl'
+CHECK-NEXT: not available: 'expm1'
+CHECK-NEXT: not available: 'expm1f'
+CHECK-NEXT: not available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: not available: 'fabsf'
+CHECK-NEXT: not available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: not available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: not available: 'ffs'
+CHECK-NEXT: not available: 'ffsl'
+CHECK-NEXT: not available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: not available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: not available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: not available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: not available: 'fmax'
+CHECK-NEXT: not available: 'fmaxf'
+CHECK-NEXT: not available: 'fmaxl'
+CHECK-NEXT: not available: 'fmin'
+CHECK-NEXT: not available: 'fminf'
+CHECK-NEXT: not available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: not available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: not available: 'frexpf'
+CHECK-NEXT: not available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: not available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: not available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: not available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: not available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: not available: 'ftrylockfile'
+CHECK-NEXT: not available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: not available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: not available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: not available: 'getitimer'
+CHECK-NEXT: not available: 'getlogin_r'
+CHECK-NEXT: not available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: not available: 'gettimeofday'
+CHECK-NEXT: not available: 'htonl'
+CHECK-NEXT: not available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: not available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: not available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: not available: 'ldexpf'
+CHECK-NEXT: not available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: not available: 'log10l'
+CHECK-NEXT: not available: 'log1p'
+CHECK-NEXT: not available: 'log1pf'
+CHECK-NEXT: not available: 'log1pl'
+CHECK-NEXT: not available: 'log2'
+CHECK-NEXT: not available: 'log2f'
+CHECK-NEXT: not available: 'log2l'
+CHECK-NEXT: not available: 'ilogb'
+CHECK-NEXT: not available: 'ilogbf'
+CHECK-NEXT: not available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: not available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: not available: 'logl'
+CHECK-NEXT: not available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: not available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: not available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: not available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: not available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: not available: 'nearbyintl'
+CHECK-NEXT: not available: 'ntohl'
+CHECK-NEXT: not available: 'ntohs'
+CHECK-NEXT: not available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: not available: 'opendir'
+CHECK-NEXT: not available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: not available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: not available: 'powl'
+CHECK-NEXT: not available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: not available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: not available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: not available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: not available: 'read'
+CHECK-NEXT: not available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: not available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: not available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: not available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: not available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: not available: 'rint'
+CHECK-NEXT: not available: 'rintf'
+CHECK-NEXT: not available: 'rintl'
+CHECK-NEXT: not available: 'rmdir'
+CHECK-NEXT: not available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: not available: 'roundf'
+CHECK-NEXT: not available: 'roundl'
+CHECK-NEXT: not available: 'scalbln'
+CHECK-NEXT: not available: 'scalblnf'
+CHECK-NEXT: not available: 'scalblnl'
+CHECK-NEXT: not available: 'scalbn'
+CHECK-NEXT: not available: 'scalbnf'
+CHECK-NEXT: not available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: not available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: not available: 'sinhl'
+CHECK-NEXT: not available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: not available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: not available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: not available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: not available: 'stpcpy'
+CHECK-NEXT: not available: 'stpncpy'
+CHECK-NEXT: not available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: not available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: not available: 'tanhl'
+CHECK-NEXT: not available: 'tanl'
+CHECK-NEXT: not available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: not available: 'trunc'
+CHECK-NEXT: not available: 'truncf'
+CHECK-NEXT: not available: 'truncl'
+CHECK-NEXT: not available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: not available: 'unlink'
+CHECK-NEXT: not available: 'unsetenv'
+CHECK-NEXT: not available: 'utime'
+CHECK-NEXT: not available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: not available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/x86_64-pc-windows-msvc19.test b/llvm/test/Analysis/TargetLibraryInfo/x86_64-pc-windows-msvc19.test
new file mode 100644
index 0000000..0844142
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/x86_64-pc-windows-msvc19.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=x86_64-pc-windows-msvc19 | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 275 available for 'x86_64-pc-windows-msvc19'
+CHECK-NEXT: available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: not available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: not available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: not available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: not available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: not available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: not available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: not available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: not available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: not available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: not available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: not available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: not available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: not available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '__size_returning_new'
+CHECK-NEXT: not available: '__size_returning_new_hot_cold'
+CHECK-NEXT: not available: '__size_returning_new_aligned'
+CHECK-NEXT: not available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: not available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: not available: 'acoshl'
+CHECK-NEXT: not available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: not available: 'asinhl'
+CHECK-NEXT: not available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: not available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: not available: 'atanhl'
+CHECK-NEXT: not available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: not available: 'bcopy'
+CHECK-NEXT: not available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: not available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: not available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: not available: 'ceill'
+CHECK-NEXT: not available: 'chmod'
+CHECK-NEXT: not available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: not available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: not available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: not available: 'coshl'
+CHECK-NEXT: not available: 'cosl'
+CHECK-NEXT: not available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: not available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: not available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: not available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: not available: 'fabsf'
+CHECK-NEXT: not available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: not available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: not available: 'ffs'
+CHECK-NEXT: not available: 'ffsl'
+CHECK-NEXT: not available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: not available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: not available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: not available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: not available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: not available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: not available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: not available: 'frexpf'
+CHECK-NEXT: not available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: not available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: not available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: not available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: not available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: not available: 'ftrylockfile'
+CHECK-NEXT: not available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: not available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: not available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: not available: 'getitimer'
+CHECK-NEXT: not available: 'getlogin_r'
+CHECK-NEXT: not available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: not available: 'gettimeofday'
+CHECK-NEXT: not available: 'htonl'
+CHECK-NEXT: not available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: not available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: not available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: not available: 'ldexpf'
+CHECK-NEXT: not available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: not available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: not available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: not available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: not available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: not available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: not available: 'logl'
+CHECK-NEXT: not available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: not available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: not available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: not available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: not available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: not available: 'nearbyintl'
+CHECK-NEXT: not available: 'ntohl'
+CHECK-NEXT: not available: 'ntohs'
+CHECK-NEXT: not available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: not available: 'opendir'
+CHECK-NEXT: not available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: not available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: not available: 'powl'
+CHECK-NEXT: not available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: not available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: not available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: not available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: not available: 'read'
+CHECK-NEXT: not available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: not available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: not available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: not available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: not available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: not available: 'rintl'
+CHECK-NEXT: not available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: not available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: not available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: not available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: not available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: not available: 'sinhl'
+CHECK-NEXT: not available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: not available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: not available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: not available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: not available: 'stpcpy'
+CHECK-NEXT: not available: 'stpncpy'
+CHECK-NEXT: not available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: not available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: not available: 'tanhl'
+CHECK-NEXT: not available: 'tanl'
+CHECK-NEXT: not available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: not available: 'truncl'
+CHECK-NEXT: not available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: not available: 'unlink'
+CHECK-NEXT: not available: 'unsetenv'
+CHECK-NEXT: not available: 'utime'
+CHECK-NEXT: not available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: not available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/x86_64-scei-ps4.test b/llvm/test/Analysis/TargetLibraryInfo/x86_64-scei-ps4.test
new file mode 100644
index 0000000..2eae35f
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/x86_64-scei-ps4.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=x86_64-scei-ps4 | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 289 available for 'x86_64-scei-ps4'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: not available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: not available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: not available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: not available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: not available: '__atomic_load'
+CHECK-NEXT: not available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: not available: '__kmpc_alloc_shared'
+CHECK-NEXT: not available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: not available: '__memccpy_chk'
+CHECK-NEXT: not available: '__memcpy_chk'
+CHECK-NEXT: not available: '__memmove_chk'
+CHECK-NEXT: not available: '__mempcpy_chk'
+CHECK-NEXT: not available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: not available: '__snprintf_chk'
+CHECK-NEXT: not available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: not available: '__stpcpy_chk'
+CHECK-NEXT: not available: '__stpncpy_chk'
+CHECK-NEXT: not available: '__strcat_chk'
+CHECK-NEXT: not available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: not available: '__strlcat_chk'
+CHECK-NEXT: not available: '__strlcpy_chk'
+CHECK-NEXT: not available: '__strlen_chk'
+CHECK-NEXT: not available: '__strncat_chk'
+CHECK-NEXT: not available: '__strncpy_chk'
+CHECK-NEXT: not available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: not available: '__vsnprintf_chk'
+CHECK-NEXT: not available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: not available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: not available: 'bcopy'
+CHECK-NEXT: not available: 'bzero'
+CHECK-NEXT: not available: 'cabs'
+CHECK-NEXT: not available: 'cabsf'
+CHECK-NEXT: not available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: not available: 'chmod'
+CHECK-NEXT: not available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: not available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: not available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: not available: 'execl'
+CHECK-NEXT: not available: 'execle'
+CHECK-NEXT: not available: 'execlp'
+CHECK-NEXT: not available: 'execv'
+CHECK-NEXT: not available: 'execvP'
+CHECK-NEXT: not available: 'execve'
+CHECK-NEXT: not available: 'execvp'
+CHECK-NEXT: not available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: not available: 'ffs'
+CHECK-NEXT: not available: 'ffsl'
+CHECK-NEXT: not available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: not available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: not available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: not available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: not available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: not available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: not available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: not available: 'ftrylockfile'
+CHECK-NEXT: not available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: not available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: not available: 'getchar_unlocked'
+CHECK-NEXT: not available: 'getenv'
+CHECK-NEXT: not available: 'getitimer'
+CHECK-NEXT: not available: 'getlogin_r'
+CHECK-NEXT: not available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: not available: 'gettimeofday'
+CHECK-NEXT: not available: 'htonl'
+CHECK-NEXT: not available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: not available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: not available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: not available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: available: 'memalign'
+CHECK-NEXT: not available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: not available: 'mempcpy'
+CHECK-NEXT: not available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: not available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: not available: 'ntohl'
+CHECK-NEXT: not available: 'ntohs'
+CHECK-NEXT: not available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: not available: 'opendir'
+CHECK-NEXT: not available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: not available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: not available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: not available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: not available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: not available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: not available: 'read'
+CHECK-NEXT: not available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: not available: 'reallocf'
+CHECK-NEXT: not available: 'reallocarray'
+CHECK-NEXT: not available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: not available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: not available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: not available: 'roundeven'
+CHECK-NEXT: not available: 'roundevenf'
+CHECK-NEXT: not available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: not available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: not available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: not available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: not available: 'stpcpy'
+CHECK-NEXT: not available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: not available: 'strlcat'
+CHECK-NEXT: not available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: not available: 'strndup'
+CHECK-NEXT: not available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: not available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: not available: 'times'
+CHECK-NEXT: not available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: not available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: not available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: not available: 'unlink'
+CHECK-NEXT: not available: 'unsetenv'
+CHECK-NEXT: not available: 'utime'
+CHECK-NEXT: not available: 'utimes'
+CHECK-NEXT: not available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: not available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/x86_64-sie-ps5.test b/llvm/test/Analysis/TargetLibraryInfo/x86_64-sie-ps5.test
new file mode 100644
index 0000000..9cc6cb7
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/x86_64-sie-ps5.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=x86_64-sie-ps5 | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 289 available for 'x86_64-sie-ps5'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: not available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: not available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: not available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: not available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: not available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: not available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: not available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: not available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: not available: '__atomic_load'
+CHECK-NEXT: not available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: not available: '__kmpc_alloc_shared'
+CHECK-NEXT: not available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: not available: '__memccpy_chk'
+CHECK-NEXT: not available: '__memcpy_chk'
+CHECK-NEXT: not available: '__memmove_chk'
+CHECK-NEXT: not available: '__mempcpy_chk'
+CHECK-NEXT: not available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: not available: '__snprintf_chk'
+CHECK-NEXT: not available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: not available: '__stpcpy_chk'
+CHECK-NEXT: not available: '__stpncpy_chk'
+CHECK-NEXT: not available: '__strcat_chk'
+CHECK-NEXT: not available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: not available: '__strlcat_chk'
+CHECK-NEXT: not available: '__strlcpy_chk'
+CHECK-NEXT: not available: '__strlen_chk'
+CHECK-NEXT: not available: '__strncat_chk'
+CHECK-NEXT: not available: '__strncpy_chk'
+CHECK-NEXT: not available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: not available: '__vsnprintf_chk'
+CHECK-NEXT: not available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: not available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: not available: 'bcopy'
+CHECK-NEXT: not available: 'bzero'
+CHECK-NEXT: not available: 'cabs'
+CHECK-NEXT: not available: 'cabsf'
+CHECK-NEXT: not available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: not available: 'chmod'
+CHECK-NEXT: not available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: not available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: not available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: not available: 'execl'
+CHECK-NEXT: not available: 'execle'
+CHECK-NEXT: not available: 'execlp'
+CHECK-NEXT: not available: 'execv'
+CHECK-NEXT: not available: 'execvP'
+CHECK-NEXT: not available: 'execve'
+CHECK-NEXT: not available: 'execvp'
+CHECK-NEXT: not available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: not available: 'ffs'
+CHECK-NEXT: not available: 'ffsl'
+CHECK-NEXT: not available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: not available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: not available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: not available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: not available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: not available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: not available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: not available: 'ftrylockfile'
+CHECK-NEXT: not available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: not available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: not available: 'getchar_unlocked'
+CHECK-NEXT: not available: 'getenv'
+CHECK-NEXT: not available: 'getitimer'
+CHECK-NEXT: not available: 'getlogin_r'
+CHECK-NEXT: not available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: not available: 'gettimeofday'
+CHECK-NEXT: not available: 'htonl'
+CHECK-NEXT: not available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: not available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: not available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: not available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: available: 'memalign'
+CHECK-NEXT: not available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: not available: 'mempcpy'
+CHECK-NEXT: not available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: not available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: not available: 'ntohl'
+CHECK-NEXT: not available: 'ntohs'
+CHECK-NEXT: not available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: not available: 'opendir'
+CHECK-NEXT: not available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: not available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: not available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: not available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: not available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: not available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: not available: 'read'
+CHECK-NEXT: not available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: not available: 'reallocf'
+CHECK-NEXT: not available: 'reallocarray'
+CHECK-NEXT: not available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: not available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: not available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: not available: 'roundeven'
+CHECK-NEXT: not available: 'roundevenf'
+CHECK-NEXT: not available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: not available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: not available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: not available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: not available: 'stpcpy'
+CHECK-NEXT: not available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: not available: 'strlcat'
+CHECK-NEXT: not available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: not available: 'strndup'
+CHECK-NEXT: not available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: not available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: not available: 'times'
+CHECK-NEXT: not available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: not available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: not available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: not available: 'unlink'
+CHECK-NEXT: not available: 'unsetenv'
+CHECK-NEXT: not available: 'utime'
+CHECK-NEXT: not available: 'utimes'
+CHECK-NEXT: not available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: not available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/x86_64-unknown-freebsd.test b/llvm/test/Analysis/TargetLibraryInfo/x86_64-unknown-freebsd.test
new file mode 100644
index 0000000..72c855a
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/x86_64-unknown-freebsd.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=x86_64-unknown-freebsd | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 408 available for 'x86_64-unknown-freebsd'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: available: 'bcmp'
+CHECK-NEXT: available: 'bcopy'
+CHECK-NEXT: available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: available: 'chmod'
+CHECK-NEXT: available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: available: 'ffs'
+CHECK-NEXT: available: 'ffsl'
+CHECK-NEXT: available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: available: 'fls'
+CHECK-NEXT: available: 'flsl'
+CHECK-NEXT: available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: available: 'ftrylockfile'
+CHECK-NEXT: available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: not available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: not available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: available: 'getitimer'
+CHECK-NEXT: available: 'getlogin_r'
+CHECK-NEXT: available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: available: 'gettimeofday'
+CHECK-NEXT: available: 'htonl'
+CHECK-NEXT: available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: available: 'ntohl'
+CHECK-NEXT: available: 'ntohs'
+CHECK-NEXT: available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: available: 'opendir'
+CHECK-NEXT: available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: not available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: not available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: available: 'read'
+CHECK-NEXT: available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: available: 'stpcpy'
+CHECK-NEXT: available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: available: 'unlink'
+CHECK-NEXT: available: 'unsetenv'
+CHECK-NEXT: available: 'utime'
+CHECK-NEXT: available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/x86_64-unknown-unknown-gnu.test b/llvm/test/Analysis/TargetLibraryInfo/x86_64-unknown-unknown-gnu.test
new file mode 100644
index 0000000..1dd39c1
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/x86_64-unknown-unknown-gnu.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=x86_64-unknown-unknown-gnu | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 402 available for 'x86_64-unknown-unknown-gnu'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: available: 'bcopy'
+CHECK-NEXT: available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: available: 'chmod'
+CHECK-NEXT: available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: available: 'ffs'
+CHECK-NEXT: not available: 'ffsl'
+CHECK-NEXT: not available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: available: 'ftrylockfile'
+CHECK-NEXT: available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: not available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: not available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: available: 'getitimer'
+CHECK-NEXT: available: 'getlogin_r'
+CHECK-NEXT: available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: available: 'gettimeofday'
+CHECK-NEXT: available: 'htonl'
+CHECK-NEXT: available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: available: 'ntohl'
+CHECK-NEXT: available: 'ntohs'
+CHECK-NEXT: available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: available: 'opendir'
+CHECK-NEXT: available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: not available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: not available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: available: 'read'
+CHECK-NEXT: available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: available: 'stpcpy'
+CHECK-NEXT: available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: available: 'unlink'
+CHECK-NEXT: available: 'unsetenv'
+CHECK-NEXT: available: 'utime'
+CHECK-NEXT: available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/x86_64-unknown-unknown.test b/llvm/test/Analysis/TargetLibraryInfo/x86_64-unknown-unknown.test
new file mode 100644
index 0000000..fccf113
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/x86_64-unknown-unknown.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=x86_64-unknown-unknown | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 402 available for 'x86_64-unknown-unknown'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: available: 'bcopy'
+CHECK-NEXT: available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: available: 'chmod'
+CHECK-NEXT: available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: available: 'ffs'
+CHECK-NEXT: not available: 'ffsl'
+CHECK-NEXT: not available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: not available: 'fiprintf'
+CHECK-NEXT: available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: available: 'ftrylockfile'
+CHECK-NEXT: available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: not available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: not available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: available: 'getitimer'
+CHECK-NEXT: available: 'getlogin_r'
+CHECK-NEXT: available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: available: 'gettimeofday'
+CHECK-NEXT: available: 'htonl'
+CHECK-NEXT: available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: not available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: available: 'ntohl'
+CHECK-NEXT: available: 'ntohs'
+CHECK-NEXT: available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: available: 'opendir'
+CHECK-NEXT: available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: not available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: not available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: available: 'read'
+CHECK-NEXT: available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: not available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: available: 'stpcpy'
+CHECK-NEXT: available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: available: 'unlink'
+CHECK-NEXT: available: 'unsetenv'
+CHECK-NEXT: available: 'utime'
+CHECK-NEXT: available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: available: 'write'
diff --git a/llvm/test/Analysis/TargetLibraryInfo/xcore-xmos-elf.test b/llvm/test/Analysis/TargetLibraryInfo/xcore-xmos-elf.test
new file mode 100644
index 0000000..1f33548
--- /dev/null
+++ b/llvm/test/Analysis/TargetLibraryInfo/xcore-xmos-elf.test
@@ -0,0 +1,526 @@
+# RUN: llvm-tli-checker --dump-tli --triple=xcore-xmos-elf | FileCheck %s
+
+CHECK: TLI knows 523 symbols, 405 available for 'xcore-xmos-elf'
+CHECK-NEXT: not available: '??2@YAPAXI@Z' aka void * __cdecl operator new(unsigned int)
+CHECK-NEXT: not available: '??2@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??2@YAPEAX_K@Z' aka void * __cdecl operator new(unsigned __int64)
+CHECK-NEXT: not available: '??2@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new(unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPAXI@Z' aka void __cdecl operator delete(void *, unsigned int)
+CHECK-NEXT: not available: '??3@YAXPEAX@Z' aka void __cdecl operator delete(void *)
+CHECK-NEXT: not available: '??3@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete(void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??3@YAXPEAX_K@Z' aka void __cdecl operator delete(void *, unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPAXI@Z' aka void * __cdecl operator new[](unsigned int)
+CHECK-NEXT: not available: '??_U@YAPAXIABUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned int, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_U@YAPEAX_K@Z' aka void * __cdecl operator new[](unsigned __int64)
+CHECK-NEXT: not available: '??_U@YAPEAX_KAEBUnothrow_t@std@@@Z' aka void * __cdecl operator new[](unsigned __int64, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPAXABUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPAXI@Z' aka void __cdecl operator delete[](void *, unsigned int)
+CHECK-NEXT: not available: '??_V@YAXPEAX@Z' aka void __cdecl operator delete[](void *)
+CHECK-NEXT: not available: '??_V@YAXPEAXAEBUnothrow_t@std@@@Z' aka void __cdecl operator delete[](void *, struct std::nothrow_t const &)
+CHECK-NEXT: not available: '??_V@YAXPEAX_K@Z' aka void __cdecl operator delete[](void *, unsigned __int64)
+CHECK-NEXT: not available: '_IO_getc'
+CHECK-NEXT: not available: '_IO_putc'
+CHECK-NEXT: available: '_ZdaPv' aka operator delete[](void*)
+CHECK-NEXT: available: '_ZdaPvRKSt9nothrow_t' aka operator delete[](void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_t' aka operator delete[](void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvSt11align_val_tRKSt9nothrow_t' aka operator delete[](void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdaPvj' aka operator delete[](void*, unsigned int)
+CHECK-NEXT: available: '_ZdaPvjSt11align_val_t' aka operator delete[](void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdaPvm' aka operator delete[](void*, unsigned long)
+CHECK-NEXT: available: '_ZdaPvmSt11align_val_t' aka operator delete[](void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPv' aka operator delete(void*)
+CHECK-NEXT: available: '_ZdlPvRKSt9nothrow_t' aka operator delete(void*, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_t' aka operator delete(void*, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvSt11align_val_tRKSt9nothrow_t' aka operator delete(void*, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZdlPvj' aka operator delete(void*, unsigned int)
+CHECK-NEXT: available: '_ZdlPvjSt11align_val_t' aka operator delete(void*, unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZdlPvm' aka operator delete(void*, unsigned long)
+CHECK-NEXT: available: '_ZdlPvmSt11align_val_t' aka operator delete(void*, unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_Znaj' aka operator new[](unsigned int)
+CHECK-NEXT: available: '_ZnajRKSt9nothrow_t' aka operator new[](unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnajSt11align_val_t' aka operator new[](unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnajSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znam' aka operator new[](unsigned long)
+CHECK-NEXT: available: '_Znam12__hot_cold_t' aka operator new[](unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t' aka operator new[](unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t' aka operator new[](unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new[](unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_Znwj' aka operator new(unsigned int)
+CHECK-NEXT: available: '_ZnwjRKSt9nothrow_t' aka operator new(unsigned int, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwjSt11align_val_t' aka operator new(unsigned int, std::align_val_t)
+CHECK-NEXT: available: '_ZnwjSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned int, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_Znwm' aka operator new(unsigned long)
+CHECK-NEXT: available: '_Znwm12__hot_cold_t' aka operator new(unsigned long, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t' aka operator new(unsigned long, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t' aka operator new(unsigned long, std::align_val_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, __hot_cold_t)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&)
+CHECK-NEXT: available: '_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t' aka operator new(unsigned long, std::align_val_t, std::nothrow_t const&, __hot_cold_t)
+CHECK-NEXT: available: '__size_returning_new'
+CHECK-NEXT: available: '__size_returning_new_hot_cold'
+CHECK-NEXT: available: '__size_returning_new_aligned'
+CHECK-NEXT: available: '__size_returning_new_aligned_hot_cold'
+CHECK-NEXT: not available: '__acos_finite'
+CHECK-NEXT: not available: '__acosf_finite'
+CHECK-NEXT: not available: '__acosh_finite'
+CHECK-NEXT: not available: '__acoshf_finite'
+CHECK-NEXT: not available: '__acoshl_finite'
+CHECK-NEXT: not available: '__acosl_finite'
+CHECK-NEXT: not available: '__asin_finite'
+CHECK-NEXT: not available: '__asinf_finite'
+CHECK-NEXT: not available: '__asinl_finite'
+CHECK-NEXT: not available: '__atan2_finite'
+CHECK-NEXT: not available: '__atan2f_finite'
+CHECK-NEXT: not available: '__atan2l_finite'
+CHECK-NEXT: not available: '__atanh_finite'
+CHECK-NEXT: not available: '__atanhf_finite'
+CHECK-NEXT: not available: '__atanhl_finite'
+CHECK-NEXT: available: '__atomic_load'
+CHECK-NEXT: available: '__atomic_store'
+CHECK-NEXT: not available: '__cosh_finite'
+CHECK-NEXT: not available: '__coshf_finite'
+CHECK-NEXT: not available: '__coshl_finite'
+CHECK-NEXT: not available: '__cospi'
+CHECK-NEXT: not available: '__cospif'
+CHECK-NEXT: available: '__cxa_atexit'
+CHECK-NEXT: available: 'atexit'
+CHECK-NEXT: available: 'abort'
+CHECK-NEXT: available: 'exit'
+CHECK-NEXT: available: '_Exit'
+CHECK-NEXT: available: '_ZSt9terminatev' aka std::terminate()
+CHECK-NEXT: available: '__cxa_throw'
+CHECK-NEXT: available: '__cxa_guard_abort'
+CHECK-NEXT: available: '__cxa_guard_acquire'
+CHECK-NEXT: available: '__cxa_guard_release'
+CHECK-NEXT: not available: '__exp10_finite'
+CHECK-NEXT: not available: '__exp10f_finite'
+CHECK-NEXT: not available: '__exp10l_finite'
+CHECK-NEXT: not available: '__exp2_finite'
+CHECK-NEXT: not available: '__exp2f_finite'
+CHECK-NEXT: not available: '__exp2l_finite'
+CHECK-NEXT: not available: '__exp_finite'
+CHECK-NEXT: not available: '__expf_finite'
+CHECK-NEXT: not available: '__expl_finite'
+CHECK-NEXT: not available: '__isoc99_scanf'
+CHECK-NEXT: not available: '__isoc99_sscanf'
+CHECK-NEXT: available: '__kmpc_alloc_shared'
+CHECK-NEXT: available: '__kmpc_free_shared'
+CHECK-NEXT: not available: '__log10_finite'
+CHECK-NEXT: not available: '__log10f_finite'
+CHECK-NEXT: not available: '__log10l_finite'
+CHECK-NEXT: not available: '__log2_finite'
+CHECK-NEXT: not available: '__log2f_finite'
+CHECK-NEXT: not available: '__log2l_finite'
+CHECK-NEXT: not available: '__log_finite'
+CHECK-NEXT: not available: '__logf_finite'
+CHECK-NEXT: not available: '__logl_finite'
+CHECK-NEXT: available: '__memccpy_chk'
+CHECK-NEXT: available: '__memcpy_chk'
+CHECK-NEXT: available: '__memmove_chk'
+CHECK-NEXT: available: '__mempcpy_chk'
+CHECK-NEXT: available: '__memset_chk'
+CHECK-NEXT: not available: '__nvvm_reflect'
+CHECK-NEXT: not available: '__pow_finite'
+CHECK-NEXT: not available: '__powf_finite'
+CHECK-NEXT: not available: '__powl_finite'
+CHECK-NEXT: not available: '__sincospi_stret'
+CHECK-NEXT: not available: '__sincospif_stret'
+CHECK-NEXT: not available: '__sinh_finite'
+CHECK-NEXT: not available: '__sinhf_finite'
+CHECK-NEXT: not available: '__sinhl_finite'
+CHECK-NEXT: not available: '__sinpi'
+CHECK-NEXT: not available: '__sinpif'
+CHECK-NEXT: not available: '__small_fprintf'
+CHECK-NEXT: not available: '__small_printf'
+CHECK-NEXT: not available: '__small_sprintf'
+CHECK-NEXT: available: '__snprintf_chk'
+CHECK-NEXT: available: '__sprintf_chk'
+CHECK-NEXT: not available: '__sqrt_finite'
+CHECK-NEXT: not available: '__sqrtf_finite'
+CHECK-NEXT: not available: '__sqrtl_finite'
+CHECK-NEXT: available: '__stpcpy_chk'
+CHECK-NEXT: available: '__stpncpy_chk'
+CHECK-NEXT: available: '__strcat_chk'
+CHECK-NEXT: available: '__strcpy_chk'
+CHECK-NEXT: not available: '__strdup'
+CHECK-NEXT: available: '__strlcat_chk'
+CHECK-NEXT: available: '__strlcpy_chk'
+CHECK-NEXT: available: '__strlen_chk'
+CHECK-NEXT: available: '__strncat_chk'
+CHECK-NEXT: available: '__strncpy_chk'
+CHECK-NEXT: available: '__strndup'
+CHECK-NEXT: not available: '__strtok_r'
+CHECK-NEXT: available: '__vsnprintf_chk'
+CHECK-NEXT: available: '__vsprintf_chk'
+CHECK-NEXT: available: 'abs'
+CHECK-NEXT: available: 'access'
+CHECK-NEXT: available: 'acos'
+CHECK-NEXT: available: 'acosf'
+CHECK-NEXT: available: 'acosh'
+CHECK-NEXT: available: 'acoshf'
+CHECK-NEXT: available: 'acoshl'
+CHECK-NEXT: available: 'acosl'
+CHECK-NEXT: available: 'aligned_alloc'
+CHECK-NEXT: available: 'asin'
+CHECK-NEXT: available: 'asinf'
+CHECK-NEXT: available: 'asinh'
+CHECK-NEXT: available: 'asinhf'
+CHECK-NEXT: available: 'asinhl'
+CHECK-NEXT: available: 'asinl'
+CHECK-NEXT: available: 'atan'
+CHECK-NEXT: available: 'atan2'
+CHECK-NEXT: available: 'atan2f'
+CHECK-NEXT: available: 'atan2l'
+CHECK-NEXT: available: 'atanf'
+CHECK-NEXT: available: 'atanh'
+CHECK-NEXT: available: 'atanhf'
+CHECK-NEXT: available: 'atanhl'
+CHECK-NEXT: available: 'atanl'
+CHECK-NEXT: available: 'atof'
+CHECK-NEXT: available: 'atoi'
+CHECK-NEXT: available: 'atol'
+CHECK-NEXT: available: 'atoll'
+CHECK-NEXT: not available: 'bcmp'
+CHECK-NEXT: available: 'bcopy'
+CHECK-NEXT: available: 'bzero'
+CHECK-NEXT: available: 'cabs'
+CHECK-NEXT: available: 'cabsf'
+CHECK-NEXT: available: 'cabsl'
+CHECK-NEXT: available: 'calloc'
+CHECK-NEXT: available: 'cbrt'
+CHECK-NEXT: available: 'cbrtf'
+CHECK-NEXT: available: 'cbrtl'
+CHECK-NEXT: available: 'ceil'
+CHECK-NEXT: available: 'ceilf'
+CHECK-NEXT: available: 'ceill'
+CHECK-NEXT: available: 'chmod'
+CHECK-NEXT: available: 'chown'
+CHECK-NEXT: available: 'clearerr'
+CHECK-NEXT: available: 'closedir'
+CHECK-NEXT: available: 'copysign'
+CHECK-NEXT: available: 'copysignf'
+CHECK-NEXT: available: 'copysignl'
+CHECK-NEXT: available: 'cos'
+CHECK-NEXT: available: 'cosf'
+CHECK-NEXT: available: 'cosh'
+CHECK-NEXT: available: 'coshf'
+CHECK-NEXT: available: 'coshl'
+CHECK-NEXT: available: 'cosl'
+CHECK-NEXT: available: 'ctermid'
+CHECK-NEXT: available: 'erf'
+CHECK-NEXT: available: 'erff'
+CHECK-NEXT: available: 'erfl'
+CHECK-NEXT: available: 'tgamma'
+CHECK-NEXT: available: 'tgammaf'
+CHECK-NEXT: available: 'tgammal'
+CHECK-NEXT: available: 'execl'
+CHECK-NEXT: available: 'execle'
+CHECK-NEXT: available: 'execlp'
+CHECK-NEXT: available: 'execv'
+CHECK-NEXT: available: 'execvP'
+CHECK-NEXT: available: 'execve'
+CHECK-NEXT: available: 'execvp'
+CHECK-NEXT: available: 'execvpe'
+CHECK-NEXT: available: 'exp'
+CHECK-NEXT: not available: 'exp10'
+CHECK-NEXT: not available: 'exp10f'
+CHECK-NEXT: not available: 'exp10l'
+CHECK-NEXT: available: 'exp2'
+CHECK-NEXT: available: 'exp2f'
+CHECK-NEXT: available: 'exp2l'
+CHECK-NEXT: available: 'expf'
+CHECK-NEXT: available: 'expl'
+CHECK-NEXT: available: 'expm1'
+CHECK-NEXT: available: 'expm1f'
+CHECK-NEXT: available: 'expm1l'
+CHECK-NEXT: available: 'fabs'
+CHECK-NEXT: available: 'fabsf'
+CHECK-NEXT: available: 'fabsl'
+CHECK-NEXT: available: 'fclose'
+CHECK-NEXT: available: 'fdopen'
+CHECK-NEXT: available: 'feof'
+CHECK-NEXT: available: 'ferror'
+CHECK-NEXT: available: 'fflush'
+CHECK-NEXT: available: 'ffs'
+CHECK-NEXT: not available: 'ffsl'
+CHECK-NEXT: not available: 'ffsll'
+CHECK-NEXT: available: 'fgetc'
+CHECK-NEXT: not available: 'fgetc_unlocked'
+CHECK-NEXT: available: 'fgetpos'
+CHECK-NEXT: available: 'fgets'
+CHECK-NEXT: not available: 'fgets_unlocked'
+CHECK-NEXT: available: 'fileno'
+CHECK-NEXT: available: 'fiprintf'
+CHECK-NEXT: available: 'flockfile'
+CHECK-NEXT: available: 'floor'
+CHECK-NEXT: available: 'floorf'
+CHECK-NEXT: available: 'floorl'
+CHECK-NEXT: not available: 'fls'
+CHECK-NEXT: not available: 'flsl'
+CHECK-NEXT: not available: 'flsll'
+CHECK-NEXT: available: 'fmax'
+CHECK-NEXT: available: 'fmaxf'
+CHECK-NEXT: available: 'fmaxl'
+CHECK-NEXT: available: 'fmin'
+CHECK-NEXT: available: 'fminf'
+CHECK-NEXT: available: 'fminl'
+CHECK-NEXT: available: 'fmaximum_num'
+CHECK-NEXT: available: 'fmaximum_numf'
+CHECK-NEXT: available: 'fmaximum_numl'
+CHECK-NEXT: available: 'fminimum_num'
+CHECK-NEXT: available: 'fminimum_numf'
+CHECK-NEXT: available: 'fminimum_numl'
+CHECK-NEXT: available: 'fmod'
+CHECK-NEXT: available: 'fmodf'
+CHECK-NEXT: available: 'fmodl'
+CHECK-NEXT: available: 'fopen'
+CHECK-NEXT: not available: 'fopen64'
+CHECK-NEXT: available: 'fork'
+CHECK-NEXT: available: 'fprintf'
+CHECK-NEXT: available: 'fputc'
+CHECK-NEXT: not available: 'fputc_unlocked'
+CHECK-NEXT: available: 'fputs'
+CHECK-NEXT: not available: 'fputs_unlocked'
+CHECK-NEXT: available: 'fread'
+CHECK-NEXT: not available: 'fread_unlocked'
+CHECK-NEXT: available: 'free'
+CHECK-NEXT: available: 'frexp'
+CHECK-NEXT: available: 'frexpf'
+CHECK-NEXT: available: 'frexpl'
+CHECK-NEXT: available: 'fscanf'
+CHECK-NEXT: available: 'fseek'
+CHECK-NEXT: available: 'fseeko'
+CHECK-NEXT: not available: 'fseeko64'
+CHECK-NEXT: available: 'fsetpos'
+CHECK-NEXT: available: 'fstat'
+CHECK-NEXT: not available: 'fstat64'
+CHECK-NEXT: available: 'fstatvfs'
+CHECK-NEXT: not available: 'fstatvfs64'
+CHECK-NEXT: available: 'ftell'
+CHECK-NEXT: available: 'ftello'
+CHECK-NEXT: not available: 'ftello64'
+CHECK-NEXT: available: 'ftrylockfile'
+CHECK-NEXT: available: 'funlockfile'
+CHECK-NEXT: available: 'fwrite'
+CHECK-NEXT: not available: 'fwrite_unlocked'
+CHECK-NEXT: available: 'getc'
+CHECK-NEXT: not available: 'getc_unlocked'
+CHECK-NEXT: available: 'getchar'
+CHECK-NEXT: not available: 'getchar_unlocked'
+CHECK-NEXT: available: 'getenv'
+CHECK-NEXT: available: 'getitimer'
+CHECK-NEXT: available: 'getlogin_r'
+CHECK-NEXT: available: 'getpwnam'
+CHECK-NEXT: available: 'gets'
+CHECK-NEXT: available: 'gettimeofday'
+CHECK-NEXT: available: 'htonl'
+CHECK-NEXT: available: 'htons'
+CHECK-NEXT: available: 'hypot'
+CHECK-NEXT: available: 'hypotf'
+CHECK-NEXT: available: 'hypotl'
+CHECK-NEXT: available: 'iprintf'
+CHECK-NEXT: available: 'isascii'
+CHECK-NEXT: available: 'isdigit'
+CHECK-NEXT: available: 'labs'
+CHECK-NEXT: available: 'lchown'
+CHECK-NEXT: available: 'ldexp'
+CHECK-NEXT: available: 'ldexpf'
+CHECK-NEXT: available: 'ldexpl'
+CHECK-NEXT: available: 'llabs'
+CHECK-NEXT: available: 'log'
+CHECK-NEXT: available: 'log10'
+CHECK-NEXT: available: 'log10f'
+CHECK-NEXT: available: 'log10l'
+CHECK-NEXT: available: 'log1p'
+CHECK-NEXT: available: 'log1pf'
+CHECK-NEXT: available: 'log1pl'
+CHECK-NEXT: available: 'log2'
+CHECK-NEXT: available: 'log2f'
+CHECK-NEXT: available: 'log2l'
+CHECK-NEXT: available: 'ilogb'
+CHECK-NEXT: available: 'ilogbf'
+CHECK-NEXT: available: 'ilogbl'
+CHECK-NEXT: available: 'logb'
+CHECK-NEXT: available: 'logbf'
+CHECK-NEXT: available: 'logbl'
+CHECK-NEXT: available: 'logf'
+CHECK-NEXT: available: 'logl'
+CHECK-NEXT: available: 'lstat'
+CHECK-NEXT: not available: 'lstat64'
+CHECK-NEXT: available: 'malloc'
+CHECK-NEXT: not available: 'memalign'
+CHECK-NEXT: available: 'memccpy'
+CHECK-NEXT: available: 'memchr'
+CHECK-NEXT: available: 'memcmp'
+CHECK-NEXT: available: 'memcpy'
+CHECK-NEXT: available: 'memmove'
+CHECK-NEXT: available: 'mempcpy'
+CHECK-NEXT: available: 'memrchr'
+CHECK-NEXT: available: 'memset'
+CHECK-NEXT: not available: 'memset_pattern16'
+CHECK-NEXT: not available: 'memset_pattern4'
+CHECK-NEXT: not available: 'memset_pattern8'
+CHECK-NEXT: available: 'mkdir'
+CHECK-NEXT: available: 'mktime'
+CHECK-NEXT: available: 'modf'
+CHECK-NEXT: available: 'modff'
+CHECK-NEXT: available: 'modfl'
+CHECK-NEXT: available: 'nan'
+CHECK-NEXT: available: 'nanf'
+CHECK-NEXT: available: 'nanl'
+CHECK-NEXT: available: 'nearbyint'
+CHECK-NEXT: available: 'nearbyintf'
+CHECK-NEXT: available: 'nearbyintl'
+CHECK-NEXT: available: 'ntohl'
+CHECK-NEXT: available: 'ntohs'
+CHECK-NEXT: available: 'open'
+CHECK-NEXT: not available: 'open64'
+CHECK-NEXT: available: 'opendir'
+CHECK-NEXT: available: 'pclose'
+CHECK-NEXT: available: 'perror'
+CHECK-NEXT: available: 'popen'
+CHECK-NEXT: available: 'posix_memalign'
+CHECK-NEXT: available: 'pow'
+CHECK-NEXT: available: 'powf'
+CHECK-NEXT: available: 'powl'
+CHECK-NEXT: available: 'pread'
+CHECK-NEXT: available: 'printf'
+CHECK-NEXT: available: 'putc'
+CHECK-NEXT: not available: 'putc_unlocked'
+CHECK-NEXT: available: 'putchar'
+CHECK-NEXT: not available: 'putchar_unlocked'
+CHECK-NEXT: available: 'puts'
+CHECK-NEXT: available: 'pwrite'
+CHECK-NEXT: available: 'qsort'
+CHECK-NEXT: available: 'read'
+CHECK-NEXT: available: 'readlink'
+CHECK-NEXT: available: 'realloc'
+CHECK-NEXT: available: 'reallocf'
+CHECK-NEXT: available: 'reallocarray'
+CHECK-NEXT: available: 'realpath'
+CHECK-NEXT: available: 'remainder'
+CHECK-NEXT: available: 'remainderf'
+CHECK-NEXT: available: 'remainderl'
+CHECK-NEXT: available: 'remquo'
+CHECK-NEXT: available: 'remquof'
+CHECK-NEXT: available: 'remquol'
+CHECK-NEXT: available: 'fdim'
+CHECK-NEXT: available: 'fdimf'
+CHECK-NEXT: available: 'fdiml'
+CHECK-NEXT: available: 'remove'
+CHECK-NEXT: available: 'rename'
+CHECK-NEXT: available: 'rewind'
+CHECK-NEXT: available: 'rint'
+CHECK-NEXT: available: 'rintf'
+CHECK-NEXT: available: 'rintl'
+CHECK-NEXT: available: 'rmdir'
+CHECK-NEXT: available: 'round'
+CHECK-NEXT: available: 'roundeven'
+CHECK-NEXT: available: 'roundevenf'
+CHECK-NEXT: available: 'roundevenl'
+CHECK-NEXT: available: 'roundf'
+CHECK-NEXT: available: 'roundl'
+CHECK-NEXT: available: 'scalbln'
+CHECK-NEXT: available: 'scalblnf'
+CHECK-NEXT: available: 'scalblnl'
+CHECK-NEXT: available: 'scalbn'
+CHECK-NEXT: available: 'scalbnf'
+CHECK-NEXT: available: 'scalbnl'
+CHECK-NEXT: available: 'scanf'
+CHECK-NEXT: available: 'setbuf'
+CHECK-NEXT: available: 'setitimer'
+CHECK-NEXT: available: 'setvbuf'
+CHECK-NEXT: available: 'sin'
+CHECK-NEXT: available: 'sinf'
+CHECK-NEXT: available: 'sinh'
+CHECK-NEXT: available: 'sinhf'
+CHECK-NEXT: available: 'sinhl'
+CHECK-NEXT: available: 'sinl'
+CHECK-NEXT: available: 'sincos'
+CHECK-NEXT: available: 'sincosf'
+CHECK-NEXT: available: 'sincosl'
+CHECK-NEXT: available: 'siprintf'
+CHECK-NEXT: available: 'snprintf'
+CHECK-NEXT: available: 'sprintf'
+CHECK-NEXT: available: 'sqrt'
+CHECK-NEXT: available: 'sqrtf'
+CHECK-NEXT: available: 'sqrtl'
+CHECK-NEXT: available: 'sscanf'
+CHECK-NEXT: available: 'stat'
+CHECK-NEXT: not available: 'stat64'
+CHECK-NEXT: available: 'statvfs'
+CHECK-NEXT: not available: 'statvfs64'
+CHECK-NEXT: available: 'stpcpy'
+CHECK-NEXT: available: 'stpncpy'
+CHECK-NEXT: available: 'strcasecmp'
+CHECK-NEXT: available: 'strcat'
+CHECK-NEXT: available: 'strchr'
+CHECK-NEXT: available: 'strcmp'
+CHECK-NEXT: available: 'strcoll'
+CHECK-NEXT: available: 'strcpy'
+CHECK-NEXT: available: 'strcspn'
+CHECK-NEXT: available: 'strdup'
+CHECK-NEXT: available: 'strlcat'
+CHECK-NEXT: available: 'strlcpy'
+CHECK-NEXT: available: 'strlen'
+CHECK-NEXT: available: 'strncasecmp'
+CHECK-NEXT: available: 'strncat'
+CHECK-NEXT: available: 'strncmp'
+CHECK-NEXT: available: 'strncpy'
+CHECK-NEXT: available: 'strndup'
+CHECK-NEXT: available: 'strnlen'
+CHECK-NEXT: available: 'strpbrk'
+CHECK-NEXT: available: 'strrchr'
+CHECK-NEXT: available: 'strspn'
+CHECK-NEXT: available: 'strstr'
+CHECK-NEXT: available: 'strtod'
+CHECK-NEXT: available: 'strtof'
+CHECK-NEXT: available: 'strtok'
+CHECK-NEXT: available: 'strtok_r'
+CHECK-NEXT: available: 'strtol'
+CHECK-NEXT: available: 'strtold'
+CHECK-NEXT: available: 'strtoll'
+CHECK-NEXT: available: 'strtoul'
+CHECK-NEXT: available: 'strtoull'
+CHECK-NEXT: available: 'strxfrm'
+CHECK-NEXT: available: 'system'
+CHECK-NEXT: available: 'tan'
+CHECK-NEXT: available: 'tanf'
+CHECK-NEXT: available: 'tanh'
+CHECK-NEXT: available: 'tanhf'
+CHECK-NEXT: available: 'tanhl'
+CHECK-NEXT: available: 'tanl'
+CHECK-NEXT: available: 'times'
+CHECK-NEXT: available: 'tmpfile'
+CHECK-NEXT: not available: 'tmpfile64'
+CHECK-NEXT: available: 'toascii'
+CHECK-NEXT: available: 'trunc'
+CHECK-NEXT: available: 'truncf'
+CHECK-NEXT: available: 'truncl'
+CHECK-NEXT: available: 'uname'
+CHECK-NEXT: available: 'ungetc'
+CHECK-NEXT: available: 'unlink'
+CHECK-NEXT: available: 'unsetenv'
+CHECK-NEXT: available: 'utime'
+CHECK-NEXT: available: 'utimes'
+CHECK-NEXT: available: 'valloc'
+CHECK-NEXT: not available: 'vec_calloc'
+CHECK-NEXT: not available: 'vec_free'
+CHECK-NEXT: not available: 'vec_malloc'
+CHECK-NEXT: not available: 'vec_realloc'
+CHECK-NEXT: available: 'vfprintf'
+CHECK-NEXT: available: 'vfscanf'
+CHECK-NEXT: available: 'vprintf'
+CHECK-NEXT: available: 'vscanf'
+CHECK-NEXT: available: 'vsnprintf'
+CHECK-NEXT: available: 'vsprintf'
+CHECK-NEXT: available: 'vsscanf'
+CHECK-NEXT: available: 'wcslen'
+CHECK-NEXT: available: 'write'
diff --git a/llvm/utils/emit-llvm-tli-checker-test.py b/llvm/utils/emit-llvm-tli-checker-test.py
new file mode 100755
index 0000000..b6d5832
--- /dev/null
+++ b/llvm/utils/emit-llvm-tli-checker-test.py
@@ -0,0 +1,33 @@
+#!/usr/bin/env python3
+
+"""A test case generation script.
+
+Generate check lines for all known TargetLibraryInfo functions
+
+"""
+
+import sys
+import os
+import subprocess
+
+if len(sys.argv) < 2:
+    print("usage: " + sys.argv[0] + " target-triple-name > target-triple-name.test")
+    exit(1)
+
+triple = sys.argv[1]
+process = subprocess.Popen(
+    "llvm-tli-checker --dump-tli --triple=" + triple,
+    shell=True,
+    stdin=subprocess.DEVNULL,
+    stdout=subprocess.PIPE,
+    universal_newlines=True)
+
+print("# RUN: llvm-tli-checker --dump-tli --triple=" + triple + " | FileCheck %s\n")
+
+First = True
+for line in process.stdout.readlines():
+    if First:
+        print("CHECK: " + line.strip());
+        First = False
+    else:
+        print("CHECK-NEXT: " + line.strip());