summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authormitaclaw <140017135+mitaclaw@users.noreply.github.com>2024-05-24 17:47:25 -0700
committermitaclaw <140017135+mitaclaw@users.noreply.github.com>2024-06-05 19:59:39 -0700
commit8050760fe928db8a3f7eed25c5e4372af6f2bc24 (patch)
tree0dce44452b100c37999f243b12dfc6406698324c /Source/Core
parent7dc0bdd5dfaa7aa8f6902126c1e05b0ee23d45a9 (diff)
BranchWatchTableModel: Assume Unreachable Code Truly Is
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Common/CMakeLists.txt1
-rw-r--r--Source/Core/Common/Unreachable.h21
-rw-r--r--Source/Core/DolphinLib.props1
-rw-r--r--Source/Core/DolphinQt/Debugger/BranchWatchTableModel.cpp10
4 files changed, 30 insertions, 3 deletions
diff --git a/Source/Core/Common/CMakeLists.txt b/Source/Core/Common/CMakeLists.txt
index af48ba7e13..fd2b04a721 100644
--- a/Source/Core/Common/CMakeLists.txt
+++ b/Source/Core/Common/CMakeLists.txt
@@ -143,6 +143,7 @@ add_library(common
TraversalClient.h
TraversalProto.h
TypeUtils.h
+ Unreachable.h
UPnP.cpp
UPnP.h
VariantUtil.h
diff --git a/Source/Core/Common/Unreachable.h b/Source/Core/Common/Unreachable.h
new file mode 100644
index 0000000000..a01810a239
--- /dev/null
+++ b/Source/Core/Common/Unreachable.h
@@ -0,0 +1,21 @@
+// Copyright 2024 Dolphin Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "Common/CommonFuncs.h"
+
+namespace Common
+{
+// TODO C++23: Replace with std::unreachable.
+[[noreturn]] inline void Unreachable()
+{
+#ifdef _DEBUG
+ Crash();
+#elif defined(_MSC_VER) && !defined(__clang__)
+ __assume(false);
+#else
+ __builtin_unreachable();
+#endif
+}
+} // namespace Common
diff --git a/Source/Core/DolphinLib.props b/Source/Core/DolphinLib.props
index beec3e9a2d..56484070d0 100644
--- a/Source/Core/DolphinLib.props
+++ b/Source/Core/DolphinLib.props
@@ -165,6 +165,7 @@
<ClInclude Include="Common\TraversalClient.h" />
<ClInclude Include="Common\TraversalProto.h" />
<ClInclude Include="Common\TypeUtils.h" />
+ <ClInclude Include="Common\Unreachable.h" />
<ClInclude Include="Common\UPnP.h" />
<ClInclude Include="Common\VariantUtil.h" />
<ClInclude Include="Common\Version.h" />
diff --git a/Source/Core/DolphinQt/Debugger/BranchWatchTableModel.cpp b/Source/Core/DolphinQt/Debugger/BranchWatchTableModel.cpp
index 08d7ae021d..e4d8dd21a2 100644
--- a/Source/Core/DolphinQt/Debugger/BranchWatchTableModel.cpp
+++ b/Source/Core/DolphinQt/Debugger/BranchWatchTableModel.cpp
@@ -11,6 +11,7 @@
#include "Common/Assert.h"
#include "Common/GekkoDisassembler.h"
+#include "Common/Unreachable.h"
#include "Core/Debugger/BranchWatch.h"
#include "Core/PowerPC/PPCSymbolDB.h"
@@ -355,7 +356,8 @@ QVariant BranchWatchTableModel::DisplayRoleData(const QModelIndex& index) const
case Column::TotalHits:
return QString::number(kv->second.total_hits);
}
- return QVariant();
+ static_assert(Column::NumberOfColumns == 8);
+ Common::Unreachable();
}
QVariant BranchWatchTableModel::FontRoleData(const QModelIndex& index) const
@@ -400,7 +402,8 @@ QVariant BranchWatchTableModel::TextAlignmentRoleData(const QModelIndex& index)
case Column::DestinSymbol:
return QVariant::fromValue(Qt::AlignLeft | Qt::AlignVCenter);
}
- return QVariant();
+ static_assert(Column::NumberOfColumns == 8);
+ Common::Unreachable();
}
QVariant BranchWatchTableModel::ForegroundRoleData(const QModelIndex& index) const
@@ -498,5 +501,6 @@ QVariant BranchWatchTableModel::SortRoleData(const QModelIndex& index) const
case Column::TotalHits:
return qulonglong{kv->second.total_hits};
}
- return QVariant();
+ static_assert(Column::NumberOfColumns == 8);
+ Common::Unreachable();
}