From 084d7d6b014443be7625fb9d8f1ddd309a22f6f4 Mon Sep 17 00:00:00 2001 From: Liam Date: Tue, 7 Jun 2022 17:02:29 -0400 Subject: common: Change semantics of UNREACHABLE to unconditionally crash --- src/common/assert.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/common/assert.cpp') diff --git a/src/common/assert.cpp b/src/common/assert.cpp index b44570528..a27a025ae 100644 --- a/src/common/assert.cpp +++ b/src/common/assert.cpp @@ -11,3 +11,8 @@ void assert_handle_failure() { Crash(); } } + +[[noreturn]] void unreachable_impl() { + Crash(); + throw std::runtime_error("Unreachable code"); +} -- cgit v1.2.3 From 58fea44eb5bfe268c1ddd2ea063744eb7bbe7e44 Mon Sep 17 00:00:00 2001 From: Liam Date: Tue, 7 Jun 2022 18:05:32 -0400 Subject: common: Don't test ASSERT conditions inline --- src/common/assert.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/common/assert.cpp') diff --git a/src/common/assert.cpp b/src/common/assert.cpp index a27a025ae..b20c19123 100644 --- a/src/common/assert.cpp +++ b/src/common/assert.cpp @@ -6,9 +6,13 @@ #include "common/settings.h" -void assert_handle_failure() { - if (Settings::values.use_debug_asserts) { - Crash(); +void assert_check_condition(bool cond, std::function&& on_failure) { + if (!cond) { + on_failure(); + + if (Settings::values.use_debug_asserts) { + Crash(); + } } } -- cgit v1.2.3 From a29ddcee40d78b1c1f7f64855331888777add4f4 Mon Sep 17 00:00:00 2001 From: Liam Date: Tue, 7 Jun 2022 19:46:10 -0400 Subject: common/assert: add unlikely --- src/common/assert.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/common/assert.cpp') diff --git a/src/common/assert.cpp b/src/common/assert.cpp index b20c19123..1a85faccf 100644 --- a/src/common/assert.cpp +++ b/src/common/assert.cpp @@ -7,7 +7,7 @@ #include "common/settings.h" void assert_check_condition(bool cond, std::function&& on_failure) { - if (!cond) { + if (!cond) [[unlikely]] { on_failure(); if (Settings::values.use_debug_asserts) { -- cgit v1.2.3 From feaf010fa2c2952eaa6659ea2decaaa2493d4bb8 Mon Sep 17 00:00:00 2001 From: Liam Date: Sun, 12 Jun 2022 18:11:02 -0400 Subject: common/assert: rework ASSERT handling to avoid std::function usage --- src/common/assert.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) (limited to 'src/common/assert.cpp') diff --git a/src/common/assert.cpp b/src/common/assert.cpp index 1a85faccf..6026b7dc2 100644 --- a/src/common/assert.cpp +++ b/src/common/assert.cpp @@ -6,13 +6,9 @@ #include "common/settings.h" -void assert_check_condition(bool cond, std::function&& on_failure) { - if (!cond) [[unlikely]] { - on_failure(); - - if (Settings::values.use_debug_asserts) { - Crash(); - } +void assert_fail_impl() { + if (Settings::values.use_debug_asserts) { + Crash(); } } -- cgit v1.2.3