Browse Source

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.
Sergey Bugaev 5 years ago
parent
commit
361a1b54d7
1 changed files with 7 additions and 4 deletions
  1. 7 4
      AK/Checked.h

+ 7 - 4
AK/Checked.h

@@ -234,13 +234,16 @@ public:
         return *this;
     }
 
+    template<typename U, typename V>
+    static bool addition_would_overflow(U u, V v)
+    {
+        return __builtin_add_overflow_p(u, v, (T)0);
+    }
+
     template<typename U, typename V, typename X>
     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<typename U, typename V, typename X>