Fix -Werror=conversion in fundamental-public.h
diff --git a/internal/cgen/base/fundamental-public.h b/internal/cgen/base/fundamental-public.h
index 67ada28..6864026 100644
--- a/internal/cgen/base/fundamental-public.h
+++ b/internal/cgen/base/fundamental-public.h
@@ -584,49 +584,49 @@
 static inline uint8_t  //
 wuffs_base__u8__rotate_left(uint8_t x, uint32_t n) {
   n &= 7;
-  return (x << n) | (x >> (8 - n));
+  return ((uint8_t)(x << n)) | ((uint8_t)(x >> (8 - n)));
 }
 
 static inline uint8_t  //
 wuffs_base__u8__rotate_right(uint8_t x, uint32_t n) {
   n &= 7;
-  return (x >> n) | (x << (8 - n));
+  return ((uint8_t)(x >> n)) | ((uint8_t)(x << (8 - n)));
 }
 
 static inline uint16_t  //
 wuffs_base__u16__rotate_left(uint16_t x, uint32_t n) {
   n &= 15;
-  return (x << n) | (x >> (16 - n));
+  return ((uint16_t)(x << n)) | ((uint16_t)(x >> (16 - n)));
 }
 
 static inline uint16_t  //
 wuffs_base__u16__rotate_right(uint16_t x, uint32_t n) {
   n &= 15;
-  return (x >> n) | (x << (16 - n));
+  return ((uint16_t)(x >> n)) | ((uint16_t)(x << (16 - n)));
 }
 
 static inline uint32_t  //
 wuffs_base__u32__rotate_left(uint32_t x, uint32_t n) {
   n &= 31;
-  return (x << n) | (x >> (32 - n));
+  return ((uint32_t)(x << n)) | ((uint32_t)(x >> (32 - n)));
 }
 
 static inline uint32_t  //
 wuffs_base__u32__rotate_right(uint32_t x, uint32_t n) {
   n &= 31;
-  return (x >> n) | (x << (32 - n));
+  return ((uint32_t)(x >> n)) | ((uint32_t)(x << (32 - n)));
 }
 
 static inline uint64_t  //
 wuffs_base__u64__rotate_left(uint64_t x, uint32_t n) {
   n &= 63;
-  return (x << n) | (x >> (64 - n));
+  return ((uint64_t)(x << n)) | ((uint64_t)(x >> (64 - n)));
 }
 
 static inline uint64_t  //
 wuffs_base__u64__rotate_right(uint64_t x, uint32_t n) {
   n &= 63;
-  return (x >> n) | (x << (64 - n));
+  return ((uint64_t)(x >> n)) | ((uint64_t)(x << (64 - n)));
 }
 
 // --------
diff --git a/internal/cgen/data/data.go b/internal/cgen/data/data.go
index 8896bbd..c81bc06 100644
--- a/internal/cgen/data/data.go
+++ b/internal/cgen/data/data.go
@@ -91,8 +91,8 @@
 	"int32_t  //\nwuffs_base__i32__max(int32_t x, int32_t y) {\n  return x > y ? x : y;\n}\n\nstatic inline int64_t  //\nwuffs_base__i64__min(int64_t x, int64_t y) {\n  return x < y ? x : y;\n}\n\nstatic inline int64_t  //\nwuffs_base__i64__max(int64_t x, int64_t y) {\n  return x > y ? x : y;\n}\n\nstatic inline uint8_t  //\nwuffs_base__u8__min(uint8_t x, uint8_t y) {\n  return x < y ? x : y;\n}\n\nstatic inline uint8_t  //\nwuffs_base__u8__max(uint8_t x, uint8_t y) {\n  return x > y ? x : y;\n}\n\nstatic inline uint16_t  //\nwuffs_base__u16__min(uint16_t x, uint16_t y) {\n  return x < y ? x : y;\n}\n\nstatic inline uint16_t  //\nwuffs_base__u16__max(uint16_t x, uint16_t y) {\n  return x > y ? x : y;\n}\n\nstatic inline uint32_t  //\nwuffs_base__u32__min(uint32_t x, uint32_t y) {\n  return x < y ? x : y;\n}\n\nstatic inline uint32_t  //\nwuffs_base__u32__max(uint32_t x, uint32_t y) {\n  return x > y ? x : y;\n}\n\nstatic inline uint64_t  //\nwuffs_base__u64__min(uint64_t x, uint64_t y) {\n  return x < y ? x : y;\n}\n\nstatic inline uint64_t  //\nwuffs_base__u64__m" +
 	"ax(uint64_t x, uint64_t y) {\n  return x > y ? x : y;\n}\n\n" +
 	"" +
