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