-
Notifications
You must be signed in to change notification settings - Fork 14.4k
TargetLibraryInfo: Add tests for function availability #142536
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: users/arsenm/llvm-tli-checker/refactor-remove-tli-name-list-struct
Are you sure you want to change the base?
Conversation
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.
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
@llvm/pr-subscribers-backend-nvptx @llvm/pr-subscribers-llvm-analysis Author: Matt Arsenault (arsenm) ChangesCheck the output of llvm-tli-checker for a sampling of triples. This Patch is 832.21 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/142536.diff 37 Files Affected:
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 0000000000000..30a19e98a5888
--- /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: 'r...
[truncated]
|
You can test this locally with the following command:darker --check --diff -r HEAD~1...HEAD llvm/utils/emit-llvm-tli-checker-test.py View the diff from darker here.--- emit-llvm-tli-checker-test.py 2025-06-03 05:55:02.000000 +0000
+++ emit-llvm-tli-checker-test.py 2025-06-03 06:00:21.864668 +0000
@@ -18,16 +18,17 @@
process = subprocess.Popen(
"llvm-tli-checker --dump-tli --triple=" + triple,
shell=True,
stdin=subprocess.DEVNULL,
stdout=subprocess.PIPE,
- universal_newlines=True)
+ 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());
+ print("CHECK: " + line.strip())
First = False
else:
- print("CHECK-NEXT: " + line.strip());
+ print("CHECK-NEXT: " + line.strip())
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I do not think these tests provide value.
It's basically impossible to refactor this mess without test coverage |
I acknowledge dropping the ball on cleaning up this area. I would like to review this (and #142535) but I am out of town this week. I should be able to get to it this weekend. |
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.