Commit 212449bc23

Marc Tiehuis <marctiehuis@gmail.com>
2018-06-06 12:41:55
Fix Log2Int type construction
The following case for example, would previously fail: const a = u24(1) << Log2Int(u24)(22);
1 parent d3693dc
Changed files (1)
std
std/math/index.zig
@@ -306,7 +306,14 @@ test "math.rotl" {
 }
 
 pub fn Log2Int(comptime T: type) type {
-    return @IntType(false, log2(T.bit_count));
+    // comptime ceil log2
+    comptime var count: usize = 0;
+    comptime var s = T.bit_count - 1;
+    inline while (s != 0) : (s >>= 1) {
+        count += 1;
+    }
+
+    return @IntType(false, count);
 }
 
 test "math overflow functions" {