From 53a50e0b0d2bf48f78c27b1104ca228f47237aef Mon Sep 17 00:00:00 2001 From: 1F616EMO~nya 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 +#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 {