From 2217d91b8d7c5086fad76396d5b50e13d67aae65 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Fri, 8 Jul 2022 14:16:53 +0200 Subject: [PATCH] AK: Make VERIFY() work in MinSizeRel builds --- AK/Assertions.h | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/AK/Assertions.h b/AK/Assertions.h index 55e7c989daf..648d9b9d499 100644 --- a/AK/Assertions.h +++ b/AK/Assertions.h @@ -10,8 +10,15 @@ # include #else # include -# define VERIFY assert -# define VERIFY_NOT_REACHED() assert(false) /* NOLINT(cert-dcl03-c,misc-static-assert) No, this can't be static_assert, it's a runtime check */ +# ifndef NDEBUG +# define VERIFY assert +# else +# define VERIFY(expr) \ + (__builtin_expect(!(expr), 0) \ + ? __builtin_trap() \ + : (void)0) +# endif +# define VERIFY_NOT_REACHED() VERIFY(false) /* NOLINT(cert-dcl03-c,misc-static-assert) No, this can't be static_assert, it's a runtime check */ static constexpr bool TODO = false; # define TODO() VERIFY(TODO) /* NOLINT(cert-dcl03-c,misc-static-assert) No, this can't be static_assert, it's a runtime check */ #endif