Commit f85304e4 by Kirill Bobyrev Committed by Dominic Hamon

Remove redundant default which causes failures (#649)

* Remove redundant default which causes failures * Fix old GCC warnings caused by poor analysis * Use __builtin_unreachable * Use BENCHMARK_UNREACHABLE() * Pull __has_builtin to benchmark.h too * Also move compiler identification macro to main header * Move custom compiler identification macro back
parent d939634b
...@@ -241,6 +241,18 @@ BENCHMARK(BM_test)->Unit(benchmark::kMillisecond); ...@@ -241,6 +241,18 @@ BENCHMARK(BM_test)->Unit(benchmark::kMillisecond);
#define BENCHMARK_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) #define BENCHMARK_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
#endif #endif
#ifndef __has_builtin
#define __has_builtin(x) 0
#endif
#if defined(__GNUC__) || __has_builtin(__builtin_unreachable)
#define BENCHMARK_UNREACHABLE() __builtin_unreachable()
#elif defined(_MSC_VER)
#define BENCHMARK_UNREACHABLE() __assume(false)
#else
#define BENCHMARK_UNREACHABLE() ((void)0)
#endif
namespace benchmark { namespace benchmark {
class BenchmarkReporter; class BenchmarkReporter;
class MemoryManager; class MemoryManager;
...@@ -1474,9 +1486,9 @@ inline const char* GetTimeUnitString(TimeUnit unit) { ...@@ -1474,9 +1486,9 @@ inline const char* GetTimeUnitString(TimeUnit unit) {
case kMicrosecond: case kMicrosecond:
return "us"; return "us";
case kNanosecond: case kNanosecond:
default:
return "ns"; return "ns";
} }
BENCHMARK_UNREACHABLE();
} }
inline double GetTimeUnitMultiplier(TimeUnit unit) { inline double GetTimeUnitMultiplier(TimeUnit unit) {
...@@ -1486,9 +1498,9 @@ inline double GetTimeUnitMultiplier(TimeUnit unit) { ...@@ -1486,9 +1498,9 @@ inline double GetTimeUnitMultiplier(TimeUnit unit) {
case kMicrosecond: case kMicrosecond:
return 1e6; return 1e6;
case kNanosecond: case kNanosecond:
default:
return 1e9; return 1e9;
} }
BENCHMARK_UNREACHABLE();
} }
} // namespace benchmark } // namespace benchmark
......
...@@ -11,9 +11,6 @@ ...@@ -11,9 +11,6 @@
#ifndef __has_feature #ifndef __has_feature
#define __has_feature(x) 0 #define __has_feature(x) 0
#endif #endif
#ifndef __has_builtin
#define __has_builtin(x) 0
#endif
#if defined(__clang__) #if defined(__clang__)
#if !defined(COMPILER_CLANG) #if !defined(COMPILER_CLANG)
...@@ -87,14 +84,6 @@ ...@@ -87,14 +84,6 @@
#define BENCHMARK_MAYBE_UNUSED #define BENCHMARK_MAYBE_UNUSED
#endif #endif
#if defined(COMPILER_GCC) || __has_builtin(__builtin_unreachable)
#define BENCHMARK_UNREACHABLE() __builtin_unreachable()
#elif defined(COMPILER_MSVC)
#define BENCHMARK_UNREACHABLE() __assume(false)
#else
#define BENCHMARK_UNREACHABLE() ((void)0)
#endif
// clang-format on // clang-format on
#endif // BENCHMARK_INTERNAL_MACROS_H_ #endif // BENCHMARK_INTERNAL_MACROS_H_
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment