From 00e259d4dd82f62a10daa9397a57790e2a798985 Mon Sep 17 00:00:00 2001 From: Sam Edwards Date: Tue, 29 May 2018 22:20:25 -0600 Subject: [PATCH] dtoolbase: Fixup NODEFAULT macro 1. Test for Clang before _MSC_VER (Clang defines this on Windows) 2. Use it in pdtoa.cxx --- dtool/src/dtoolbase/dtoolbase.h | 4 ++-- dtool/src/dtoolbase/pdtoa.cxx | 9 +-------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/dtool/src/dtoolbase/dtoolbase.h b/dtool/src/dtoolbase/dtoolbase.h index 4e7b73ba9a..1614d05cfd 100644 --- a/dtool/src/dtoolbase/dtoolbase.h +++ b/dtool/src/dtoolbase/dtoolbase.h @@ -73,10 +73,10 @@ // 'assume at least one of the cases is always true') #ifdef _DEBUG #define NODEFAULT default: assert(0); break; -#elif defined(_MSC_VER) -#define NODEFAULT default: __assume(0); // special VC keyword #elif __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) || __has_builtin(__builtin_unreachable) #define NODEFAULT default: __builtin_unreachable(); +#elif defined(_MSC_VER) +#define NODEFAULT default: __assume(0); // special VC keyword #else #define NODEFAULT #endif diff --git a/dtool/src/dtoolbase/pdtoa.cxx b/dtool/src/dtoolbase/pdtoa.cxx index 47aa2db50a..2ef158f4ac 100644 --- a/dtool/src/dtoolbase/pdtoa.cxx +++ b/dtool/src/dtoolbase/pdtoa.cxx @@ -271,14 +271,7 @@ inline static void DigitGen(const DiyFp& W, const DiyFp& Mp, uint64_t delta, cha case 3: d = p1 / 100; p1 %= 100; break; case 2: d = p1 / 10; p1 %= 10; break; case 1: d = p1; p1 = 0; break; - default: -#if defined(_MSC_VER) - __assume(0); -#elif __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) - __builtin_unreachable(); -#else - d = 0; -#endif + NODEFAULT } if (d || *len) buffer[(*len)++] = '0' + static_cast(d);