1. Test for Clang before _MSC_VER (Clang defines this on Windows) 2. Use it in pdtoa.cxx
@@ -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
@@ -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<char>(d);