Speed up hb_set_digest_lowest_bits_t calcs
diff --git a/src/hb-set-private.hh b/src/hb-set-private.hh
index 8beff37..4413579 100644
--- a/src/hb-set-private.hh
+++ b/src/hb-set-private.hh
@@ -83,9 +83,13 @@
   }
 
   inline void add_range (hb_codepoint_t a, hb_codepoint_t b) {
-    /* TODO Speedup. */
-    for (unsigned int i = a; i < b + 1; i++)
-      add (i);
+    if (b - a >= sizeof (mask_t) * 8 - 1)
+      mask = (mask_t) -1;
+    else {
+      mask_t ma = mask_for (a);
+      mask_t mb = mask_for (b);
+      mask |= mb + (mb - ma) - (mb < ma);
+    }
   }
 
   inline bool may_have (hb_codepoint_t g) const {