-	"// --------\n\nstatic inline uint8_t  //\nwuffs_base__u8__rotate_left(uint8_t x, uint32_t n) {\n  n &= 7;\n  return (x << n) | (x >> (8 - n));\n}\n\nstatic inline uint8_t  //\nwuffs_base__u8__rotate_right(uint8_t x, uint32_t n) {\n  n &= 7;\n  return (x >> n) | (x << (8 - n));\n}\n\nstatic inline uint16_t  //\nwuffs_base__u16__rotate_left(uint16_t x, uint32_t n) {\n  n &= 15;\n  return (x << n) | (x >> (16 - n));\n}\n\nstatic inline uint16_t  //\nwuffs_base__u16__rotate_right(uint16_t x, uint32_t n) {\n  n &= 15;\n  return (x >> n) | (x << (16 - n));\n}\n\nstatic inline uint32_t  //\nwuffs_base__u32__rotate_left(uint32_t x, uint32_t n) {\n  n &= 31;\n  return (x << n) | (x >> (32 - n));\n}\n\nstatic inline uint32_t  //\nwuffs_base__u32__rotate_right(uint32_t x, uint32_t n) {\n  n &= 31;\n  return (x >> n) | (x << (32 - n));\n}\n\nstatic inline uint64_t  //\nwuffs_base__u64__rotate_left(uint64_t x, uint32_t n) {\n  n &= 63;\n  return (x << n) | (x >> (64 - n));\n}\n\nstatic inline uint64_t  //\nwuffs_base__u64__rotate_right(uint64_t x, uint32_t n) {\n  n " +
-	"&= 63;\n  return (x >> n) | (x << (64 - n));\n}\n\n" +
+	"// --------\n\nstatic inline uint8_t  //\nwuffs_base__u8__rotate_left(uint8_t x, uint32_t n) {\n  n &= 7;\n  return ((uint8_t)(x << n)) | ((uint8_t)(x >> (8 - n)));\n}\n\nstatic inline uint8_t  //\nwuffs_base__u8__rotate_right(uint8_t x, uint32_t n) {\n  n &= 7;\n  return ((uint8_t)(x >> n)) | ((uint8_t)(x << (8 - n)));\n}\n\nstatic inline uint16_t  //\nwuffs_base__u16__rotate_left(uint16_t x, uint32_t n) {\n  n &= 15;\n  return ((uint16_t)(x << n)) | ((uint16_t)(x >> (16 - n)));\n}\n\nstatic inline uint16_t  //\nwuffs_base__u16__rotate_right(uint16_t x, uint32_t n) {\n  n &= 15;\n  return ((uint16_t)(x >> n)) | ((uint16_t)(x << (16 - n)));\n}\n\nstatic inline uint32_t  //\nwuffs_base__u32__rotate_left(uint32_t x, uint32_t n) {\n  n &= 31;\n  return ((uint32_t)(x << n)) | ((uint32_t)(x >> (32 - n)));\n}\n\nstatic inline uint32_t  //\nwuffs_base__u32__rotate_right(uint32_t x, uint32_t n) {\n  n &= 31;\n  return ((uint32_t)(x >> n)) | ((uint32_t)(x << (32 - n)));\n}\n\nstatic inline uint64_t  //\nwuffs_base__u64__rotate_left(uint64_t x, uint32_t n) " +
+	"{\n  n &= 63;\n  return ((uint64_t)(x << n)) | ((uint64_t)(x >> (64 - n)));\n}\n\nstatic inline uint64_t  //\nwuffs_base__u64__rotate_right(uint64_t x, uint32_t n) {\n  n &= 63;\n  return ((uint64_t)(x >> n)) | ((uint64_t)(x << (64 - n)));\n}\n\n" +
 	"" +
 	"// --------\n\n// Saturating arithmetic (sat_add, sat_sub) branchless bit-twiddling algorithms\n// are per https://locklessinc.com/articles/sat_arithmetic/\n//\n// It is important that the underlying types are unsigned integers, as signed\n// integer arithmetic overflow is undefined behavior in C.\n\nstatic inline uint8_t  //\nwuffs_base__u8__sat_add(uint8_t x, uint8_t y) {\n  uint8_t res = (uint8_t)(x + y);\n  res |= (uint8_t)(-(res < x));\n  return res;\n}\n\nstatic inline uint8_t  //\nwuffs_base__u8__sat_sub(uint8_t x, uint8_t y) {\n  uint8_t res = (uint8_t)(x - y);\n  res &= (uint8_t)(-(res <= x));\n  return res;\n}\n\nstatic inline uint16_t  //\nwuffs_base__u16__sat_add(uint16_t x, uint16_t y) {\n  uint16_t res = (uint16_t)(x + y);\n  res |= (uint16_t)(-(res < x));\n  return res;\n}\n\nstatic inline uint16_t  //\nwuffs_base__u16__sat_sub(uint16_t x, uint16_t y) {\n  uint16_t res = (uint16_t)(x - y);\n  res &= (uint16_t)(-(res <= x));\n  return res;\n}\n\nstatic inline uint32_t  //\nwuffs_base__u32__sat_add(uint32_t x, uint32_t y) {\n  uint32" +
 	"_t res = (uint32_t)(x + y);\n  res |= (uint32_t)(-(res < x));\n  return res;\n}\n\nstatic inline uint32_t  //\nwuffs_base__u32__sat_sub(uint32_t x, uint32_t y) {\n  uint32_t res = (uint32_t)(x - y);\n  res &= (uint32_t)(-(res <= x));\n  return res;\n}\n\nstatic inline uint64_t  //\nwuffs_base__u64__sat_add(uint64_t x, uint64_t y) {\n  uint64_t res = (uint64_t)(x + y);\n  res |= (uint64_t)(-(res < x));\n  return res;\n}\n\nstatic inline uint64_t  //\nwuffs_base__u64__sat_sub(uint64_t x, uint64_t y) {\n  uint64_t res = (uint64_t)(x - y);\n  res &= (uint64_t)(-(res <= x));\n  return res;\n}\n\n" +
