winpthreads: Use __assume(0) MSVC builtin for unreachable code

https://learn.microsoft.com/en-us/cpp/intrinsics/assume?view=msvc-170

Signed-off-by: Antonin Décimo <antonin@tarides.com>
Signed-off-by: Martin Storsjö <martin@martin.st>
diff --git a/mingw-w64-libraries/winpthreads/src/misc.h b/mingw-w64-libraries/winpthreads/src/misc.h
index d590af4..7e226f4 100644
--- a/mingw-w64-libraries/winpthreads/src/misc.h
+++ b/mingw-w64-libraries/winpthreads/src/misc.h
@@ -119,4 +119,10 @@
 #define unlikely(cond) (cond)
 #endif
 
+#if defined(__GNUC__) || defined(__clang__)
+#define UNREACHABLE() __builtin_unreachable()
+#elif defined(_MSC_VER)
+#define UNREACHABLE() __assume(0)
+#endif
+
 #endif
diff --git a/mingw-w64-libraries/winpthreads/src/mutex.c b/mingw-w64-libraries/winpthreads/src/mutex.c
index fc29341..5142198 100644
--- a/mingw-w64-libraries/winpthreads/src/mutex.c
+++ b/mingw-w64-libraries/winpthreads/src/mutex.c
@@ -99,7 +99,7 @@
   } else {
     /* mi cannot be null here; avoid a test in the fast path. */
     if (mi == NULL)
-      __builtin_unreachable();
+      UNREACHABLE();
     return mi;
   }
 }