Преглед изворни кода

dtoolbase: Fixup NODEFAULT macro

1. Test for Clang before _MSC_VER (Clang defines this on Windows)
2. Use it in pdtoa.cxx
Sam Edwards пре 7 година
родитељ
комит
00e259d4dd
2 измењених фајлова са 3 додато и 10 уклоњено
  1. 2 2
      dtool/src/dtoolbase/dtoolbase.h
  2. 1 8
      dtool/src/dtoolbase/pdtoa.cxx

+ 2 - 2
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

+ 1 - 8
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<char>(d);