diff --git a/release/c/wuffs-unsupported-snapshot.c b/release/c/wuffs-unsupported-snapshot.c
index 584d0be..b2e8233 100644
--- a/release/c/wuffs-unsupported-snapshot.c
+++ b/release/c/wuffs-unsupported-snapshot.c
@@ -807,49 +807,49 @@
 static inline uint8_t  //
 wuffs_base__u8__rotate_left(uint8_t x, uint32_t n) {
   n &= 7;
-  return (x << n) | (x >> (8 - n));
+  return ((uint8_t)(x << n)) | ((uint8_t)(x >> (8 - n)));
 }
 
 static inline uint8_t  //
 wuffs_base__u8__rotate_right(uint8_t x, uint32_t n) {
   n &= 7;
-  return (x >> n) | (x << (8 - n));
+  return ((uint8_t)(x >> n)) | ((uint8_t)(x << (8 - n)));
 }
 
 static inline uint16_t  //
 wuffs_base__u16__rotate_left(uint16_t x, uint32_t n) {
   n &= 15;
-  return (x << n) | (x >> (16 - n));
+  return ((uint16_t)(x << n)) | ((uint16_t)(x >> (16 - n)));
 }
 
 static inline uint16_t  //
 wuffs_base__u16__rotate_right(uint16_t x, uint32_t n) {
   n &= 15;
-  return (x >> n) | (x << (16 - n));
+  return ((uint16_t)(x >> n)) | ((uint16_t)(x << (16 - n)));
 }
 
 static inline uint32_t  //
 wuffs_base__u32__rotate_left(uint32_t x, uint32_t n) {
   n &= 31;
-  return (x << n) | (x >> (32 - n));
+  return ((uint32_t)(x << n)) | ((uint32_t)(x >> (32 - n)));
 }
 
 static inline uint32_t  //
 wuffs_base__u32__rotate_right(uint32_t x, uint32_t n) {
   n &= 31;
-  return (x >> n) | (x << (32 - n));
+  return ((uint32_t)(x >> n)) | ((uint32_t)(x << (32 - n)));
 }
 
 static inline uint64_t  //
 wuffs_base__u64__rotate_left(uint64_t x, uint32_t n) {
   n &= 63;
-  return (x << n) | (x >> (64 - n));
+  return ((uint64_t)(x << n)) | ((uint64_t)(x >> (64 - n)));
 }
 
 static inline uint64_t  //
 wuffs_base__u64__rotate_right(uint64_t x, uint32_t n) {
   n &= 63;
-  return (x >> n) | (x << (64 - n));
+  return ((uint64_t)(x >> n)) | ((uint64_t)(x << (64 - n)));
 }
 
 // --------