From 361a1b54d75de9fb9b9e04c82f87b58d37f4e2bc Mon Sep 17 00:00:00 2001 From: Sergey Bugaev Date: Thu, 30 Apr 2020 11:50:26 +0300 Subject: [PATCH] AK: Add Checked::addition_would_overflow() And switch the two-argument version of Checked::multiplication_would_overflow() to use __builtin_mul_overflow_p(). This helps GCC optimize the code better. --- AK/Checked.h | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/AK/Checked.h b/AK/Checked.h index 9514a8fb9d..ac98519678 100644 --- a/AK/Checked.h +++ b/AK/Checked.h @@ -234,13 +234,16 @@ public: return *this; } + template + static bool addition_would_overflow(U u, V v) + { + return __builtin_add_overflow_p(u, v, (T)0); + } + template static bool multiplication_would_overflow(U u, V v) { - Checked checked; - checked = u; - checked *= v; - return checked.has_overflow(); + return __builtin_mul_overflow_p(u, v, (T)0); } template