From 73a8e6faaca15a80ae3e90cf6cbf603d9e6f03b1 Mon Sep 17 00:00:00 2001 From: Tom Lally Date: Sat, 27 Aug 2022 20:40:25 +0100 Subject: [PATCH] Replaced ASSUME(false) with UNREACHABLE. --- src/Cafe/HW/Latte/Core/LatteOverlay.cpp | 2 +- src/Cafe/HW/Latte/Renderer/OpenGL/OpenGLRenderer.cpp | 4 ++-- .../HW/Latte/Renderer/OpenGL/RendererShaderGL.cpp | 2 +- src/Cafe/HW/Latte/Renderer/Vulkan/VulkanRenderer.cpp | 2 +- .../HW/Latte/Renderer/Vulkan/VulkanRendererCore.cpp | 8 ++++---- src/Cafe/TitleList/MetaInfo.cpp | 2 +- src/Common/precompiled.h | 12 +++++++++--- src/gui/components/wxTitleManagerList.cpp | 2 +- 8 files changed, 20 insertions(+), 14 deletions(-) diff --git a/src/Cafe/HW/Latte/Core/LatteOverlay.cpp b/src/Cafe/HW/Latte/Core/LatteOverlay.cpp index db93b840..cb7c9baf 100644 --- a/src/Cafe/HW/Latte/Core/LatteOverlay.cpp +++ b/src/Cafe/HW/Latte/Core/LatteOverlay.cpp @@ -518,7 +518,7 @@ void LatteOverlay_translateScreenPosition(ScreenPosition pos, const Vector2f& wi direction = -1; break; default: - ASSUME(false); + UNREACHABLE; } } diff --git a/src/Cafe/HW/Latte/Renderer/OpenGL/OpenGLRenderer.cpp b/src/Cafe/HW/Latte/Renderer/OpenGL/OpenGLRenderer.cpp index 7f7d1b84..80c72918 100644 --- a/src/Cafe/HW/Latte/Renderer/OpenGL/OpenGLRenderer.cpp +++ b/src/Cafe/HW/Latte/Renderer/OpenGL/OpenGLRenderer.cpp @@ -1463,7 +1463,7 @@ void OpenGLRenderer::shader_bind(RendererShader* shader) prevGeometryShaderProgram = program; break; default: - ASSUME(false); + UNREACHABLE; } catchOpenGLError(); @@ -1494,7 +1494,7 @@ void OpenGLRenderer::shader_unbind(RendererShader::ShaderType shaderType) prevGeometryShaderProgram = -1; break; default: - ASSUME(false); + UNREACHABLE; } } diff --git a/src/Cafe/HW/Latte/Renderer/OpenGL/RendererShaderGL.cpp b/src/Cafe/HW/Latte/Renderer/OpenGL/RendererShaderGL.cpp index 8ea170ca..e9e86f53 100644 --- a/src/Cafe/HW/Latte/Renderer/OpenGL/RendererShaderGL.cpp +++ b/src/Cafe/HW/Latte/Renderer/OpenGL/RendererShaderGL.cpp @@ -270,7 +270,7 @@ void RendererShaderGL::ShaderCacheLoading_begin(uint64 cacheTitleId) usePrecompiled = false; break; default: - ASSUME(false); + UNREACHABLE; } forceLog_printf("Using precompiled shaders: %s", usePrecompiled ? "true" : "false"); diff --git a/src/Cafe/HW/Latte/Renderer/Vulkan/VulkanRenderer.cpp b/src/Cafe/HW/Latte/Renderer/Vulkan/VulkanRenderer.cpp index 4e6632ab..e7f7fbf7 100644 --- a/src/Cafe/HW/Latte/Renderer/Vulkan/VulkanRenderer.cpp +++ b/src/Cafe/HW/Latte/Renderer/Vulkan/VulkanRenderer.cpp @@ -3412,7 +3412,7 @@ VkDescriptorSetInfo::~VkDescriptorSetInfo() break; } default: - ASSUME(false); + UNREACHABLE; } // update global stats performanceMonitor.vk.numDescriptorSamplerTextures.decrement(statsNumSamplerTextures); diff --git a/src/Cafe/HW/Latte/Renderer/Vulkan/VulkanRendererCore.cpp b/src/Cafe/HW/Latte/Renderer/Vulkan/VulkanRendererCore.cpp index cefec598..ad84895a 100644 --- a/src/Cafe/HW/Latte/Renderer/Vulkan/VulkanRendererCore.cpp +++ b/src/Cafe/HW/Latte/Renderer/Vulkan/VulkanRendererCore.cpp @@ -528,7 +528,7 @@ uint64 VulkanRenderer::GetDescriptorSetStateHash(LatteDecompilerShader* shader) texUnitRegIndex += Latte::REGADDR::SQ_TEX_RESOURCE_WORD0_N_GS; break; default: - ASSUME(false); + UNREACHABLE; } auto texture = m_state.boundTexture[hostTextureUnit]; @@ -590,7 +590,7 @@ VkDescriptorSetInfo* VulkanRenderer::draw_getOrCreateDescriptorSet(PipelineInfo* break; } default: - ASSUME(false); + UNREACHABLE; } // create new descriptor set @@ -646,7 +646,7 @@ VkDescriptorSetInfo* VulkanRenderer::draw_getOrCreateDescriptorSet(PipelineInfo* texUnitRegIndex += Latte::REGADDR::SQ_TEX_RESOURCE_WORD0_N_GS; break; default: - ASSUME(false); + UNREACHABLE; } auto textureView = m_state.boundTexture[hostTextureUnit]; @@ -996,7 +996,7 @@ VkDescriptorSetInfo* VulkanRenderer::draw_getOrCreateDescriptorSet(PipelineInfo* break; } default: - ASSUME(false); + UNREACHABLE; } return dsInfo; diff --git a/src/Cafe/TitleList/MetaInfo.cpp b/src/Cafe/TitleList/MetaInfo.cpp index 8fda420b..3ae77a05 100644 --- a/src/Cafe/TitleList/MetaInfo.cpp +++ b/src/Cafe/TitleList/MetaInfo.cpp @@ -174,7 +174,7 @@ std::unique_ptr MetaInfo::GetIcon(uint32& size) const return nullptr; } default: - ASSUME(false); + UNREACHABLE; } return nullptr; } diff --git a/src/Common/precompiled.h b/src/Common/precompiled.h index 09b485cb..e6ca7dc9 100644 --- a/src/Common/precompiled.h +++ b/src/Common/precompiled.h @@ -219,6 +219,15 @@ typedef union _LARGE_INTEGER { inline T& operator^= (T& a, T b) { return reinterpret_cast( reinterpret_cast::type&>(a) ^= static_cast::type>(b) ); } #endif +#if defined(_MSC_VER) + #define UNREACHABLE __assume(false) +#elif defined(__GNUC__) + #define UNREACHABLE __builtin_unreachable(); +#else + #warning "No implementation for UNREACHABLE" + #define UNREACHABLE +#endif + // MEMPTR #include "Common/MemPtr.h" @@ -230,7 +239,6 @@ typedef union _LARGE_INTEGER { #define DLLIMPORT __declspec(dllimport) #define DEBUG_BREAK __debugbreak() #define NOINLINE __declspec(noinline) - #define ASSUME(X) __assume(X) #define THREAD_LOCAL __declspec(thread) #define POPCNT(X) __popcnt((X)) #else @@ -240,8 +248,6 @@ typedef union _LARGE_INTEGER { #include #define DEBUG_BREAK raise(SIGTRAP) #define NOINLINE __attribute__((noinline)) - // fixme: random stack overflow solution. use it with caution - #define ASSUME(X) do { if (!(X)) __builtin_unreachable(); } while (0) #define THREAD_LOCAL __thread #define POPCNT(X) __builtin_popcount((X)) #endif diff --git a/src/gui/components/wxTitleManagerList.cpp b/src/gui/components/wxTitleManagerList.cpp index a68d61f1..2a40b25d 100644 --- a/src/gui/components/wxTitleManagerList.cpp +++ b/src/gui/components/wxTitleManagerList.cpp @@ -941,7 +941,7 @@ wxString wxTitleManagerList::GetTitleEntryText(const TitleEntry& entry, ItemColu //return wxStringFormat2("{}", entry.format); } default: - ASSUME(false); + UNREACHABLE; } return wxEmptyString;