dtoolbase: Fixup NODEFAULT macro

1. Test for Clang before _MSC_VER (Clang defines this on Windows)
2. Use it in pdtoa.cxx
This commit is contained in:
Sam Edwards 2018-05-29 22:20:25 -06:00
parent c17cb11dfa
commit 00e259d4dd
2 changed files with 3 additions and 10 deletions

View File

@ -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

View File

@ -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);