From ea839861e5e18fbbeea68b6a73fea96f13059cc4 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Fri, 1 May 2020 17:30:47 +0200 Subject: [PATCH] AK: Make Checked.h work with Clang Apparently Clang does not have __builtin_foo_overflow_p() Fixes #2044. --- AK/Checked.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/AK/Checked.h b/AK/Checked.h index ac98519678..beb1bdf8a6 100644 --- a/AK/Checked.h +++ b/AK/Checked.h @@ -237,13 +237,27 @@ public: template static bool addition_would_overflow(U u, V v) { +#ifdef __clang__ + Checked checked; + checked = u; + checked += v; + return checked.has_overflow(); +#else return __builtin_add_overflow_p(u, v, (T)0); +#endif } template static bool multiplication_would_overflow(U u, V v) { +#ifdef __clang__ + Checked checked; + checked = u; + checked *= v; + return checked.has_overflow(); +#else return __builtin_mul_overflow_p(u, v, (T)0); +#endif } template