diff --git a/include/cpu_features_macros.h b/include/cpu_features_macros.h index 4b231a1..15f7368 100644 --- a/include/cpu_features_macros.h +++ b/include/cpu_features_macros.h @@ -213,4 +213,17 @@ #endif // defined(__mips_msa) #endif // defined(CPU_FEATURES_ARCH_MIPS) +//////////////////////////////////////////////////////////////////////////////// +// Utils +//////////////////////////////////////////////////////////////////////////////// + +// Communicates to the compiler that the block is unreachable +#if defined(CPU_FEATURES_COMPILER_CLANG) || defined(CPU_FEATURES_COMPILER_GCC) +#define UNREACHABLE() __builtin_unreachable() +#elif defined(CPU_FEATURES_COMPILER_MSC) +#define UNREACHABLE() __assume(0) +#else +#define UNREACHABLE() +#endif + #endif // CPU_FEATURES_INCLUDE_CPU_FEATURES_MACROS_H_ diff --git a/src/utils/list_cpu_features.c b/src/utils/list_cpu_features.c index c80ffc5..4389f20 100644 --- a/src/utils/list_cpu_features.c +++ b/src/utils/list_cpu_features.c @@ -340,6 +340,7 @@ static Node* GetCacheTypeString(CacheType cache_type) { case CPU_FEATURE_CACHE_PREFETCH: return CreateConstantString("prefetch"); } + UNREACHABLE(); } static void AddCacheInfo(Node* root, const CacheInfo* cache_info) {