From 53a50e0b0d2bf48f78c27b1104ca228f47237aef Mon Sep 17 00:00:00 2001
From: 1F616EMO~nya <root@1f616emo.xyz>
Date: Mon, 12 Aug 2024 21:34:25 +0800
Subject: [PATCH] Fix warning about getVertexTypeDescription reaching its end
 (#14806)

---
 irr/src/OpenGL/Driver.cpp |  1 +
 irr/src/os.h              | 16 ++++++++++++++++
 2 files changed, 17 insertions(+)

diff --git a/irr/src/OpenGL/Driver.cpp b/irr/src/OpenGL/Driver.cpp
index 0dd6ea1bb..95d760548 100644
--- a/irr/src/OpenGL/Driver.cpp
+++ b/irr/src/OpenGL/Driver.cpp
@@ -107,6 +107,7 @@ static const VertexType &getVertexTypeDescription(E_VERTEX_TYPE type)
 		return vtTangents;
 	default:
 		assert(false);
+		CODE_UNREACHABLE();
 	}
 }
 
diff --git a/irr/src/os.h b/irr/src/os.h
index fcbaeddd5..58699ab3e 100644
--- a/irr/src/os.h
+++ b/irr/src/os.h
@@ -10,6 +10,22 @@
 #include "ILogger.h"
 #include "ITimer.h"
 
+// CODE_UNREACHABLE(): Invokes undefined behavior for unreachable code optimization
+#if defined(__cpp_lib_unreachable)
+#include <utility>
+#define CODE_UNREACHABLE() std::unreachable()
+#elif defined(__has_builtin)
+#if __has_builtin(__builtin_unreachable)
+#define CODE_UNREACHABLE() __builtin_unreachable()
+#endif
+#elif defined(_MSC_VER)
+#define CODE_UNREACHABLE() __assume(false)
+#endif
+
+#ifndef CODE_UNREACHABLE
+#define CODE_UNREACHABLE() (void)0
+#endif
+
 namespace irr
 {