diff --git a/bindgen-tests/tests/expectations/tests/bitfield-32bit-overflow.rs b/bindgen-tests/tests/expectations/tests/bitfield-32bit-overflow.rs
index 6ec8539..1bd4eca 100644
--- a/bindgen-tests/tests/expectations/tests/bitfield-32bit-overflow.rs
+++ b/bindgen-tests/tests/expectations/tests/bitfield-32bit-overflow.rs
@@ -508,7 +508,7 @@
     #[inline]
     pub fn set_m0(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<0usize, 1u8>(val as u64)
         }
     }
@@ -528,7 +528,7 @@
     #[inline]
     pub unsafe fn set_m0_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -546,7 +546,7 @@
     #[inline]
     pub fn set_m1(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<1usize, 1u8>(val as u64)
         }
     }
@@ -566,7 +566,7 @@
     #[inline]
     pub unsafe fn set_m1_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -584,7 +584,7 @@
     #[inline]
     pub fn set_m2(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<2usize, 1u8>(val as u64)
         }
     }
@@ -604,7 +604,7 @@
     #[inline]
     pub unsafe fn set_m2_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -622,7 +622,7 @@
     #[inline]
     pub fn set_m3(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<3usize, 1u8>(val as u64)
         }
     }
@@ -642,7 +642,7 @@
     #[inline]
     pub unsafe fn set_m3_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -660,7 +660,7 @@
     #[inline]
     pub fn set_m4(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<4usize, 1u8>(val as u64)
         }
     }
@@ -680,7 +680,7 @@
     #[inline]
     pub unsafe fn set_m4_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -698,7 +698,7 @@
     #[inline]
     pub fn set_m5(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<5usize, 1u8>(val as u64)
         }
     }
@@ -718,7 +718,7 @@
     #[inline]
     pub unsafe fn set_m5_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -736,7 +736,7 @@
     #[inline]
     pub fn set_m6(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<6usize, 1u8>(val as u64)
         }
     }
@@ -756,7 +756,7 @@
     #[inline]
     pub unsafe fn set_m6_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -774,7 +774,7 @@
     #[inline]
     pub fn set_m7(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<7usize, 1u8>(val as u64)
         }
     }
@@ -794,7 +794,7 @@
     #[inline]
     pub unsafe fn set_m7_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -812,7 +812,7 @@
     #[inline]
     pub fn set_m8(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<8usize, 1u8>(val as u64)
         }
     }
@@ -832,7 +832,7 @@
     #[inline]
     pub unsafe fn set_m8_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -850,7 +850,7 @@
     #[inline]
     pub fn set_m9(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<9usize, 1u8>(val as u64)
         }
     }
@@ -870,7 +870,7 @@
     #[inline]
     pub unsafe fn set_m9_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -888,7 +888,7 @@
     #[inline]
     pub fn set_m10(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<10usize, 1u8>(val as u64)
         }
     }
@@ -908,7 +908,7 @@
     #[inline]
     pub unsafe fn set_m10_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -926,7 +926,7 @@
     #[inline]
     pub fn set_m11(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<11usize, 1u8>(val as u64)
         }
     }
@@ -946,7 +946,7 @@
     #[inline]
     pub unsafe fn set_m11_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -964,7 +964,7 @@
     #[inline]
     pub fn set_m12(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<12usize, 1u8>(val as u64)
         }
     }
@@ -984,7 +984,7 @@
     #[inline]
     pub unsafe fn set_m12_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -1002,7 +1002,7 @@
     #[inline]
     pub fn set_m13(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<13usize, 1u8>(val as u64)
         }
     }
@@ -1022,7 +1022,7 @@
     #[inline]
     pub unsafe fn set_m13_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -1040,7 +1040,7 @@
     #[inline]
     pub fn set_m14(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<14usize, 1u8>(val as u64)
         }
     }
@@ -1060,7 +1060,7 @@
     #[inline]
     pub unsafe fn set_m14_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -1078,7 +1078,7 @@
     #[inline]
     pub fn set_m15(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<15usize, 1u8>(val as u64)
         }
     }
@@ -1098,7 +1098,7 @@
     #[inline]
     pub unsafe fn set_m15_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -1116,7 +1116,7 @@
     #[inline]
     pub fn set_m16(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<16usize, 1u8>(val as u64)
         }
     }
@@ -1136,7 +1136,7 @@
     #[inline]
     pub unsafe fn set_m16_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -1154,7 +1154,7 @@
     #[inline]
     pub fn set_m17(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<17usize, 1u8>(val as u64)
         }
     }
@@ -1174,7 +1174,7 @@
     #[inline]
     pub unsafe fn set_m17_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -1192,7 +1192,7 @@
     #[inline]
     pub fn set_m18(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<18usize, 1u8>(val as u64)
         }
     }
@@ -1212,7 +1212,7 @@
     #[inline]
     pub unsafe fn set_m18_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -1230,7 +1230,7 @@
     #[inline]
     pub fn set_m19(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<19usize, 1u8>(val as u64)
         }
     }
@@ -1250,7 +1250,7 @@
     #[inline]
     pub unsafe fn set_m19_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -1268,7 +1268,7 @@
     #[inline]
     pub fn set_m20(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<20usize, 1u8>(val as u64)
         }
     }
@@ -1288,7 +1288,7 @@
     #[inline]
     pub unsafe fn set_m20_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -1306,7 +1306,7 @@
     #[inline]
     pub fn set_m21(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<21usize, 1u8>(val as u64)
         }
     }
@@ -1326,7 +1326,7 @@
     #[inline]
     pub unsafe fn set_m21_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -1344,7 +1344,7 @@
     #[inline]
     pub fn set_m22(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<22usize, 1u8>(val as u64)
         }
     }
@@ -1364,7 +1364,7 @@
     #[inline]
     pub unsafe fn set_m22_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -1382,7 +1382,7 @@
     #[inline]
     pub fn set_m23(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<23usize, 1u8>(val as u64)
         }
     }
@@ -1402,7 +1402,7 @@
     #[inline]
     pub unsafe fn set_m23_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -1420,7 +1420,7 @@
     #[inline]
     pub fn set_m24(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<24usize, 1u8>(val as u64)
         }
     }
@@ -1440,7 +1440,7 @@
     #[inline]
     pub unsafe fn set_m24_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -1458,7 +1458,7 @@
     #[inline]
     pub fn set_m25(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<25usize, 1u8>(val as u64)
         }
     }
@@ -1478,7 +1478,7 @@
     #[inline]
     pub unsafe fn set_m25_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -1496,7 +1496,7 @@
     #[inline]
     pub fn set_m26(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<26usize, 1u8>(val as u64)
         }
     }
@@ -1516,7 +1516,7 @@
     #[inline]
     pub unsafe fn set_m26_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -1534,7 +1534,7 @@
     #[inline]
     pub fn set_m27(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<27usize, 1u8>(val as u64)
         }
     }
@@ -1554,7 +1554,7 @@
     #[inline]
     pub unsafe fn set_m27_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -1572,7 +1572,7 @@
     #[inline]
     pub fn set_m28(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<28usize, 1u8>(val as u64)
         }
     }
@@ -1592,7 +1592,7 @@
     #[inline]
     pub unsafe fn set_m28_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -1610,7 +1610,7 @@
     #[inline]
     pub fn set_m29(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<29usize, 1u8>(val as u64)
         }
     }
@@ -1630,7 +1630,7 @@
     #[inline]
     pub unsafe fn set_m29_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -1648,7 +1648,7 @@
     #[inline]
     pub fn set_m30(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<30usize, 1u8>(val as u64)
         }
     }
@@ -1668,7 +1668,7 @@
     #[inline]
     pub unsafe fn set_m30_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -1686,7 +1686,7 @@
     #[inline]
     pub fn set_m31(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<31usize, 1u8>(val as u64)
         }
     }
@@ -1706,7 +1706,7 @@
     #[inline]
     pub unsafe fn set_m31_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -1724,7 +1724,7 @@
     #[inline]
     pub fn set_m32(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<32usize, 1u8>(val as u64)
         }
     }
@@ -1744,7 +1744,7 @@
     #[inline]
     pub unsafe fn set_m32_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 5usize],
             >>::raw_set_const::<
@@ -1795,7 +1795,7 @@
                 0usize,
                 1u8,
             >({
-                let m0: u8 = unsafe { ::std::mem::transmute(m0) };
+                let m0: u8 = m0 as _;
                 m0 as u64
             });
         __bindgen_bitfield_unit
@@ -1803,7 +1803,7 @@
                 1usize,
                 1u8,
             >({
-                let m1: u8 = unsafe { ::std::mem::transmute(m1) };
+                let m1: u8 = m1 as _;
                 m1 as u64
             });
         __bindgen_bitfield_unit
@@ -1811,7 +1811,7 @@
                 2usize,
                 1u8,
             >({
-                let m2: u8 = unsafe { ::std::mem::transmute(m2) };
+                let m2: u8 = m2 as _;
                 m2 as u64
             });
         __bindgen_bitfield_unit
@@ -1819,7 +1819,7 @@
                 3usize,
                 1u8,
             >({
-                let m3: u8 = unsafe { ::std::mem::transmute(m3) };
+                let m3: u8 = m3 as _;
                 m3 as u64
             });
         __bindgen_bitfield_unit
@@ -1827,7 +1827,7 @@
                 4usize,
                 1u8,
             >({
-                let m4: u8 = unsafe { ::std::mem::transmute(m4) };
+                let m4: u8 = m4 as _;
                 m4 as u64
             });
         __bindgen_bitfield_unit
@@ -1835,7 +1835,7 @@
                 5usize,
                 1u8,
             >({
-                let m5: u8 = unsafe { ::std::mem::transmute(m5) };
+                let m5: u8 = m5 as _;
                 m5 as u64
             });
         __bindgen_bitfield_unit
@@ -1843,7 +1843,7 @@
                 6usize,
                 1u8,
             >({
-                let m6: u8 = unsafe { ::std::mem::transmute(m6) };
+                let m6: u8 = m6 as _;
                 m6 as u64
             });
         __bindgen_bitfield_unit
@@ -1851,7 +1851,7 @@
                 7usize,
                 1u8,
             >({
-                let m7: u8 = unsafe { ::std::mem::transmute(m7) };
+                let m7: u8 = m7 as _;
                 m7 as u64
             });
         __bindgen_bitfield_unit
@@ -1859,7 +1859,7 @@
                 8usize,
                 1u8,
             >({
-                let m8: u8 = unsafe { ::std::mem::transmute(m8) };
+                let m8: u8 = m8 as _;
                 m8 as u64
             });
         __bindgen_bitfield_unit
@@ -1867,7 +1867,7 @@
                 9usize,
                 1u8,
             >({
-                let m9: u8 = unsafe { ::std::mem::transmute(m9) };
+                let m9: u8 = m9 as _;
                 m9 as u64
             });
         __bindgen_bitfield_unit
@@ -1875,7 +1875,7 @@
                 10usize,
                 1u8,
             >({
-                let m10: u8 = unsafe { ::std::mem::transmute(m10) };
+                let m10: u8 = m10 as _;
                 m10 as u64
             });
         __bindgen_bitfield_unit
@@ -1883,7 +1883,7 @@
                 11usize,
                 1u8,
             >({
-                let m11: u8 = unsafe { ::std::mem::transmute(m11) };
+                let m11: u8 = m11 as _;
                 m11 as u64
             });
         __bindgen_bitfield_unit
@@ -1891,7 +1891,7 @@
                 12usize,
                 1u8,
             >({
-                let m12: u8 = unsafe { ::std::mem::transmute(m12) };
+                let m12: u8 = m12 as _;
                 m12 as u64
             });
         __bindgen_bitfield_unit
@@ -1899,7 +1899,7 @@
                 13usize,
                 1u8,
             >({
-                let m13: u8 = unsafe { ::std::mem::transmute(m13) };
+                let m13: u8 = m13 as _;
                 m13 as u64
             });
         __bindgen_bitfield_unit
@@ -1907,7 +1907,7 @@
                 14usize,
                 1u8,
             >({
-                let m14: u8 = unsafe { ::std::mem::transmute(m14) };
+                let m14: u8 = m14 as _;
                 m14 as u64
             });
         __bindgen_bitfield_unit
@@ -1915,7 +1915,7 @@
                 15usize,
                 1u8,
             >({
-                let m15: u8 = unsafe { ::std::mem::transmute(m15) };
+                let m15: u8 = m15 as _;
                 m15 as u64
             });
         __bindgen_bitfield_unit
@@ -1923,7 +1923,7 @@
                 16usize,
                 1u8,
             >({
-                let m16: u8 = unsafe { ::std::mem::transmute(m16) };
+                let m16: u8 = m16 as _;
                 m16 as u64
             });
         __bindgen_bitfield_unit
@@ -1931,7 +1931,7 @@
                 17usize,
                 1u8,
             >({
-                let m17: u8 = unsafe { ::std::mem::transmute(m17) };
+                let m17: u8 = m17 as _;
                 m17 as u64
             });
         __bindgen_bitfield_unit
@@ -1939,7 +1939,7 @@
                 18usize,
                 1u8,
             >({
-                let m18: u8 = unsafe { ::std::mem::transmute(m18) };
+                let m18: u8 = m18 as _;
                 m18 as u64
             });
         __bindgen_bitfield_unit
@@ -1947,7 +1947,7 @@
                 19usize,
                 1u8,
             >({
-                let m19: u8 = unsafe { ::std::mem::transmute(m19) };
+                let m19: u8 = m19 as _;
                 m19 as u64
             });
         __bindgen_bitfield_unit
@@ -1955,7 +1955,7 @@
                 20usize,
                 1u8,
             >({
-                let m20: u8 = unsafe { ::std::mem::transmute(m20) };
+                let m20: u8 = m20 as _;
                 m20 as u64
             });
         __bindgen_bitfield_unit
@@ -1963,7 +1963,7 @@
                 21usize,
                 1u8,
             >({
-                let m21: u8 = unsafe { ::std::mem::transmute(m21) };
+                let m21: u8 = m21 as _;
                 m21 as u64
             });
         __bindgen_bitfield_unit
@@ -1971,7 +1971,7 @@
                 22usize,
                 1u8,
             >({
-                let m22: u8 = unsafe { ::std::mem::transmute(m22) };
+                let m22: u8 = m22 as _;
                 m22 as u64
             });
         __bindgen_bitfield_unit
@@ -1979,7 +1979,7 @@
                 23usize,
                 1u8,
             >({
-                let m23: u8 = unsafe { ::std::mem::transmute(m23) };
+                let m23: u8 = m23 as _;
                 m23 as u64
             });
         __bindgen_bitfield_unit
@@ -1987,7 +1987,7 @@
                 24usize,
                 1u8,
             >({
-                let m24: u8 = unsafe { ::std::mem::transmute(m24) };
+                let m24: u8 = m24 as _;
                 m24 as u64
             });
         __bindgen_bitfield_unit
@@ -1995,7 +1995,7 @@
                 25usize,
                 1u8,
             >({
-                let m25: u8 = unsafe { ::std::mem::transmute(m25) };
+                let m25: u8 = m25 as _;
                 m25 as u64
             });
         __bindgen_bitfield_unit
@@ -2003,7 +2003,7 @@
                 26usize,
                 1u8,
             >({
-                let m26: u8 = unsafe { ::std::mem::transmute(m26) };
+                let m26: u8 = m26 as _;
                 m26 as u64
             });
         __bindgen_bitfield_unit
@@ -2011,7 +2011,7 @@
                 27usize,
                 1u8,
             >({
-                let m27: u8 = unsafe { ::std::mem::transmute(m27) };
+                let m27: u8 = m27 as _;
                 m27 as u64
             });
         __bindgen_bitfield_unit
@@ -2019,7 +2019,7 @@
                 28usize,
                 1u8,
             >({
-                let m28: u8 = unsafe { ::std::mem::transmute(m28) };
+                let m28: u8 = m28 as _;
                 m28 as u64
             });
         __bindgen_bitfield_unit
@@ -2027,7 +2027,7 @@
                 29usize,
                 1u8,
             >({
-                let m29: u8 = unsafe { ::std::mem::transmute(m29) };
+                let m29: u8 = m29 as _;
                 m29 as u64
             });
         __bindgen_bitfield_unit
@@ -2035,7 +2035,7 @@
                 30usize,
                 1u8,
             >({
-                let m30: u8 = unsafe { ::std::mem::transmute(m30) };
+                let m30: u8 = m30 as _;
                 m30 as u64
             });
         __bindgen_bitfield_unit
@@ -2043,7 +2043,7 @@
                 31usize,
                 1u8,
             >({
-                let m31: u8 = unsafe { ::std::mem::transmute(m31) };
+                let m31: u8 = m31 as _;
                 m31 as u64
             });
         __bindgen_bitfield_unit
@@ -2051,7 +2051,7 @@
                 32usize,
                 1u8,
             >({
-                let m32: u8 = unsafe { ::std::mem::transmute(m32) };
+                let m32: u8 = m32 as _;
                 m32 as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/bitfield-large.rs b/bindgen-tests/tests/expectations/tests/bitfield-large.rs
index db4fd63..6abd8ac 100644
--- a/bindgen-tests/tests/expectations/tests/bitfield-large.rs
+++ b/bindgen-tests/tests/expectations/tests/bitfield-large.rs
@@ -509,7 +509,7 @@
     #[inline]
     pub fn set_x(&mut self, val: i128) {
         unsafe {
-            let val: u128 = ::std::mem::transmute(val);
+            let val: u128 = val as _;
             self._bitfield_1.set_const::<0usize, 128u8>(val as u64)
         }
     }
@@ -529,7 +529,7 @@
     #[inline]
     pub unsafe fn set_x_raw(this: *mut Self, val: i128) {
         unsafe {
-            let val: u128 = ::std::mem::transmute(val);
+            let val: u128 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -546,7 +546,7 @@
                 0usize,
                 128u8,
             >({
-                let x: u128 = unsafe { ::std::mem::transmute(x) };
+                let x: u128 = x as _;
                 x as u64
             });
         __bindgen_bitfield_unit
@@ -577,7 +577,7 @@
     #[inline]
     pub fn set_x(&mut self, val: i128) {
         unsafe {
-            let val: u128 = ::std::mem::transmute(val);
+            let val: u128 = val as _;
             self._bitfield_1.set_const::<0usize, 80u8>(val as u64)
         }
     }
@@ -597,7 +597,7 @@
     #[inline]
     pub unsafe fn set_x_raw(this: *mut Self, val: i128) {
         unsafe {
-            let val: u128 = ::std::mem::transmute(val);
+            let val: u128 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -615,7 +615,7 @@
     #[inline]
     pub fn set_y(&mut self, val: i128) {
         unsafe {
-            let val: u128 = ::std::mem::transmute(val);
+            let val: u128 = val as _;
             self._bitfield_1.set_const::<80usize, 48u8>(val as u64)
         }
     }
@@ -635,7 +635,7 @@
     #[inline]
     pub unsafe fn set_y_raw(this: *mut Self, val: i128) {
         unsafe {
-            let val: u128 = ::std::mem::transmute(val);
+            let val: u128 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -652,7 +652,7 @@
                 0usize,
                 80u8,
             >({
-                let x: u128 = unsafe { ::std::mem::transmute(x) };
+                let x: u128 = x as _;
                 x as u64
             });
         __bindgen_bitfield_unit
@@ -660,7 +660,7 @@
                 80usize,
                 48u8,
             >({
-                let y: u128 = unsafe { ::std::mem::transmute(y) };
+                let y: u128 = y as _;
                 y as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/bitfield-linux-32.rs b/bindgen-tests/tests/expectations/tests/bitfield-linux-32.rs
index 8bac523..e8f91c3 100644
--- a/bindgen-tests/tests/expectations/tests/bitfield-linux-32.rs
+++ b/bindgen-tests/tests/expectations/tests/bitfield-linux-32.rs
@@ -504,7 +504,7 @@
     #[inline]
     pub fn set_x(&mut self, val: u64) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             self._bitfield_1.set_const::<0usize, 56u8>(val as u64)
         }
     }
@@ -524,7 +524,7 @@
     #[inline]
     pub unsafe fn set_x_raw(this: *mut Self, val: u64) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 8usize],
             >>::raw_set_const::<
@@ -542,7 +542,7 @@
     #[inline]
     pub fn set_y(&mut self, val: u64) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             self._bitfield_1.set_const::<56usize, 8u8>(val as u64)
         }
     }
@@ -562,7 +562,7 @@
     #[inline]
     pub unsafe fn set_y_raw(this: *mut Self, val: u64) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 8usize],
             >>::raw_set_const::<
@@ -579,7 +579,7 @@
                 0usize,
                 56u8,
             >({
-                let x: u64 = unsafe { ::std::mem::transmute(x) };
+                let x: u64 = x as _;
                 x as u64
             });
         __bindgen_bitfield_unit
@@ -587,7 +587,7 @@
                 56usize,
                 8u8,
             >({
-                let y: u64 = unsafe { ::std::mem::transmute(y) };
+                let y: u64 = y as _;
                 y as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/bitfield-method-same-name.rs b/bindgen-tests/tests/expectations/tests/bitfield-method-same-name.rs
index 70fc98d..928e626 100644
--- a/bindgen-tests/tests/expectations/tests/bitfield-method-same-name.rs
+++ b/bindgen-tests/tests/expectations/tests/bitfield-method-same-name.rs
@@ -520,7 +520,7 @@
     #[inline]
     pub fn set_type__bindgen_bitfield(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<0usize, 3u8>(val as u64)
         }
     }
@@ -545,7 +545,7 @@
         val: ::std::os::raw::c_char,
     ) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -564,9 +564,7 @@
                 0usize,
                 3u8,
             >({
-                let type__bindgen_bitfield: u8 = unsafe {
-                    ::std::mem::transmute(type__bindgen_bitfield)
-                };
+                let type__bindgen_bitfield: u8 = type__bindgen_bitfield as _;
                 type__bindgen_bitfield as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/bitfield-template.rs b/bindgen-tests/tests/expectations/tests/bitfield-template.rs
index 5678344..3ce4d0e 100644
--- a/bindgen-tests/tests/expectations/tests/bitfield-template.rs
+++ b/bindgen-tests/tests/expectations/tests/bitfield-template.rs
@@ -514,7 +514,7 @@
     #[inline]
     pub fn set_b(&mut self, val: bool) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<0usize, 8u8>(val as u64)
         }
     }
@@ -534,7 +534,7 @@
     #[inline]
     pub unsafe fn set_b_raw(this: *mut Self, val: bool) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -551,7 +551,7 @@
                 0usize,
                 8u8,
             >({
-                let b: u8 = unsafe { ::std::mem::transmute(b) };
+                let b: u8 = b as _;
                 b as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/bitfield_align.rs b/bindgen-tests/tests/expectations/tests/bitfield_align.rs
index c7f50fc..31dbe2d 100644
--- a/bindgen-tests/tests/expectations/tests/bitfield_align.rs
+++ b/bindgen-tests/tests/expectations/tests/bitfield_align.rs
@@ -513,7 +513,7 @@
     #[inline]
     pub fn set_b1(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<0usize, 1u8>(val as u64)
         }
     }
@@ -533,7 +533,7 @@
     #[inline]
     pub unsafe fn set_b1_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -551,7 +551,7 @@
     #[inline]
     pub fn set_b2(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<1usize, 1u8>(val as u64)
         }
     }
@@ -571,7 +571,7 @@
     #[inline]
     pub unsafe fn set_b2_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -589,7 +589,7 @@
     #[inline]
     pub fn set_b3(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<2usize, 1u8>(val as u64)
         }
     }
@@ -609,7 +609,7 @@
     #[inline]
     pub unsafe fn set_b3_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -627,7 +627,7 @@
     #[inline]
     pub fn set_b4(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<3usize, 1u8>(val as u64)
         }
     }
@@ -647,7 +647,7 @@
     #[inline]
     pub unsafe fn set_b4_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -665,7 +665,7 @@
     #[inline]
     pub fn set_b5(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<4usize, 1u8>(val as u64)
         }
     }
@@ -685,7 +685,7 @@
     #[inline]
     pub unsafe fn set_b5_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -703,7 +703,7 @@
     #[inline]
     pub fn set_b6(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<5usize, 1u8>(val as u64)
         }
     }
@@ -723,7 +723,7 @@
     #[inline]
     pub unsafe fn set_b6_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -741,7 +741,7 @@
     #[inline]
     pub fn set_b7(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<6usize, 1u8>(val as u64)
         }
     }
@@ -761,7 +761,7 @@
     #[inline]
     pub unsafe fn set_b7_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -779,7 +779,7 @@
     #[inline]
     pub fn set_b8(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<7usize, 1u8>(val as u64)
         }
     }
@@ -799,7 +799,7 @@
     #[inline]
     pub unsafe fn set_b8_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -817,7 +817,7 @@
     #[inline]
     pub fn set_b9(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<8usize, 1u8>(val as u64)
         }
     }
@@ -837,7 +837,7 @@
     #[inline]
     pub unsafe fn set_b9_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -855,7 +855,7 @@
     #[inline]
     pub fn set_b10(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<9usize, 1u8>(val as u64)
         }
     }
@@ -875,7 +875,7 @@
     #[inline]
     pub unsafe fn set_b10_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -903,7 +903,7 @@
                 0usize,
                 1u8,
             >({
-                let b1: u32 = unsafe { ::std::mem::transmute(b1) };
+                let b1: u32 = b1 as _;
                 b1 as u64
             });
         __bindgen_bitfield_unit
@@ -911,7 +911,7 @@
                 1usize,
                 1u8,
             >({
-                let b2: u32 = unsafe { ::std::mem::transmute(b2) };
+                let b2: u32 = b2 as _;
                 b2 as u64
             });
         __bindgen_bitfield_unit
@@ -919,7 +919,7 @@
                 2usize,
                 1u8,
             >({
-                let b3: u32 = unsafe { ::std::mem::transmute(b3) };
+                let b3: u32 = b3 as _;
                 b3 as u64
             });
         __bindgen_bitfield_unit
@@ -927,7 +927,7 @@
                 3usize,
                 1u8,
             >({
-                let b4: u32 = unsafe { ::std::mem::transmute(b4) };
+                let b4: u32 = b4 as _;
                 b4 as u64
             });
         __bindgen_bitfield_unit
@@ -935,7 +935,7 @@
                 4usize,
                 1u8,
             >({
-                let b5: u32 = unsafe { ::std::mem::transmute(b5) };
+                let b5: u32 = b5 as _;
                 b5 as u64
             });
         __bindgen_bitfield_unit
@@ -943,7 +943,7 @@
                 5usize,
                 1u8,
             >({
-                let b6: u32 = unsafe { ::std::mem::transmute(b6) };
+                let b6: u32 = b6 as _;
                 b6 as u64
             });
         __bindgen_bitfield_unit
@@ -951,7 +951,7 @@
                 6usize,
                 1u8,
             >({
-                let b7: u32 = unsafe { ::std::mem::transmute(b7) };
+                let b7: u32 = b7 as _;
                 b7 as u64
             });
         __bindgen_bitfield_unit
@@ -959,7 +959,7 @@
                 7usize,
                 1u8,
             >({
-                let b8: u32 = unsafe { ::std::mem::transmute(b8) };
+                let b8: u32 = b8 as _;
                 b8 as u64
             });
         __bindgen_bitfield_unit
@@ -967,7 +967,7 @@
                 8usize,
                 1u8,
             >({
-                let b9: u32 = unsafe { ::std::mem::transmute(b9) };
+                let b9: u32 = b9 as _;
                 b9 as u64
             });
         __bindgen_bitfield_unit
@@ -975,7 +975,7 @@
                 9usize,
                 1u8,
             >({
-                let b10: u32 = unsafe { ::std::mem::transmute(b10) };
+                let b10: u32 = b10 as _;
                 b10 as u64
             });
         __bindgen_bitfield_unit
@@ -1002,7 +1002,7 @@
     #[inline]
     pub fn set_foo(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<0usize, 31u8>(val as u64)
         }
     }
@@ -1022,7 +1022,7 @@
     #[inline]
     pub unsafe fn set_foo_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 4usize],
             >>::raw_set_const::<
@@ -1040,7 +1040,7 @@
     #[inline]
     pub fn set_bar(&mut self, val: ::std::os::raw::c_uchar) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<31usize, 1u8>(val as u64)
         }
     }
@@ -1060,7 +1060,7 @@
     #[inline]
     pub unsafe fn set_bar_raw(this: *mut Self, val: ::std::os::raw::c_uchar) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 4usize],
             >>::raw_set_const::<
@@ -1080,7 +1080,7 @@
                 0usize,
                 31u8,
             >({
-                let foo: u32 = unsafe { ::std::mem::transmute(foo) };
+                let foo: u32 = foo as _;
                 foo as u64
             });
         __bindgen_bitfield_unit
@@ -1088,7 +1088,7 @@
                 31usize,
                 1u8,
             >({
-                let bar: u8 = unsafe { ::std::mem::transmute(bar) };
+                let bar: u8 = bar as _;
                 bar as u64
             });
         __bindgen_bitfield_unit
@@ -1118,7 +1118,7 @@
     #[inline]
     pub fn set_b1(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<0usize, 1u8>(val as u64)
         }
     }
@@ -1138,7 +1138,7 @@
     #[inline]
     pub unsafe fn set_b1_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -1156,7 +1156,7 @@
     #[inline]
     pub fn set_b2(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<1usize, 1u8>(val as u64)
         }
     }
@@ -1176,7 +1176,7 @@
     #[inline]
     pub unsafe fn set_b2_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -1196,7 +1196,7 @@
                 0usize,
                 1u8,
             >({
-                let b1: u32 = unsafe { ::std::mem::transmute(b1) };
+                let b1: u32 = b1 as _;
                 b1 as u64
             });
         __bindgen_bitfield_unit
@@ -1204,7 +1204,7 @@
                 1usize,
                 1u8,
             >({
-                let b2: u32 = unsafe { ::std::mem::transmute(b2) };
+                let b2: u32 = b2 as _;
                 b2 as u64
             });
         __bindgen_bitfield_unit
@@ -1232,7 +1232,7 @@
     #[inline]
     pub fn set_nWeekDay(&mut self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<0usize, 3u8>(val as u64)
         }
     }
@@ -1252,7 +1252,7 @@
     #[inline]
     pub unsafe fn set_nWeekDay_raw(this: *mut Self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 3usize],
             >>::raw_set_const::<
@@ -1270,7 +1270,7 @@
     #[inline]
     pub fn set_nMonthDay(&mut self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<3usize, 6u8>(val as u64)
         }
     }
@@ -1290,7 +1290,7 @@
     #[inline]
     pub unsafe fn set_nMonthDay_raw(this: *mut Self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 3usize],
             >>::raw_set_const::<
@@ -1308,7 +1308,7 @@
     #[inline]
     pub fn set_nMonth(&mut self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<9usize, 5u8>(val as u64)
         }
     }
@@ -1328,7 +1328,7 @@
     #[inline]
     pub unsafe fn set_nMonth_raw(this: *mut Self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 3usize],
             >>::raw_set_const::<
@@ -1346,7 +1346,7 @@
     #[inline]
     pub fn set_nYear(&mut self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<16usize, 8u8>(val as u64)
         }
     }
@@ -1366,7 +1366,7 @@
     #[inline]
     pub unsafe fn set_nYear_raw(this: *mut Self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 3usize],
             >>::raw_set_const::<
@@ -1388,7 +1388,7 @@
                 0usize,
                 3u8,
             >({
-                let nWeekDay: u16 = unsafe { ::std::mem::transmute(nWeekDay) };
+                let nWeekDay: u16 = nWeekDay as _;
                 nWeekDay as u64
             });
         __bindgen_bitfield_unit
@@ -1396,7 +1396,7 @@
                 3usize,
                 6u8,
             >({
-                let nMonthDay: u16 = unsafe { ::std::mem::transmute(nMonthDay) };
+                let nMonthDay: u16 = nMonthDay as _;
                 nMonthDay as u64
             });
         __bindgen_bitfield_unit
@@ -1404,7 +1404,7 @@
                 9usize,
                 5u8,
             >({
-                let nMonth: u16 = unsafe { ::std::mem::transmute(nMonth) };
+                let nMonth: u16 = nMonth as _;
                 nMonth as u64
             });
         __bindgen_bitfield_unit
@@ -1412,7 +1412,7 @@
                 16usize,
                 8u8,
             >({
-                let nYear: u16 = unsafe { ::std::mem::transmute(nYear) };
+                let nYear: u16 = nYear as _;
                 nYear as u64
             });
         __bindgen_bitfield_unit
@@ -1439,7 +1439,7 @@
     #[inline]
     pub fn set_nWeekDay(&mut self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<0usize, 3u8>(val as u64)
         }
     }
@@ -1459,7 +1459,7 @@
     #[inline]
     pub unsafe fn set_nWeekDay_raw(this: *mut Self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 4usize],
             >>::raw_set_const::<
@@ -1477,7 +1477,7 @@
     #[inline]
     pub fn set_nMonthDay(&mut self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<3usize, 6u8>(val as u64)
         }
     }
@@ -1497,7 +1497,7 @@
     #[inline]
     pub unsafe fn set_nMonthDay_raw(this: *mut Self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 4usize],
             >>::raw_set_const::<
@@ -1515,7 +1515,7 @@
     #[inline]
     pub fn set_nMonth(&mut self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<9usize, 5u8>(val as u64)
         }
     }
@@ -1535,7 +1535,7 @@
     #[inline]
     pub unsafe fn set_nMonth_raw(this: *mut Self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 4usize],
             >>::raw_set_const::<
@@ -1553,7 +1553,7 @@
     #[inline]
     pub fn set_nYear(&mut self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<16usize, 8u8>(val as u64)
         }
     }
@@ -1573,7 +1573,7 @@
     #[inline]
     pub unsafe fn set_nYear_raw(this: *mut Self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 4usize],
             >>::raw_set_const::<
@@ -1591,7 +1591,7 @@
     #[inline]
     pub fn set_byte(&mut self, val: ::std::os::raw::c_uchar) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<24usize, 8u8>(val as u64)
         }
     }
@@ -1611,7 +1611,7 @@
     #[inline]
     pub unsafe fn set_byte_raw(this: *mut Self, val: ::std::os::raw::c_uchar) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 4usize],
             >>::raw_set_const::<
@@ -1634,7 +1634,7 @@
                 0usize,
                 3u8,
             >({
-                let nWeekDay: u16 = unsafe { ::std::mem::transmute(nWeekDay) };
+                let nWeekDay: u16 = nWeekDay as _;
                 nWeekDay as u64
             });
         __bindgen_bitfield_unit
@@ -1642,7 +1642,7 @@
                 3usize,
                 6u8,
             >({
-                let nMonthDay: u16 = unsafe { ::std::mem::transmute(nMonthDay) };
+                let nMonthDay: u16 = nMonthDay as _;
                 nMonthDay as u64
             });
         __bindgen_bitfield_unit
@@ -1650,7 +1650,7 @@
                 9usize,
                 5u8,
             >({
-                let nMonth: u16 = unsafe { ::std::mem::transmute(nMonth) };
+                let nMonth: u16 = nMonth as _;
                 nMonth as u64
             });
         __bindgen_bitfield_unit
@@ -1658,7 +1658,7 @@
                 16usize,
                 8u8,
             >({
-                let nYear: u16 = unsafe { ::std::mem::transmute(nYear) };
+                let nYear: u16 = nYear as _;
                 nYear as u64
             });
         __bindgen_bitfield_unit
@@ -1666,7 +1666,7 @@
                 24usize,
                 8u8,
             >({
-                let byte: u8 = unsafe { ::std::mem::transmute(byte) };
+                let byte: u8 = byte as _;
                 byte as u64
             });
         __bindgen_bitfield_unit
@@ -1695,7 +1695,7 @@
     #[inline]
     pub fn set_nWeekDay(&mut self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<0usize, 3u8>(val as u64)
         }
     }
@@ -1715,7 +1715,7 @@
     #[inline]
     pub unsafe fn set_nWeekDay_raw(this: *mut Self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 3usize],
             >>::raw_set_const::<
@@ -1733,7 +1733,7 @@
     #[inline]
     pub fn set_nMonthDay(&mut self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<3usize, 6u8>(val as u64)
         }
     }
@@ -1753,7 +1753,7 @@
     #[inline]
     pub unsafe fn set_nMonthDay_raw(this: *mut Self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 3usize],
             >>::raw_set_const::<
@@ -1771,7 +1771,7 @@
     #[inline]
     pub fn set_nMonth(&mut self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<9usize, 5u8>(val as u64)
         }
     }
@@ -1791,7 +1791,7 @@
     #[inline]
     pub unsafe fn set_nMonth_raw(this: *mut Self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 3usize],
             >>::raw_set_const::<
@@ -1809,7 +1809,7 @@
     #[inline]
     pub fn set_nYear(&mut self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<16usize, 8u8>(val as u64)
         }
     }
@@ -1829,7 +1829,7 @@
     #[inline]
     pub unsafe fn set_nYear_raw(this: *mut Self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 3usize],
             >>::raw_set_const::<
@@ -1851,7 +1851,7 @@
                 0usize,
                 3u8,
             >({
-                let nWeekDay: u16 = unsafe { ::std::mem::transmute(nWeekDay) };
+                let nWeekDay: u16 = nWeekDay as _;
                 nWeekDay as u64
             });
         __bindgen_bitfield_unit
@@ -1859,7 +1859,7 @@
                 3usize,
                 6u8,
             >({
-                let nMonthDay: u16 = unsafe { ::std::mem::transmute(nMonthDay) };
+                let nMonthDay: u16 = nMonthDay as _;
                 nMonthDay as u64
             });
         __bindgen_bitfield_unit
@@ -1867,7 +1867,7 @@
                 9usize,
                 5u8,
             >({
-                let nMonth: u16 = unsafe { ::std::mem::transmute(nMonth) };
+                let nMonth: u16 = nMonth as _;
                 nMonth as u64
             });
         __bindgen_bitfield_unit
@@ -1875,7 +1875,7 @@
                 16usize,
                 8u8,
             >({
-                let nYear: u16 = unsafe { ::std::mem::transmute(nYear) };
+                let nYear: u16 = nYear as _;
                 nYear as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/bitfield_align_2.rs b/bindgen-tests/tests/expectations/tests/bitfield_align_2.rs
index 9d5591e..c63b753 100644
--- a/bindgen-tests/tests/expectations/tests/bitfield_align_2.rs
+++ b/bindgen-tests/tests/expectations/tests/bitfield_align_2.rs
@@ -527,7 +527,7 @@
     #[inline]
     pub fn set_tag(&mut self, val: MyEnum) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<0usize, 2u8>(val as u64)
         }
     }
@@ -547,7 +547,7 @@
     #[inline]
     pub unsafe fn set_tag_raw(this: *mut Self, val: MyEnum) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 8usize],
             >>::raw_set_const::<
@@ -565,7 +565,7 @@
     #[inline]
     pub fn set_ptr(&mut self, val: ::std::os::raw::c_long) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             self._bitfield_1.set_const::<2usize, 62u8>(val as u64)
         }
     }
@@ -585,7 +585,7 @@
     #[inline]
     pub unsafe fn set_ptr_raw(this: *mut Self, val: ::std::os::raw::c_long) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 8usize],
             >>::raw_set_const::<
@@ -605,7 +605,7 @@
                 0usize,
                 2u8,
             >({
-                let tag: u32 = unsafe { ::std::mem::transmute(tag) };
+                let tag: u32 = tag as _;
                 tag as u64
             });
         __bindgen_bitfield_unit
@@ -613,7 +613,7 @@
                 2usize,
                 62u8,
             >({
-                let ptr: u64 = unsafe { ::std::mem::transmute(ptr) };
+                let ptr: u64 = ptr as _;
                 ptr as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/bitfield_method_mangling.rs b/bindgen-tests/tests/expectations/tests/bitfield_method_mangling.rs
index a4b2dc0..d915950 100644
--- a/bindgen-tests/tests/expectations/tests/bitfield_method_mangling.rs
+++ b/bindgen-tests/tests/expectations/tests/bitfield_method_mangling.rs
@@ -513,7 +513,7 @@
     #[inline]
     pub fn set_pad3(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<0usize, 24u8>(val as u64)
         }
     }
@@ -533,7 +533,7 @@
     #[inline]
     pub unsafe fn set_pad3_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 4usize],
             >>::raw_set_const::<
@@ -551,7 +551,7 @@
     #[inline]
     pub fn set_type(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<24usize, 8u8>(val as u64)
         }
     }
@@ -571,7 +571,7 @@
     #[inline]
     pub unsafe fn set_type_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 4usize],
             >>::raw_set_const::<
@@ -591,7 +591,7 @@
                 0usize,
                 24u8,
             >({
-                let pad3: u32 = unsafe { ::std::mem::transmute(pad3) };
+                let pad3: u32 = pad3 as _;
                 pad3 as u64
             });
         __bindgen_bitfield_unit
@@ -599,7 +599,7 @@
                 24usize,
                 8u8,
             >({
-                let type_: u32 = unsafe { ::std::mem::transmute(type_) };
+                let type_: u32 = type_ as _;
                 type_ as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/bitfield_pack_offset.rs b/bindgen-tests/tests/expectations/tests/bitfield_pack_offset.rs
index 2b0081a..0a5ac00 100644
--- a/bindgen-tests/tests/expectations/tests/bitfield_pack_offset.rs
+++ b/bindgen-tests/tests/expectations/tests/bitfield_pack_offset.rs
@@ -526,7 +526,7 @@
     #[inline]
     pub fn set_firmness(&mut self, val: ::std::os::raw::c_uchar) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<0usize, 4u8>(val as u64)
         }
     }
@@ -546,7 +546,7 @@
     #[inline]
     pub unsafe fn set_firmness_raw(this: *mut Self, val: ::std::os::raw::c_uchar) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 3usize],
             >>::raw_set_const::<
@@ -564,7 +564,7 @@
     #[inline]
     pub fn set_color(&mut self, val: ::std::os::raw::c_uchar) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<4usize, 4u8>(val as u64)
         }
     }
@@ -584,7 +584,7 @@
     #[inline]
     pub unsafe fn set_color_raw(this: *mut Self, val: ::std::os::raw::c_uchar) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 3usize],
             >>::raw_set_const::<
@@ -602,7 +602,7 @@
     #[inline]
     pub fn set_weedsBonus(&mut self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<8usize, 3u8>(val as u64)
         }
     }
@@ -622,7 +622,7 @@
     #[inline]
     pub unsafe fn set_weedsBonus_raw(this: *mut Self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 3usize],
             >>::raw_set_const::<
@@ -640,7 +640,7 @@
     #[inline]
     pub fn set_pestsBonus(&mut self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<11usize, 3u8>(val as u64)
         }
     }
@@ -660,7 +660,7 @@
     #[inline]
     pub unsafe fn set_pestsBonus_raw(this: *mut Self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 3usize],
             >>::raw_set_const::<
@@ -678,7 +678,7 @@
     #[inline]
     pub fn set_size(&mut self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<14usize, 10u8>(val as u64)
         }
     }
@@ -698,7 +698,7 @@
     #[inline]
     pub unsafe fn set_size_raw(this: *mut Self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 3usize],
             >>::raw_set_const::<
@@ -721,7 +721,7 @@
                 0usize,
                 4u8,
             >({
-                let firmness: u8 = unsafe { ::std::mem::transmute(firmness) };
+                let firmness: u8 = firmness as _;
                 firmness as u64
             });
         __bindgen_bitfield_unit
@@ -729,7 +729,7 @@
                 4usize,
                 4u8,
             >({
-                let color: u8 = unsafe { ::std::mem::transmute(color) };
+                let color: u8 = color as _;
                 color as u64
             });
         __bindgen_bitfield_unit
@@ -737,7 +737,7 @@
                 8usize,
                 3u8,
             >({
-                let weedsBonus: u16 = unsafe { ::std::mem::transmute(weedsBonus) };
+                let weedsBonus: u16 = weedsBonus as _;
                 weedsBonus as u64
             });
         __bindgen_bitfield_unit
@@ -745,7 +745,7 @@
                 11usize,
                 3u8,
             >({
-                let pestsBonus: u16 = unsafe { ::std::mem::transmute(pestsBonus) };
+                let pestsBonus: u16 = pestsBonus as _;
                 pestsBonus as u64
             });
         __bindgen_bitfield_unit
@@ -753,7 +753,7 @@
                 14usize,
                 10u8,
             >({
-                let size: u16 = unsafe { ::std::mem::transmute(size) };
+                let size: u16 = size as _;
                 size as u64
             });
         __bindgen_bitfield_unit
@@ -767,7 +767,7 @@
     #[inline]
     pub fn set_minYield(&mut self, val: ::std::os::raw::c_uchar) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_2.set_const::<0usize, 4u8>(val as u64)
         }
     }
@@ -787,7 +787,7 @@
     #[inline]
     pub unsafe fn set_minYield_raw(this: *mut Self, val: ::std::os::raw::c_uchar) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -805,7 +805,7 @@
     #[inline]
     pub fn set_waterBonus(&mut self, val: ::std::os::raw::c_uchar) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_2.set_const::<4usize, 4u8>(val as u64)
         }
     }
@@ -825,7 +825,7 @@
     #[inline]
     pub unsafe fn set_waterBonus_raw(this: *mut Self, val: ::std::os::raw::c_uchar) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -845,7 +845,7 @@
                 0usize,
                 4u8,
             >({
-                let minYield: u8 = unsafe { ::std::mem::transmute(minYield) };
+                let minYield: u8 = minYield as _;
                 minYield as u64
             });
         __bindgen_bitfield_unit
@@ -853,7 +853,7 @@
                 4usize,
                 4u8,
             >({
-                let waterBonus: u8 = unsafe { ::std::mem::transmute(waterBonus) };
+                let waterBonus: u8 = waterBonus as _;
                 waterBonus as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/bitfield_pragma_packed.rs b/bindgen-tests/tests/expectations/tests/bitfield_pragma_packed.rs
index fd16e0d..882e1a6 100644
--- a/bindgen-tests/tests/expectations/tests/bitfield_pragma_packed.rs
+++ b/bindgen-tests/tests/expectations/tests/bitfield_pragma_packed.rs
@@ -508,7 +508,7 @@
     #[inline]
     pub fn set_a(&mut self, val: ::std::os::raw::c_uchar) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<0usize, 1u8>(val as u64)
         }
     }
@@ -528,7 +528,7 @@
     #[inline]
     pub unsafe fn set_a_raw(this: *mut Self, val: ::std::os::raw::c_uchar) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 4usize],
             >>::raw_set_const::<
@@ -546,7 +546,7 @@
     #[inline]
     pub fn set_b(&mut self, val: ::std::os::raw::c_uchar) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<1usize, 1u8>(val as u64)
         }
     }
@@ -566,7 +566,7 @@
     #[inline]
     pub unsafe fn set_b_raw(this: *mut Self, val: ::std::os::raw::c_uchar) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 4usize],
             >>::raw_set_const::<
@@ -584,7 +584,7 @@
     #[inline]
     pub fn set_c(&mut self, val: ::std::os::raw::c_uchar) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<2usize, 6u8>(val as u64)
         }
     }
@@ -604,7 +604,7 @@
     #[inline]
     pub unsafe fn set_c_raw(this: *mut Self, val: ::std::os::raw::c_uchar) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 4usize],
             >>::raw_set_const::<
@@ -622,7 +622,7 @@
     #[inline]
     pub fn set_d(&mut self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<8usize, 16u8>(val as u64)
         }
     }
@@ -642,7 +642,7 @@
     #[inline]
     pub unsafe fn set_d_raw(this: *mut Self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 4usize],
             >>::raw_set_const::<
@@ -660,7 +660,7 @@
     #[inline]
     pub fn set_e(&mut self, val: ::std::os::raw::c_uchar) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<24usize, 8u8>(val as u64)
         }
     }
@@ -680,7 +680,7 @@
     #[inline]
     pub unsafe fn set_e_raw(this: *mut Self, val: ::std::os::raw::c_uchar) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 4usize],
             >>::raw_set_const::<
@@ -703,7 +703,7 @@
                 0usize,
                 1u8,
             >({
-                let a: u8 = unsafe { ::std::mem::transmute(a) };
+                let a: u8 = a as _;
                 a as u64
             });
         __bindgen_bitfield_unit
@@ -711,7 +711,7 @@
                 1usize,
                 1u8,
             >({
-                let b: u8 = unsafe { ::std::mem::transmute(b) };
+                let b: u8 = b as _;
                 b as u64
             });
         __bindgen_bitfield_unit
@@ -719,7 +719,7 @@
                 2usize,
                 6u8,
             >({
-                let c: u8 = unsafe { ::std::mem::transmute(c) };
+                let c: u8 = c as _;
                 c as u64
             });
         __bindgen_bitfield_unit
@@ -727,7 +727,7 @@
                 8usize,
                 16u8,
             >({
-                let d: u16 = unsafe { ::std::mem::transmute(d) };
+                let d: u16 = d as _;
                 d as u64
             });
         __bindgen_bitfield_unit
@@ -735,7 +735,7 @@
                 24usize,
                 8u8,
             >({
-                let e: u8 = unsafe { ::std::mem::transmute(e) };
+                let e: u8 = e as _;
                 e as u64
             });
         __bindgen_bitfield_unit
@@ -762,7 +762,7 @@
     #[inline]
     pub fn set_a(&mut self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<0usize, 16u8>(val as u64)
         }
     }
@@ -782,7 +782,7 @@
     #[inline]
     pub unsafe fn set_a_raw(this: *mut Self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 4usize],
             >>::raw_set_const::<
@@ -800,7 +800,7 @@
     #[inline]
     pub fn set_b(&mut self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<16usize, 16u8>(val as u64)
         }
     }
@@ -820,7 +820,7 @@
     #[inline]
     pub unsafe fn set_b_raw(this: *mut Self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 4usize],
             >>::raw_set_const::<
@@ -840,7 +840,7 @@
                 0usize,
                 16u8,
             >({
-                let a: u16 = unsafe { ::std::mem::transmute(a) };
+                let a: u16 = a as _;
                 a as u64
             });
         __bindgen_bitfield_unit
@@ -848,7 +848,7 @@
                 16usize,
                 16u8,
             >({
-                let b: u16 = unsafe { ::std::mem::transmute(b) };
+                let b: u16 = b as _;
                 b as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/blocklist_bitfield_unit.rs b/bindgen-tests/tests/expectations/tests/blocklist_bitfield_unit.rs
index 91d34b9..0beeca9 100644
--- a/bindgen-tests/tests/expectations/tests/blocklist_bitfield_unit.rs
+++ b/bindgen-tests/tests/expectations/tests/blocklist_bitfield_unit.rs
@@ -26,7 +26,7 @@
     #[inline]
     pub fn set_b1(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<0usize, 1u8>(val as u64)
         }
     }
@@ -46,7 +46,7 @@
     #[inline]
     pub unsafe fn set_b1_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -64,7 +64,7 @@
     #[inline]
     pub fn set_b2(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<1usize, 1u8>(val as u64)
         }
     }
@@ -84,7 +84,7 @@
     #[inline]
     pub unsafe fn set_b2_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -104,7 +104,7 @@
                 0usize,
                 1u8,
             >({
-                let b1: u32 = unsafe { ::std::mem::transmute(b1) };
+                let b1: u32 = b1 as _;
                 b1 as u64
             });
         __bindgen_bitfield_unit
@@ -112,7 +112,7 @@
                 1usize,
                 1u8,
             >({
-                let b2: u32 = unsafe { ::std::mem::transmute(b2) };
+                let b2: u32 = b2 as _;
                 b2 as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/default_visibility_crate.rs b/bindgen-tests/tests/expectations/tests/default_visibility_crate.rs
index 4525a07..5672250 100644
--- a/bindgen-tests/tests/expectations/tests/default_visibility_crate.rs
+++ b/bindgen-tests/tests/expectations/tests/default_visibility_crate.rs
@@ -509,7 +509,7 @@
     #[inline]
     pub(crate) fn set_r(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<0usize, 1u8>(val as u64)
         }
     }
@@ -529,7 +529,7 @@
     #[inline]
     pub(crate) unsafe fn set_r_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -547,7 +547,7 @@
     #[inline]
     pub(crate) fn set_g(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<1usize, 1u8>(val as u64)
         }
     }
@@ -567,7 +567,7 @@
     #[inline]
     pub(crate) unsafe fn set_g_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -585,7 +585,7 @@
     #[inline]
     pub(crate) fn set_b(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<2usize, 1u8>(val as u64)
         }
     }
@@ -605,7 +605,7 @@
     #[inline]
     pub(crate) unsafe fn set_b_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -626,7 +626,7 @@
                 0usize,
                 1u8,
             >({
-                let r: u8 = unsafe { ::std::mem::transmute(r) };
+                let r: u8 = r as _;
                 r as u64
             });
         __bindgen_bitfield_unit
@@ -634,7 +634,7 @@
                 1usize,
                 1u8,
             >({
-                let g: u8 = unsafe { ::std::mem::transmute(g) };
+                let g: u8 = g as _;
                 g as u64
             });
         __bindgen_bitfield_unit
@@ -642,7 +642,7 @@
                 2usize,
                 1u8,
             >({
-                let b: u8 = unsafe { ::std::mem::transmute(b) };
+                let b: u8 = b as _;
                 b as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/default_visibility_private.rs b/bindgen-tests/tests/expectations/tests/default_visibility_private.rs
index 646eadf..1b9f9a1 100644
--- a/bindgen-tests/tests/expectations/tests/default_visibility_private.rs
+++ b/bindgen-tests/tests/expectations/tests/default_visibility_private.rs
@@ -509,7 +509,7 @@
     #[inline]
     fn set_r(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<0usize, 1u8>(val as u64)
         }
     }
@@ -529,7 +529,7 @@
     #[inline]
     unsafe fn set_r_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -547,7 +547,7 @@
     #[inline]
     fn set_g(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<1usize, 1u8>(val as u64)
         }
     }
@@ -567,7 +567,7 @@
     #[inline]
     unsafe fn set_g_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -585,7 +585,7 @@
     #[inline]
     fn set_b(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<2usize, 1u8>(val as u64)
         }
     }
@@ -605,7 +605,7 @@
     #[inline]
     unsafe fn set_b_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -626,7 +626,7 @@
                 0usize,
                 1u8,
             >({
-                let r: u8 = unsafe { ::std::mem::transmute(r) };
+                let r: u8 = r as _;
                 r as u64
             });
         __bindgen_bitfield_unit
@@ -634,7 +634,7 @@
                 1usize,
                 1u8,
             >({
-                let g: u8 = unsafe { ::std::mem::transmute(g) };
+                let g: u8 = g as _;
                 g as u64
             });
         __bindgen_bitfield_unit
@@ -642,7 +642,7 @@
                 2usize,
                 1u8,
             >({
-                let b: u8 = unsafe { ::std::mem::transmute(b) };
+                let b: u8 = b as _;
                 b as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/default_visibility_private_respects_cxx_access_spec.rs b/bindgen-tests/tests/expectations/tests/default_visibility_private_respects_cxx_access_spec.rs
index ba8ff7d..1789d8f 100644
--- a/bindgen-tests/tests/expectations/tests/default_visibility_private_respects_cxx_access_spec.rs
+++ b/bindgen-tests/tests/expectations/tests/default_visibility_private_respects_cxx_access_spec.rs
@@ -509,7 +509,7 @@
     #[inline]
     pub fn set_r(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<0usize, 1u8>(val as u64)
         }
     }
@@ -529,7 +529,7 @@
     #[inline]
     pub unsafe fn set_r_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -547,7 +547,7 @@
     #[inline]
     pub fn set_g(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<1usize, 1u8>(val as u64)
         }
     }
@@ -567,7 +567,7 @@
     #[inline]
     pub unsafe fn set_g_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -585,7 +585,7 @@
     #[inline]
     pub fn set_b(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<2usize, 1u8>(val as u64)
         }
     }
@@ -605,7 +605,7 @@
     #[inline]
     pub unsafe fn set_b_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -626,7 +626,7 @@
                 0usize,
                 1u8,
             >({
-                let r: u8 = unsafe { ::std::mem::transmute(r) };
+                let r: u8 = r as _;
                 r as u64
             });
         __bindgen_bitfield_unit
@@ -634,7 +634,7 @@
                 1usize,
                 1u8,
             >({
-                let g: u8 = unsafe { ::std::mem::transmute(g) };
+                let g: u8 = g as _;
                 g as u64
             });
         __bindgen_bitfield_unit
@@ -642,7 +642,7 @@
                 2usize,
                 1u8,
             >({
-                let b: u8 = unsafe { ::std::mem::transmute(b) };
+                let b: u8 = b as _;
                 b as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/derive-bitfield-method-same-name.rs b/bindgen-tests/tests/expectations/tests/derive-bitfield-method-same-name.rs
index 7b291fa..a0d1825 100644
--- a/bindgen-tests/tests/expectations/tests/derive-bitfield-method-same-name.rs
+++ b/bindgen-tests/tests/expectations/tests/derive-bitfield-method-same-name.rs
@@ -535,7 +535,7 @@
     #[inline]
     pub fn set_type__bindgen_bitfield(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<0usize, 3u8>(val as u64)
         }
     }
@@ -560,7 +560,7 @@
         val: ::std::os::raw::c_char,
     ) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -579,9 +579,7 @@
                 0usize,
                 3u8,
             >({
-                let type__bindgen_bitfield: u8 = unsafe {
-                    ::std::mem::transmute(type__bindgen_bitfield)
-                };
+                let type__bindgen_bitfield: u8 = type__bindgen_bitfield as _;
                 type__bindgen_bitfield as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/derive-debug-bitfield-1-51.rs b/bindgen-tests/tests/expectations/tests/derive-debug-bitfield-1-51.rs
index 33752b1..78d2b5e 100644
--- a/bindgen-tests/tests/expectations/tests/derive-debug-bitfield-1-51.rs
+++ b/bindgen-tests/tests/expectations/tests/derive-debug-bitfield-1-51.rs
@@ -519,7 +519,7 @@
     #[inline]
     pub fn set_a(&mut self, val: bool) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<0usize, 1u8>(val as u64)
         }
     }
@@ -539,7 +539,7 @@
     #[inline]
     pub unsafe fn set_a_raw(this: *mut Self, val: bool) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -557,7 +557,7 @@
     #[inline]
     pub fn set_b(&mut self, val: bool) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<1usize, 7u8>(val as u64)
         }
     }
@@ -577,7 +577,7 @@
     #[inline]
     pub unsafe fn set_b_raw(this: *mut Self, val: bool) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -594,7 +594,7 @@
                 0usize,
                 1u8,
             >({
-                let a: u8 = unsafe { ::std::mem::transmute(a) };
+                let a: u8 = a as _;
                 a as u64
             });
         __bindgen_bitfield_unit
@@ -602,7 +602,7 @@
                 1usize,
                 7u8,
             >({
-                let b: u8 = unsafe { ::std::mem::transmute(b) };
+                let b: u8 = b as _;
                 b as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/derive-debug-bitfield-core.rs b/bindgen-tests/tests/expectations/tests/derive-debug-bitfield-core.rs
index e21a809..519aaa7 100644
--- a/bindgen-tests/tests/expectations/tests/derive-debug-bitfield-core.rs
+++ b/bindgen-tests/tests/expectations/tests/derive-debug-bitfield-core.rs
@@ -522,7 +522,7 @@
     #[inline]
     pub fn set_a(&mut self, val: bool) {
         unsafe {
-            let val: u8 = ::core::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<0usize, 1u8>(val as u64)
         }
     }
@@ -542,7 +542,7 @@
     #[inline]
     pub unsafe fn set_a_raw(this: *mut Self, val: bool) {
         unsafe {
-            let val: u8 = ::core::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -560,7 +560,7 @@
     #[inline]
     pub fn set_b(&mut self, val: bool) {
         unsafe {
-            let val: u8 = ::core::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<1usize, 7u8>(val as u64)
         }
     }
@@ -580,7 +580,7 @@
     #[inline]
     pub unsafe fn set_b_raw(this: *mut Self, val: bool) {
         unsafe {
-            let val: u8 = ::core::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -597,7 +597,7 @@
                 0usize,
                 1u8,
             >({
-                let a: u8 = unsafe { ::core::mem::transmute(a) };
+                let a: u8 = a as _;
                 a as u64
             });
         __bindgen_bitfield_unit
@@ -605,7 +605,7 @@
                 1usize,
                 7u8,
             >({
-                let b: u8 = unsafe { ::core::mem::transmute(b) };
+                let b: u8 = b as _;
                 b as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/derive-debug-bitfield.rs b/bindgen-tests/tests/expectations/tests/derive-debug-bitfield.rs
index 33752b1..78d2b5e 100644
--- a/bindgen-tests/tests/expectations/tests/derive-debug-bitfield.rs
+++ b/bindgen-tests/tests/expectations/tests/derive-debug-bitfield.rs
@@ -519,7 +519,7 @@
     #[inline]
     pub fn set_a(&mut self, val: bool) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<0usize, 1u8>(val as u64)
         }
     }
@@ -539,7 +539,7 @@
     #[inline]
     pub unsafe fn set_a_raw(this: *mut Self, val: bool) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -557,7 +557,7 @@
     #[inline]
     pub fn set_b(&mut self, val: bool) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<1usize, 7u8>(val as u64)
         }
     }
@@ -577,7 +577,7 @@
     #[inline]
     pub unsafe fn set_b_raw(this: *mut Self, val: bool) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -594,7 +594,7 @@
                 0usize,
                 1u8,
             >({
-                let a: u8 = unsafe { ::std::mem::transmute(a) };
+                let a: u8 = a as _;
                 a as u64
             });
         __bindgen_bitfield_unit
@@ -602,7 +602,7 @@
                 1usize,
                 7u8,
             >({
-                let b: u8 = unsafe { ::std::mem::transmute(b) };
+                let b: u8 = b as _;
                 b as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/derive-partialeq-bitfield.rs b/bindgen-tests/tests/expectations/tests/derive-partialeq-bitfield.rs
index 47d6808..262b72c 100644
--- a/bindgen-tests/tests/expectations/tests/derive-partialeq-bitfield.rs
+++ b/bindgen-tests/tests/expectations/tests/derive-partialeq-bitfield.rs
@@ -519,7 +519,7 @@
     #[inline]
     pub fn set_a(&mut self, val: bool) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<0usize, 1u8>(val as u64)
         }
     }
@@ -539,7 +539,7 @@
     #[inline]
     pub unsafe fn set_a_raw(this: *mut Self, val: bool) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -557,7 +557,7 @@
     #[inline]
     pub fn set_b(&mut self, val: bool) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<1usize, 7u8>(val as u64)
         }
     }
@@ -577,7 +577,7 @@
     #[inline]
     pub unsafe fn set_b_raw(this: *mut Self, val: bool) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -594,7 +594,7 @@
                 0usize,
                 1u8,
             >({
-                let a: u8 = unsafe { ::std::mem::transmute(a) };
+                let a: u8 = a as _;
                 a as u64
             });
         __bindgen_bitfield_unit
@@ -602,7 +602,7 @@
                 1usize,
                 7u8,
             >({
-                let b: u8 = unsafe { ::std::mem::transmute(b) };
+                let b: u8 = b as _;
                 b as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/field-visibility-callback.rs b/bindgen-tests/tests/expectations/tests/field-visibility-callback.rs
index 795f6be..e897e5f 100644
--- a/bindgen-tests/tests/expectations/tests/field-visibility-callback.rs
+++ b/bindgen-tests/tests/expectations/tests/field-visibility-callback.rs
@@ -515,7 +515,7 @@
     #[inline]
     pub fn set_c(&mut self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<0usize, 1u8>(val as u64)
         }
     }
@@ -535,7 +535,7 @@
     #[inline]
     pub unsafe fn set_c_raw(this: *mut Self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -553,7 +553,7 @@
     #[inline]
     fn set_private_d(&mut self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<1usize, 1u8>(val as u64)
         }
     }
@@ -573,7 +573,7 @@
     #[inline]
     unsafe fn set_private_d_raw(this: *mut Self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -593,7 +593,7 @@
                 0usize,
                 1u8,
             >({
-                let c: u32 = unsafe { ::std::mem::transmute(c) };
+                let c: u32 = c as _;
                 c as u64
             });
         __bindgen_bitfield_unit
@@ -601,7 +601,7 @@
                 1usize,
                 1u8,
             >({
-                let private_d: u32 = unsafe { ::std::mem::transmute(private_d) };
+                let private_d: u32 = private_d as _;
                 private_d as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/field-visibility.rs b/bindgen-tests/tests/expectations/tests/field-visibility.rs
index 35645fe..ca29f24 100644
--- a/bindgen-tests/tests/expectations/tests/field-visibility.rs
+++ b/bindgen-tests/tests/expectations/tests/field-visibility.rs
@@ -510,7 +510,7 @@
     #[inline]
     fn set_a(&mut self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<0usize, 1u8>(val as u64)
         }
     }
@@ -530,7 +530,7 @@
     #[inline]
     unsafe fn set_a_raw(this: *mut Self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -547,7 +547,7 @@
                 0usize,
                 1u8,
             >({
-                let a: u32 = unsafe { ::std::mem::transmute(a) };
+                let a: u32 = a as _;
                 a as u64
             });
         __bindgen_bitfield_unit
@@ -575,7 +575,7 @@
     #[inline]
     pub fn set_a(&mut self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<0usize, 1u8>(val as u64)
         }
     }
@@ -595,7 +595,7 @@
     #[inline]
     pub unsafe fn set_a_raw(this: *mut Self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -614,7 +614,7 @@
                 0usize,
                 1u8,
             >({
-                let a: u32 = unsafe { ::std::mem::transmute(a) };
+                let a: u32 = a as _;
                 a as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/incomplete-array-padding.rs b/bindgen-tests/tests/expectations/tests/incomplete-array-padding.rs
index 7e61272..240c7fe 100644
--- a/bindgen-tests/tests/expectations/tests/incomplete-array-padding.rs
+++ b/bindgen-tests/tests/expectations/tests/incomplete-array-padding.rs
@@ -549,7 +549,7 @@
     #[inline]
     pub fn set_a(&mut self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<0usize, 1u8>(val as u64)
         }
     }
@@ -569,7 +569,7 @@
     #[inline]
     pub unsafe fn set_a_raw(this: *mut Self, val: ::std::os::raw::c_char) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -588,7 +588,7 @@
                 0usize,
                 1u8,
             >({
-                let a: u8 = unsafe { ::std::mem::transmute(a) };
+                let a: u8 = a as _;
                 a as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/issue-1947.rs b/bindgen-tests/tests/expectations/tests/issue-1947.rs
index cc37630..7e88368 100644
--- a/bindgen-tests/tests/expectations/tests/issue-1947.rs
+++ b/bindgen-tests/tests/expectations/tests/issue-1947.rs
@@ -518,7 +518,7 @@
     #[inline]
     pub fn set_MADZ(&mut self, val: U16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<0usize, 10u8>(val as u64)
         }
     }
@@ -538,7 +538,7 @@
     #[inline]
     pub unsafe fn set_MADZ_raw(this: *mut Self, val: U16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -556,7 +556,7 @@
     #[inline]
     pub fn set_MAI0(&mut self, val: U16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<10usize, 2u8>(val as u64)
         }
     }
@@ -576,7 +576,7 @@
     #[inline]
     pub unsafe fn set_MAI0_raw(this: *mut Self, val: U16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -594,7 +594,7 @@
     #[inline]
     pub fn set_MAI1(&mut self, val: U16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<12usize, 2u8>(val as u64)
         }
     }
@@ -614,7 +614,7 @@
     #[inline]
     pub unsafe fn set_MAI1_raw(this: *mut Self, val: U16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -632,7 +632,7 @@
     #[inline]
     pub fn set_MAI2(&mut self, val: U16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<14usize, 2u8>(val as u64)
         }
     }
@@ -652,7 +652,7 @@
     #[inline]
     pub unsafe fn set_MAI2_raw(this: *mut Self, val: U16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -674,7 +674,7 @@
                 0usize,
                 10u8,
             >({
-                let MADZ: u16 = unsafe { ::std::mem::transmute(MADZ) };
+                let MADZ: u16 = MADZ as _;
                 MADZ as u64
             });
         __bindgen_bitfield_unit
@@ -682,7 +682,7 @@
                 10usize,
                 2u8,
             >({
-                let MAI0: u16 = unsafe { ::std::mem::transmute(MAI0) };
+                let MAI0: u16 = MAI0 as _;
                 MAI0 as u64
             });
         __bindgen_bitfield_unit
@@ -690,7 +690,7 @@
                 12usize,
                 2u8,
             >({
-                let MAI1: u16 = unsafe { ::std::mem::transmute(MAI1) };
+                let MAI1: u16 = MAI1 as _;
                 MAI1 as u64
             });
         __bindgen_bitfield_unit
@@ -698,7 +698,7 @@
                 14usize,
                 2u8,
             >({
-                let MAI2: u16 = unsafe { ::std::mem::transmute(MAI2) };
+                let MAI2: u16 = MAI2 as _;
                 MAI2 as u64
             });
         __bindgen_bitfield_unit
@@ -712,7 +712,7 @@
     #[inline]
     pub fn set_MATH(&mut self, val: U16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_2.set_const::<0usize, 10u8>(val as u64)
         }
     }
@@ -732,7 +732,7 @@
     #[inline]
     pub unsafe fn set_MATH_raw(this: *mut Self, val: U16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 3usize],
             >>::raw_set_const::<
@@ -750,7 +750,7 @@
     #[inline]
     pub fn set_MATE(&mut self, val: U16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_2.set_const::<10usize, 4u8>(val as u64)
         }
     }
@@ -770,7 +770,7 @@
     #[inline]
     pub unsafe fn set_MATE_raw(this: *mut Self, val: U16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 3usize],
             >>::raw_set_const::<
@@ -788,7 +788,7 @@
     #[inline]
     pub fn set_MATW(&mut self, val: U16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_2.set_const::<14usize, 2u8>(val as u64)
         }
     }
@@ -808,7 +808,7 @@
     #[inline]
     pub unsafe fn set_MATW_raw(this: *mut Self, val: U16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 3usize],
             >>::raw_set_const::<
@@ -826,7 +826,7 @@
     #[inline]
     pub fn set_MASW(&mut self, val: U8) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_2.set_const::<16usize, 4u8>(val as u64)
         }
     }
@@ -846,7 +846,7 @@
     #[inline]
     pub unsafe fn set_MASW_raw(this: *mut Self, val: U8) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 3usize],
             >>::raw_set_const::<
@@ -864,7 +864,7 @@
     #[inline]
     pub fn set_MABW(&mut self, val: U8) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_2.set_const::<20usize, 3u8>(val as u64)
         }
     }
@@ -884,7 +884,7 @@
     #[inline]
     pub unsafe fn set_MABW_raw(this: *mut Self, val: U8) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 3usize],
             >>::raw_set_const::<
@@ -902,7 +902,7 @@
     #[inline]
     pub fn set_MAXN(&mut self, val: U8) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_2.set_const::<23usize, 1u8>(val as u64)
         }
     }
@@ -922,7 +922,7 @@
     #[inline]
     pub unsafe fn set_MAXN_raw(this: *mut Self, val: U8) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 3usize],
             >>::raw_set_const::<
@@ -946,7 +946,7 @@
                 0usize,
                 10u8,
             >({
-                let MATH: u16 = unsafe { ::std::mem::transmute(MATH) };
+                let MATH: u16 = MATH as _;
                 MATH as u64
             });
         __bindgen_bitfield_unit
@@ -954,7 +954,7 @@
                 10usize,
                 4u8,
             >({
-                let MATE: u16 = unsafe { ::std::mem::transmute(MATE) };
+                let MATE: u16 = MATE as _;
                 MATE as u64
             });
         __bindgen_bitfield_unit
@@ -962,7 +962,7 @@
                 14usize,
                 2u8,
             >({
-                let MATW: u16 = unsafe { ::std::mem::transmute(MATW) };
+                let MATW: u16 = MATW as _;
                 MATW as u64
             });
         __bindgen_bitfield_unit
@@ -970,7 +970,7 @@
                 16usize,
                 4u8,
             >({
-                let MASW: u8 = unsafe { ::std::mem::transmute(MASW) };
+                let MASW: u8 = MASW as _;
                 MASW as u64
             });
         __bindgen_bitfield_unit
@@ -978,7 +978,7 @@
                 20usize,
                 3u8,
             >({
-                let MABW: u8 = unsafe { ::std::mem::transmute(MABW) };
+                let MABW: u8 = MABW as _;
                 MABW as u64
             });
         __bindgen_bitfield_unit
@@ -986,7 +986,7 @@
                 23usize,
                 1u8,
             >({
-                let MAXN: u8 = unsafe { ::std::mem::transmute(MAXN) };
+                let MAXN: u8 = MAXN as _;
                 MAXN as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/issue-739-pointer-wide-bitfield.rs b/bindgen-tests/tests/expectations/tests/issue-739-pointer-wide-bitfield.rs
index 21d673e..88d884e 100644
--- a/bindgen-tests/tests/expectations/tests/issue-739-pointer-wide-bitfield.rs
+++ b/bindgen-tests/tests/expectations/tests/issue-739-pointer-wide-bitfield.rs
@@ -510,7 +510,7 @@
     #[inline]
     pub fn set_m_bitfield(&mut self, val: ::std::os::raw::c_ulong) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             self._bitfield_1.set_const::<0usize, 64u8>(val as u64)
         }
     }
@@ -530,7 +530,7 @@
     #[inline]
     pub unsafe fn set_m_bitfield_raw(this: *mut Self, val: ::std::os::raw::c_ulong) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 32usize],
             >>::raw_set_const::<
@@ -548,7 +548,7 @@
     #[inline]
     pub fn set_m_bar(&mut self, val: ::std::os::raw::c_ulong) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             self._bitfield_1.set_const::<64usize, 64u8>(val as u64)
         }
     }
@@ -568,7 +568,7 @@
     #[inline]
     pub unsafe fn set_m_bar_raw(this: *mut Self, val: ::std::os::raw::c_ulong) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 32usize],
             >>::raw_set_const::<
@@ -586,7 +586,7 @@
     #[inline]
     pub fn set_foo(&mut self, val: ::std::os::raw::c_ulong) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             self._bitfield_1.set_const::<128usize, 1u8>(val as u64)
         }
     }
@@ -606,7 +606,7 @@
     #[inline]
     pub unsafe fn set_foo_raw(this: *mut Self, val: ::std::os::raw::c_ulong) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 32usize],
             >>::raw_set_const::<
@@ -624,7 +624,7 @@
     #[inline]
     pub fn set_bar(&mut self, val: ::std::os::raw::c_ulong) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             self._bitfield_1.set_const::<192usize, 64u8>(val as u64)
         }
     }
@@ -644,7 +644,7 @@
     #[inline]
     pub unsafe fn set_bar_raw(this: *mut Self, val: ::std::os::raw::c_ulong) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 32usize],
             >>::raw_set_const::<
@@ -666,7 +666,7 @@
                 0usize,
                 64u8,
             >({
-                let m_bitfield: u64 = unsafe { ::std::mem::transmute(m_bitfield) };
+                let m_bitfield: u64 = m_bitfield as _;
                 m_bitfield as u64
             });
         __bindgen_bitfield_unit
@@ -674,7 +674,7 @@
                 64usize,
                 64u8,
             >({
-                let m_bar: u64 = unsafe { ::std::mem::transmute(m_bar) };
+                let m_bar: u64 = m_bar as _;
                 m_bar as u64
             });
         __bindgen_bitfield_unit
@@ -682,7 +682,7 @@
                 128usize,
                 1u8,
             >({
-                let foo: u64 = unsafe { ::std::mem::transmute(foo) };
+                let foo: u64 = foo as _;
                 foo as u64
             });
         __bindgen_bitfield_unit
@@ -690,7 +690,7 @@
                 192usize,
                 64u8,
             >({
-                let bar: u64 = unsafe { ::std::mem::transmute(bar) };
+                let bar: u64 = bar as _;
                 bar as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/issue-743.rs b/bindgen-tests/tests/expectations/tests/issue-743.rs
index aa69c7e..9a6dfdb 100644
--- a/bindgen-tests/tests/expectations/tests/issue-743.rs
+++ b/bindgen-tests/tests/expectations/tests/issue-743.rs
@@ -522,7 +522,7 @@
     #[inline]
     pub fn set_u(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<0usize, 16u8>(val as u64)
         }
     }
@@ -542,7 +542,7 @@
     #[inline]
     pub unsafe fn set_u_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -561,7 +561,7 @@
                 0usize,
                 16u8,
             >({
-                let u: u32 = unsafe { ::std::mem::transmute(u) };
+                let u: u32 = u as _;
                 u as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/issue-816.rs b/bindgen-tests/tests/expectations/tests/issue-816.rs
index a874606..0856139 100644
--- a/bindgen-tests/tests/expectations/tests/issue-816.rs
+++ b/bindgen-tests/tests/expectations/tests/issue-816.rs
@@ -509,7 +509,7 @@
     #[inline]
     pub fn set_bit_1(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<0usize, 1u8>(val as u64)
         }
     }
@@ -529,7 +529,7 @@
     #[inline]
     pub unsafe fn set_bit_1_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -547,7 +547,7 @@
     #[inline]
     pub fn set_bit_2(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<1usize, 1u8>(val as u64)
         }
     }
@@ -567,7 +567,7 @@
     #[inline]
     pub unsafe fn set_bit_2_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -585,7 +585,7 @@
     #[inline]
     pub fn set_bit_3(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<2usize, 1u8>(val as u64)
         }
     }
@@ -605,7 +605,7 @@
     #[inline]
     pub unsafe fn set_bit_3_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -623,7 +623,7 @@
     #[inline]
     pub fn set_bit_4(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<3usize, 1u8>(val as u64)
         }
     }
@@ -643,7 +643,7 @@
     #[inline]
     pub unsafe fn set_bit_4_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -661,7 +661,7 @@
     #[inline]
     pub fn set_bit_5(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<4usize, 1u8>(val as u64)
         }
     }
@@ -681,7 +681,7 @@
     #[inline]
     pub unsafe fn set_bit_5_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -699,7 +699,7 @@
     #[inline]
     pub fn set_bit_6(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<5usize, 1u8>(val as u64)
         }
     }
@@ -719,7 +719,7 @@
     #[inline]
     pub unsafe fn set_bit_6_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -737,7 +737,7 @@
     #[inline]
     pub fn set_bit_7(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<6usize, 1u8>(val as u64)
         }
     }
@@ -757,7 +757,7 @@
     #[inline]
     pub unsafe fn set_bit_7_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -775,7 +775,7 @@
     #[inline]
     pub fn set_bit_8(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<7usize, 1u8>(val as u64)
         }
     }
@@ -795,7 +795,7 @@
     #[inline]
     pub unsafe fn set_bit_8_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -813,7 +813,7 @@
     #[inline]
     pub fn set_bit_9(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<8usize, 1u8>(val as u64)
         }
     }
@@ -833,7 +833,7 @@
     #[inline]
     pub unsafe fn set_bit_9_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -851,7 +851,7 @@
     #[inline]
     pub fn set_bit_10(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<9usize, 1u8>(val as u64)
         }
     }
@@ -871,7 +871,7 @@
     #[inline]
     pub unsafe fn set_bit_10_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -889,7 +889,7 @@
     #[inline]
     pub fn set_bit_11(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<10usize, 1u8>(val as u64)
         }
     }
@@ -909,7 +909,7 @@
     #[inline]
     pub unsafe fn set_bit_11_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -927,7 +927,7 @@
     #[inline]
     pub fn set_bit_12(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<11usize, 1u8>(val as u64)
         }
     }
@@ -947,7 +947,7 @@
     #[inline]
     pub unsafe fn set_bit_12_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -965,7 +965,7 @@
     #[inline]
     pub fn set_bit_13(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<12usize, 1u8>(val as u64)
         }
     }
@@ -985,7 +985,7 @@
     #[inline]
     pub unsafe fn set_bit_13_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -1003,7 +1003,7 @@
     #[inline]
     pub fn set_bit_14(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<13usize, 1u8>(val as u64)
         }
     }
@@ -1023,7 +1023,7 @@
     #[inline]
     pub unsafe fn set_bit_14_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -1041,7 +1041,7 @@
     #[inline]
     pub fn set_bit_15(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<14usize, 1u8>(val as u64)
         }
     }
@@ -1061,7 +1061,7 @@
     #[inline]
     pub unsafe fn set_bit_15_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -1079,7 +1079,7 @@
     #[inline]
     pub fn set_bit_16(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<15usize, 1u8>(val as u64)
         }
     }
@@ -1099,7 +1099,7 @@
     #[inline]
     pub unsafe fn set_bit_16_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -1117,7 +1117,7 @@
     #[inline]
     pub fn set_bit_17(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<16usize, 1u8>(val as u64)
         }
     }
@@ -1137,7 +1137,7 @@
     #[inline]
     pub unsafe fn set_bit_17_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -1155,7 +1155,7 @@
     #[inline]
     pub fn set_bit_18(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<17usize, 1u8>(val as u64)
         }
     }
@@ -1175,7 +1175,7 @@
     #[inline]
     pub unsafe fn set_bit_18_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -1193,7 +1193,7 @@
     #[inline]
     pub fn set_bit_19(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<18usize, 1u8>(val as u64)
         }
     }
@@ -1213,7 +1213,7 @@
     #[inline]
     pub unsafe fn set_bit_19_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -1231,7 +1231,7 @@
     #[inline]
     pub fn set_bit_20(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<19usize, 1u8>(val as u64)
         }
     }
@@ -1251,7 +1251,7 @@
     #[inline]
     pub unsafe fn set_bit_20_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -1269,7 +1269,7 @@
     #[inline]
     pub fn set_bit_21(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<20usize, 1u8>(val as u64)
         }
     }
@@ -1289,7 +1289,7 @@
     #[inline]
     pub unsafe fn set_bit_21_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -1307,7 +1307,7 @@
     #[inline]
     pub fn set_bit_22(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<21usize, 1u8>(val as u64)
         }
     }
@@ -1327,7 +1327,7 @@
     #[inline]
     pub unsafe fn set_bit_22_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -1345,7 +1345,7 @@
     #[inline]
     pub fn set_bit_23(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<22usize, 1u8>(val as u64)
         }
     }
@@ -1365,7 +1365,7 @@
     #[inline]
     pub unsafe fn set_bit_23_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -1383,7 +1383,7 @@
     #[inline]
     pub fn set_bit_24(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<23usize, 1u8>(val as u64)
         }
     }
@@ -1403,7 +1403,7 @@
     #[inline]
     pub unsafe fn set_bit_24_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -1421,7 +1421,7 @@
     #[inline]
     pub fn set_bit_25(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<24usize, 1u8>(val as u64)
         }
     }
@@ -1441,7 +1441,7 @@
     #[inline]
     pub unsafe fn set_bit_25_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -1459,7 +1459,7 @@
     #[inline]
     pub fn set_bit_26(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<25usize, 1u8>(val as u64)
         }
     }
@@ -1479,7 +1479,7 @@
     #[inline]
     pub unsafe fn set_bit_26_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -1497,7 +1497,7 @@
     #[inline]
     pub fn set_bit_27(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<26usize, 1u8>(val as u64)
         }
     }
@@ -1517,7 +1517,7 @@
     #[inline]
     pub unsafe fn set_bit_27_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -1535,7 +1535,7 @@
     #[inline]
     pub fn set_bit_28(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<27usize, 1u8>(val as u64)
         }
     }
@@ -1555,7 +1555,7 @@
     #[inline]
     pub unsafe fn set_bit_28_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -1573,7 +1573,7 @@
     #[inline]
     pub fn set_bit_29(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<28usize, 1u8>(val as u64)
         }
     }
@@ -1593,7 +1593,7 @@
     #[inline]
     pub unsafe fn set_bit_29_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -1611,7 +1611,7 @@
     #[inline]
     pub fn set_bit_30(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<29usize, 1u8>(val as u64)
         }
     }
@@ -1631,7 +1631,7 @@
     #[inline]
     pub unsafe fn set_bit_30_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -1649,7 +1649,7 @@
     #[inline]
     pub fn set_bit_31(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<30usize, 1u8>(val as u64)
         }
     }
@@ -1669,7 +1669,7 @@
     #[inline]
     pub unsafe fn set_bit_31_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -1687,7 +1687,7 @@
     #[inline]
     pub fn set_bit_32(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<31usize, 1u8>(val as u64)
         }
     }
@@ -1707,7 +1707,7 @@
     #[inline]
     pub unsafe fn set_bit_32_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -1725,7 +1725,7 @@
     #[inline]
     pub fn set_bit_33(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<32usize, 1u8>(val as u64)
         }
     }
@@ -1745,7 +1745,7 @@
     #[inline]
     pub unsafe fn set_bit_33_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -1763,7 +1763,7 @@
     #[inline]
     pub fn set_bit_34(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<33usize, 1u8>(val as u64)
         }
     }
@@ -1783,7 +1783,7 @@
     #[inline]
     pub unsafe fn set_bit_34_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -1801,7 +1801,7 @@
     #[inline]
     pub fn set_bit_35(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<34usize, 1u8>(val as u64)
         }
     }
@@ -1821,7 +1821,7 @@
     #[inline]
     pub unsafe fn set_bit_35_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -1839,7 +1839,7 @@
     #[inline]
     pub fn set_bit_36(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<35usize, 1u8>(val as u64)
         }
     }
@@ -1859,7 +1859,7 @@
     #[inline]
     pub unsafe fn set_bit_36_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -1877,7 +1877,7 @@
     #[inline]
     pub fn set_bit_37(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<36usize, 1u8>(val as u64)
         }
     }
@@ -1897,7 +1897,7 @@
     #[inline]
     pub unsafe fn set_bit_37_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -1915,7 +1915,7 @@
     #[inline]
     pub fn set_bit_38(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<37usize, 1u8>(val as u64)
         }
     }
@@ -1935,7 +1935,7 @@
     #[inline]
     pub unsafe fn set_bit_38_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -1953,7 +1953,7 @@
     #[inline]
     pub fn set_bit_39(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<38usize, 1u8>(val as u64)
         }
     }
@@ -1973,7 +1973,7 @@
     #[inline]
     pub unsafe fn set_bit_39_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -1991,7 +1991,7 @@
     #[inline]
     pub fn set_bit_40(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<39usize, 1u8>(val as u64)
         }
     }
@@ -2011,7 +2011,7 @@
     #[inline]
     pub unsafe fn set_bit_40_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -2029,7 +2029,7 @@
     #[inline]
     pub fn set_bit_41(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<40usize, 1u8>(val as u64)
         }
     }
@@ -2049,7 +2049,7 @@
     #[inline]
     pub unsafe fn set_bit_41_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 16usize],
             >>::raw_set_const::<
@@ -2108,7 +2108,7 @@
                 0usize,
                 1u8,
             >({
-                let bit_1: u32 = unsafe { ::std::mem::transmute(bit_1) };
+                let bit_1: u32 = bit_1 as _;
                 bit_1 as u64
             });
         __bindgen_bitfield_unit
@@ -2116,7 +2116,7 @@
                 1usize,
                 1u8,
             >({
-                let bit_2: u32 = unsafe { ::std::mem::transmute(bit_2) };
+                let bit_2: u32 = bit_2 as _;
                 bit_2 as u64
             });
         __bindgen_bitfield_unit
@@ -2124,7 +2124,7 @@
                 2usize,
                 1u8,
             >({
-                let bit_3: u32 = unsafe { ::std::mem::transmute(bit_3) };
+                let bit_3: u32 = bit_3 as _;
                 bit_3 as u64
             });
         __bindgen_bitfield_unit
@@ -2132,7 +2132,7 @@
                 3usize,
                 1u8,
             >({
-                let bit_4: u32 = unsafe { ::std::mem::transmute(bit_4) };
+                let bit_4: u32 = bit_4 as _;
                 bit_4 as u64
             });
         __bindgen_bitfield_unit
@@ -2140,7 +2140,7 @@
                 4usize,
                 1u8,
             >({
-                let bit_5: u32 = unsafe { ::std::mem::transmute(bit_5) };
+                let bit_5: u32 = bit_5 as _;
                 bit_5 as u64
             });
         __bindgen_bitfield_unit
@@ -2148,7 +2148,7 @@
                 5usize,
                 1u8,
             >({
-                let bit_6: u32 = unsafe { ::std::mem::transmute(bit_6) };
+                let bit_6: u32 = bit_6 as _;
                 bit_6 as u64
             });
         __bindgen_bitfield_unit
@@ -2156,7 +2156,7 @@
                 6usize,
                 1u8,
             >({
-                let bit_7: u32 = unsafe { ::std::mem::transmute(bit_7) };
+                let bit_7: u32 = bit_7 as _;
                 bit_7 as u64
             });
         __bindgen_bitfield_unit
@@ -2164,7 +2164,7 @@
                 7usize,
                 1u8,
             >({
-                let bit_8: u32 = unsafe { ::std::mem::transmute(bit_8) };
+                let bit_8: u32 = bit_8 as _;
                 bit_8 as u64
             });
         __bindgen_bitfield_unit
@@ -2172,7 +2172,7 @@
                 8usize,
                 1u8,
             >({
-                let bit_9: u32 = unsafe { ::std::mem::transmute(bit_9) };
+                let bit_9: u32 = bit_9 as _;
                 bit_9 as u64
             });
         __bindgen_bitfield_unit
@@ -2180,7 +2180,7 @@
                 9usize,
                 1u8,
             >({
-                let bit_10: u32 = unsafe { ::std::mem::transmute(bit_10) };
+                let bit_10: u32 = bit_10 as _;
                 bit_10 as u64
             });
         __bindgen_bitfield_unit
@@ -2188,7 +2188,7 @@
                 10usize,
                 1u8,
             >({
-                let bit_11: u32 = unsafe { ::std::mem::transmute(bit_11) };
+                let bit_11: u32 = bit_11 as _;
                 bit_11 as u64
             });
         __bindgen_bitfield_unit
@@ -2196,7 +2196,7 @@
                 11usize,
                 1u8,
             >({
-                let bit_12: u32 = unsafe { ::std::mem::transmute(bit_12) };
+                let bit_12: u32 = bit_12 as _;
                 bit_12 as u64
             });
         __bindgen_bitfield_unit
@@ -2204,7 +2204,7 @@
                 12usize,
                 1u8,
             >({
-                let bit_13: u32 = unsafe { ::std::mem::transmute(bit_13) };
+                let bit_13: u32 = bit_13 as _;
                 bit_13 as u64
             });
         __bindgen_bitfield_unit
@@ -2212,7 +2212,7 @@
                 13usize,
                 1u8,
             >({
-                let bit_14: u32 = unsafe { ::std::mem::transmute(bit_14) };
+                let bit_14: u32 = bit_14 as _;
                 bit_14 as u64
             });
         __bindgen_bitfield_unit
@@ -2220,7 +2220,7 @@
                 14usize,
                 1u8,
             >({
-                let bit_15: u32 = unsafe { ::std::mem::transmute(bit_15) };
+                let bit_15: u32 = bit_15 as _;
                 bit_15 as u64
             });
         __bindgen_bitfield_unit
@@ -2228,7 +2228,7 @@
                 15usize,
                 1u8,
             >({
-                let bit_16: u32 = unsafe { ::std::mem::transmute(bit_16) };
+                let bit_16: u32 = bit_16 as _;
                 bit_16 as u64
             });
         __bindgen_bitfield_unit
@@ -2236,7 +2236,7 @@
                 16usize,
                 1u8,
             >({
-                let bit_17: u32 = unsafe { ::std::mem::transmute(bit_17) };
+                let bit_17: u32 = bit_17 as _;
                 bit_17 as u64
             });
         __bindgen_bitfield_unit
@@ -2244,7 +2244,7 @@
                 17usize,
                 1u8,
             >({
-                let bit_18: u32 = unsafe { ::std::mem::transmute(bit_18) };
+                let bit_18: u32 = bit_18 as _;
                 bit_18 as u64
             });
         __bindgen_bitfield_unit
@@ -2252,7 +2252,7 @@
                 18usize,
                 1u8,
             >({
-                let bit_19: u32 = unsafe { ::std::mem::transmute(bit_19) };
+                let bit_19: u32 = bit_19 as _;
                 bit_19 as u64
             });
         __bindgen_bitfield_unit
@@ -2260,7 +2260,7 @@
                 19usize,
                 1u8,
             >({
-                let bit_20: u32 = unsafe { ::std::mem::transmute(bit_20) };
+                let bit_20: u32 = bit_20 as _;
                 bit_20 as u64
             });
         __bindgen_bitfield_unit
@@ -2268,7 +2268,7 @@
                 20usize,
                 1u8,
             >({
-                let bit_21: u32 = unsafe { ::std::mem::transmute(bit_21) };
+                let bit_21: u32 = bit_21 as _;
                 bit_21 as u64
             });
         __bindgen_bitfield_unit
@@ -2276,7 +2276,7 @@
                 21usize,
                 1u8,
             >({
-                let bit_22: u32 = unsafe { ::std::mem::transmute(bit_22) };
+                let bit_22: u32 = bit_22 as _;
                 bit_22 as u64
             });
         __bindgen_bitfield_unit
@@ -2284,7 +2284,7 @@
                 22usize,
                 1u8,
             >({
-                let bit_23: u32 = unsafe { ::std::mem::transmute(bit_23) };
+                let bit_23: u32 = bit_23 as _;
                 bit_23 as u64
             });
         __bindgen_bitfield_unit
@@ -2292,7 +2292,7 @@
                 23usize,
                 1u8,
             >({
-                let bit_24: u32 = unsafe { ::std::mem::transmute(bit_24) };
+                let bit_24: u32 = bit_24 as _;
                 bit_24 as u64
             });
         __bindgen_bitfield_unit
@@ -2300,7 +2300,7 @@
                 24usize,
                 1u8,
             >({
-                let bit_25: u32 = unsafe { ::std::mem::transmute(bit_25) };
+                let bit_25: u32 = bit_25 as _;
                 bit_25 as u64
             });
         __bindgen_bitfield_unit
@@ -2308,7 +2308,7 @@
                 25usize,
                 1u8,
             >({
-                let bit_26: u32 = unsafe { ::std::mem::transmute(bit_26) };
+                let bit_26: u32 = bit_26 as _;
                 bit_26 as u64
             });
         __bindgen_bitfield_unit
@@ -2316,7 +2316,7 @@
                 26usize,
                 1u8,
             >({
-                let bit_27: u32 = unsafe { ::std::mem::transmute(bit_27) };
+                let bit_27: u32 = bit_27 as _;
                 bit_27 as u64
             });
         __bindgen_bitfield_unit
@@ -2324,7 +2324,7 @@
                 27usize,
                 1u8,
             >({
-                let bit_28: u32 = unsafe { ::std::mem::transmute(bit_28) };
+                let bit_28: u32 = bit_28 as _;
                 bit_28 as u64
             });
         __bindgen_bitfield_unit
@@ -2332,7 +2332,7 @@
                 28usize,
                 1u8,
             >({
-                let bit_29: u32 = unsafe { ::std::mem::transmute(bit_29) };
+                let bit_29: u32 = bit_29 as _;
                 bit_29 as u64
             });
         __bindgen_bitfield_unit
@@ -2340,7 +2340,7 @@
                 29usize,
                 1u8,
             >({
-                let bit_30: u32 = unsafe { ::std::mem::transmute(bit_30) };
+                let bit_30: u32 = bit_30 as _;
                 bit_30 as u64
             });
         __bindgen_bitfield_unit
@@ -2348,7 +2348,7 @@
                 30usize,
                 1u8,
             >({
-                let bit_31: u32 = unsafe { ::std::mem::transmute(bit_31) };
+                let bit_31: u32 = bit_31 as _;
                 bit_31 as u64
             });
         __bindgen_bitfield_unit
@@ -2356,7 +2356,7 @@
                 31usize,
                 1u8,
             >({
-                let bit_32: u32 = unsafe { ::std::mem::transmute(bit_32) };
+                let bit_32: u32 = bit_32 as _;
                 bit_32 as u64
             });
         __bindgen_bitfield_unit
@@ -2364,7 +2364,7 @@
                 32usize,
                 1u8,
             >({
-                let bit_33: u32 = unsafe { ::std::mem::transmute(bit_33) };
+                let bit_33: u32 = bit_33 as _;
                 bit_33 as u64
             });
         __bindgen_bitfield_unit
@@ -2372,7 +2372,7 @@
                 33usize,
                 1u8,
             >({
-                let bit_34: u32 = unsafe { ::std::mem::transmute(bit_34) };
+                let bit_34: u32 = bit_34 as _;
                 bit_34 as u64
             });
         __bindgen_bitfield_unit
@@ -2380,7 +2380,7 @@
                 34usize,
                 1u8,
             >({
-                let bit_35: u32 = unsafe { ::std::mem::transmute(bit_35) };
+                let bit_35: u32 = bit_35 as _;
                 bit_35 as u64
             });
         __bindgen_bitfield_unit
@@ -2388,7 +2388,7 @@
                 35usize,
                 1u8,
             >({
-                let bit_36: u32 = unsafe { ::std::mem::transmute(bit_36) };
+                let bit_36: u32 = bit_36 as _;
                 bit_36 as u64
             });
         __bindgen_bitfield_unit
@@ -2396,7 +2396,7 @@
                 36usize,
                 1u8,
             >({
-                let bit_37: u32 = unsafe { ::std::mem::transmute(bit_37) };
+                let bit_37: u32 = bit_37 as _;
                 bit_37 as u64
             });
         __bindgen_bitfield_unit
@@ -2404,7 +2404,7 @@
                 37usize,
                 1u8,
             >({
-                let bit_38: u32 = unsafe { ::std::mem::transmute(bit_38) };
+                let bit_38: u32 = bit_38 as _;
                 bit_38 as u64
             });
         __bindgen_bitfield_unit
@@ -2412,7 +2412,7 @@
                 38usize,
                 1u8,
             >({
-                let bit_39: u32 = unsafe { ::std::mem::transmute(bit_39) };
+                let bit_39: u32 = bit_39 as _;
                 bit_39 as u64
             });
         __bindgen_bitfield_unit
@@ -2420,7 +2420,7 @@
                 39usize,
                 1u8,
             >({
-                let bit_40: u32 = unsafe { ::std::mem::transmute(bit_40) };
+                let bit_40: u32 = bit_40 as _;
                 bit_40 as u64
             });
         __bindgen_bitfield_unit
@@ -2428,7 +2428,7 @@
                 40usize,
                 1u8,
             >({
-                let bit_41: u32 = unsafe { ::std::mem::transmute(bit_41) };
+                let bit_41: u32 = bit_41 as _;
                 bit_41 as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/jsval_layout_opaque.rs b/bindgen-tests/tests/expectations/tests/jsval_layout_opaque.rs
index 041744a..df7d74e 100644
--- a/bindgen-tests/tests/expectations/tests/jsval_layout_opaque.rs
+++ b/bindgen-tests/tests/expectations/tests/jsval_layout_opaque.rs
@@ -619,7 +619,7 @@
     #[inline]
     pub fn set_payload47(&mut self, val: u64) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             self._bitfield_1.set_const::<0usize, 47u8>(val as u64)
         }
     }
@@ -639,7 +639,7 @@
     #[inline]
     pub unsafe fn set_payload47_raw(this: *mut Self, val: u64) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 8usize],
             >>::raw_set_const::<
@@ -657,7 +657,7 @@
     #[inline]
     pub fn set_tag(&mut self, val: JSValueTag) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<47usize, 17u8>(val as u64)
         }
     }
@@ -677,7 +677,7 @@
     #[inline]
     pub unsafe fn set_tag_raw(this: *mut Self, val: JSValueTag) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 8usize],
             >>::raw_set_const::<
@@ -697,7 +697,7 @@
                 0usize,
                 47u8,
             >({
-                let payload47: u64 = unsafe { ::std::mem::transmute(payload47) };
+                let payload47: u64 = payload47 as _;
                 payload47 as u64
             });
         __bindgen_bitfield_unit
@@ -705,7 +705,7 @@
                 47usize,
                 17u8,
             >({
-                let tag: u32 = unsafe { ::std::mem::transmute(tag) };
+                let tag: u32 = tag as _;
                 tag as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/layout_align.rs b/bindgen-tests/tests/expectations/tests/layout_align.rs
index 6439b78..6c5f654 100644
--- a/bindgen-tests/tests/expectations/tests/layout_align.rs
+++ b/bindgen-tests/tests/expectations/tests/layout_align.rs
@@ -588,7 +588,7 @@
     #[inline]
     pub fn set_link_duplex(&mut self, val: u16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<0usize, 1u8>(val as u64)
         }
     }
@@ -608,7 +608,7 @@
     #[inline]
     pub unsafe fn set_link_duplex_raw(this: *mut Self, val: u16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -626,7 +626,7 @@
     #[inline]
     pub fn set_link_autoneg(&mut self, val: u16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<1usize, 1u8>(val as u64)
         }
     }
@@ -646,7 +646,7 @@
     #[inline]
     pub unsafe fn set_link_autoneg_raw(this: *mut Self, val: u16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -664,7 +664,7 @@
     #[inline]
     pub fn set_link_status(&mut self, val: u16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<2usize, 1u8>(val as u64)
         }
     }
@@ -684,7 +684,7 @@
     #[inline]
     pub unsafe fn set_link_status_raw(this: *mut Self, val: u16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -705,7 +705,7 @@
                 0usize,
                 1u8,
             >({
-                let link_duplex: u16 = unsafe { ::std::mem::transmute(link_duplex) };
+                let link_duplex: u16 = link_duplex as _;
                 link_duplex as u64
             });
         __bindgen_bitfield_unit
@@ -713,7 +713,7 @@
                 1usize,
                 1u8,
             >({
-                let link_autoneg: u16 = unsafe { ::std::mem::transmute(link_autoneg) };
+                let link_autoneg: u16 = link_autoneg as _;
                 link_autoneg as u64
             });
         __bindgen_bitfield_unit
@@ -721,7 +721,7 @@
                 2usize,
                 1u8,
             >({
-                let link_status: u16 = unsafe { ::std::mem::transmute(link_status) };
+                let link_status: u16 = link_status as _;
                 link_status as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/layout_eth_conf.rs b/bindgen-tests/tests/expectations/tests/layout_eth_conf.rs
index ebc22a6..898079c 100644
--- a/bindgen-tests/tests/expectations/tests/layout_eth_conf.rs
+++ b/bindgen-tests/tests/expectations/tests/layout_eth_conf.rs
@@ -587,7 +587,7 @@
     #[inline]
     pub fn set_header_split(&mut self, val: u16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<0usize, 1u8>(val as u64)
         }
     }
@@ -607,7 +607,7 @@
     #[inline]
     pub unsafe fn set_header_split_raw(this: *mut Self, val: u16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -625,7 +625,7 @@
     #[inline]
     pub fn set_hw_ip_checksum(&mut self, val: u16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<1usize, 1u8>(val as u64)
         }
     }
@@ -645,7 +645,7 @@
     #[inline]
     pub unsafe fn set_hw_ip_checksum_raw(this: *mut Self, val: u16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -663,7 +663,7 @@
     #[inline]
     pub fn set_hw_vlan_filter(&mut self, val: u16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<2usize, 1u8>(val as u64)
         }
     }
@@ -683,7 +683,7 @@
     #[inline]
     pub unsafe fn set_hw_vlan_filter_raw(this: *mut Self, val: u16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -701,7 +701,7 @@
     #[inline]
     pub fn set_hw_vlan_strip(&mut self, val: u16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<3usize, 1u8>(val as u64)
         }
     }
@@ -721,7 +721,7 @@
     #[inline]
     pub unsafe fn set_hw_vlan_strip_raw(this: *mut Self, val: u16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -739,7 +739,7 @@
     #[inline]
     pub fn set_hw_vlan_extend(&mut self, val: u16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<4usize, 1u8>(val as u64)
         }
     }
@@ -759,7 +759,7 @@
     #[inline]
     pub unsafe fn set_hw_vlan_extend_raw(this: *mut Self, val: u16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -777,7 +777,7 @@
     #[inline]
     pub fn set_jumbo_frame(&mut self, val: u16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<5usize, 1u8>(val as u64)
         }
     }
@@ -797,7 +797,7 @@
     #[inline]
     pub unsafe fn set_jumbo_frame_raw(this: *mut Self, val: u16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -815,7 +815,7 @@
     #[inline]
     pub fn set_hw_strip_crc(&mut self, val: u16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<6usize, 1u8>(val as u64)
         }
     }
@@ -835,7 +835,7 @@
     #[inline]
     pub unsafe fn set_hw_strip_crc_raw(this: *mut Self, val: u16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -853,7 +853,7 @@
     #[inline]
     pub fn set_enable_scatter(&mut self, val: u16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<7usize, 1u8>(val as u64)
         }
     }
@@ -873,7 +873,7 @@
     #[inline]
     pub unsafe fn set_enable_scatter_raw(this: *mut Self, val: u16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -891,7 +891,7 @@
     #[inline]
     pub fn set_enable_lro(&mut self, val: u16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<8usize, 1u8>(val as u64)
         }
     }
@@ -911,7 +911,7 @@
     #[inline]
     pub unsafe fn set_enable_lro_raw(this: *mut Self, val: u16) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -938,7 +938,7 @@
                 0usize,
                 1u8,
             >({
-                let header_split: u16 = unsafe { ::std::mem::transmute(header_split) };
+                let header_split: u16 = header_split as _;
                 header_split as u64
             });
         __bindgen_bitfield_unit
@@ -946,9 +946,7 @@
                 1usize,
                 1u8,
             >({
-                let hw_ip_checksum: u16 = unsafe {
-                    ::std::mem::transmute(hw_ip_checksum)
-                };
+                let hw_ip_checksum: u16 = hw_ip_checksum as _;
                 hw_ip_checksum as u64
             });
         __bindgen_bitfield_unit
@@ -956,9 +954,7 @@
                 2usize,
                 1u8,
             >({
-                let hw_vlan_filter: u16 = unsafe {
-                    ::std::mem::transmute(hw_vlan_filter)
-                };
+                let hw_vlan_filter: u16 = hw_vlan_filter as _;
                 hw_vlan_filter as u64
             });
         __bindgen_bitfield_unit
@@ -966,7 +962,7 @@
                 3usize,
                 1u8,
             >({
-                let hw_vlan_strip: u16 = unsafe { ::std::mem::transmute(hw_vlan_strip) };
+                let hw_vlan_strip: u16 = hw_vlan_strip as _;
                 hw_vlan_strip as u64
             });
         __bindgen_bitfield_unit
@@ -974,9 +970,7 @@
                 4usize,
                 1u8,
             >({
-                let hw_vlan_extend: u16 = unsafe {
-                    ::std::mem::transmute(hw_vlan_extend)
-                };
+                let hw_vlan_extend: u16 = hw_vlan_extend as _;
                 hw_vlan_extend as u64
             });
         __bindgen_bitfield_unit
@@ -984,7 +978,7 @@
                 5usize,
                 1u8,
             >({
-                let jumbo_frame: u16 = unsafe { ::std::mem::transmute(jumbo_frame) };
+                let jumbo_frame: u16 = jumbo_frame as _;
                 jumbo_frame as u64
             });
         __bindgen_bitfield_unit
@@ -992,7 +986,7 @@
                 6usize,
                 1u8,
             >({
-                let hw_strip_crc: u16 = unsafe { ::std::mem::transmute(hw_strip_crc) };
+                let hw_strip_crc: u16 = hw_strip_crc as _;
                 hw_strip_crc as u64
             });
         __bindgen_bitfield_unit
@@ -1000,9 +994,7 @@
                 7usize,
                 1u8,
             >({
-                let enable_scatter: u16 = unsafe {
-                    ::std::mem::transmute(enable_scatter)
-                };
+                let enable_scatter: u16 = enable_scatter as _;
                 enable_scatter as u64
             });
         __bindgen_bitfield_unit
@@ -1010,7 +1002,7 @@
                 8usize,
                 1u8,
             >({
-                let enable_lro: u16 = unsafe { ::std::mem::transmute(enable_lro) };
+                let enable_lro: u16 = enable_lro as _;
                 enable_lro as u64
             });
         __bindgen_bitfield_unit
@@ -1070,7 +1062,7 @@
     #[inline]
     pub fn set_hw_vlan_reject_tagged(&mut self, val: u8) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<0usize, 1u8>(val as u64)
         }
     }
@@ -1090,7 +1082,7 @@
     #[inline]
     pub unsafe fn set_hw_vlan_reject_tagged_raw(this: *mut Self, val: u8) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -1108,7 +1100,7 @@
     #[inline]
     pub fn set_hw_vlan_reject_untagged(&mut self, val: u8) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<1usize, 1u8>(val as u64)
         }
     }
@@ -1128,7 +1120,7 @@
     #[inline]
     pub unsafe fn set_hw_vlan_reject_untagged_raw(this: *mut Self, val: u8) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -1146,7 +1138,7 @@
     #[inline]
     pub fn set_hw_vlan_insert_pvid(&mut self, val: u8) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<2usize, 1u8>(val as u64)
         }
     }
@@ -1166,7 +1158,7 @@
     #[inline]
     pub unsafe fn set_hw_vlan_insert_pvid_raw(this: *mut Self, val: u8) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -1187,9 +1179,7 @@
                 0usize,
                 1u8,
             >({
-                let hw_vlan_reject_tagged: u8 = unsafe {
-                    ::std::mem::transmute(hw_vlan_reject_tagged)
-                };
+                let hw_vlan_reject_tagged: u8 = hw_vlan_reject_tagged as _;
                 hw_vlan_reject_tagged as u64
             });
         __bindgen_bitfield_unit
@@ -1197,9 +1187,7 @@
                 1usize,
                 1u8,
             >({
-                let hw_vlan_reject_untagged: u8 = unsafe {
-                    ::std::mem::transmute(hw_vlan_reject_untagged)
-                };
+                let hw_vlan_reject_untagged: u8 = hw_vlan_reject_untagged as _;
                 hw_vlan_reject_untagged as u64
             });
         __bindgen_bitfield_unit
@@ -1207,9 +1195,7 @@
                 2usize,
                 1u8,
             >({
-                let hw_vlan_insert_pvid: u8 = unsafe {
-                    ::std::mem::transmute(hw_vlan_insert_pvid)
-                };
+                let hw_vlan_insert_pvid: u8 = hw_vlan_insert_pvid as _;
                 hw_vlan_insert_pvid as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/layout_mbuf.rs b/bindgen-tests/tests/expectations/tests/layout_mbuf.rs
index 270a22a..0c9e010 100644
--- a/bindgen-tests/tests/expectations/tests/layout_mbuf.rs
+++ b/bindgen-tests/tests/expectations/tests/layout_mbuf.rs
@@ -626,7 +626,7 @@
     #[inline]
     pub fn set_l2_type(&mut self, val: u32) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<0usize, 4u8>(val as u64)
         }
     }
@@ -646,7 +646,7 @@
     #[inline]
     pub unsafe fn set_l2_type_raw(this: *mut Self, val: u32) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 4usize],
             >>::raw_set_const::<
@@ -664,7 +664,7 @@
     #[inline]
     pub fn set_l3_type(&mut self, val: u32) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<4usize, 4u8>(val as u64)
         }
     }
@@ -684,7 +684,7 @@
     #[inline]
     pub unsafe fn set_l3_type_raw(this: *mut Self, val: u32) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 4usize],
             >>::raw_set_const::<
@@ -702,7 +702,7 @@
     #[inline]
     pub fn set_l4_type(&mut self, val: u32) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<8usize, 4u8>(val as u64)
         }
     }
@@ -722,7 +722,7 @@
     #[inline]
     pub unsafe fn set_l4_type_raw(this: *mut Self, val: u32) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 4usize],
             >>::raw_set_const::<
@@ -740,7 +740,7 @@
     #[inline]
     pub fn set_tun_type(&mut self, val: u32) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<12usize, 4u8>(val as u64)
         }
     }
@@ -760,7 +760,7 @@
     #[inline]
     pub unsafe fn set_tun_type_raw(this: *mut Self, val: u32) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 4usize],
             >>::raw_set_const::<
@@ -778,7 +778,7 @@
     #[inline]
     pub fn set_inner_l2_type(&mut self, val: u32) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<16usize, 4u8>(val as u64)
         }
     }
@@ -798,7 +798,7 @@
     #[inline]
     pub unsafe fn set_inner_l2_type_raw(this: *mut Self, val: u32) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 4usize],
             >>::raw_set_const::<
@@ -816,7 +816,7 @@
     #[inline]
     pub fn set_inner_l3_type(&mut self, val: u32) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<20usize, 4u8>(val as u64)
         }
     }
@@ -836,7 +836,7 @@
     #[inline]
     pub unsafe fn set_inner_l3_type_raw(this: *mut Self, val: u32) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 4usize],
             >>::raw_set_const::<
@@ -854,7 +854,7 @@
     #[inline]
     pub fn set_inner_l4_type(&mut self, val: u32) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<24usize, 4u8>(val as u64)
         }
     }
@@ -874,7 +874,7 @@
     #[inline]
     pub unsafe fn set_inner_l4_type_raw(this: *mut Self, val: u32) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 4usize],
             >>::raw_set_const::<
@@ -899,7 +899,7 @@
                 0usize,
                 4u8,
             >({
-                let l2_type: u32 = unsafe { ::std::mem::transmute(l2_type) };
+                let l2_type: u32 = l2_type as _;
                 l2_type as u64
             });
         __bindgen_bitfield_unit
@@ -907,7 +907,7 @@
                 4usize,
                 4u8,
             >({
-                let l3_type: u32 = unsafe { ::std::mem::transmute(l3_type) };
+                let l3_type: u32 = l3_type as _;
                 l3_type as u64
             });
         __bindgen_bitfield_unit
@@ -915,7 +915,7 @@
                 8usize,
                 4u8,
             >({
-                let l4_type: u32 = unsafe { ::std::mem::transmute(l4_type) };
+                let l4_type: u32 = l4_type as _;
                 l4_type as u64
             });
         __bindgen_bitfield_unit
@@ -923,7 +923,7 @@
                 12usize,
                 4u8,
             >({
-                let tun_type: u32 = unsafe { ::std::mem::transmute(tun_type) };
+                let tun_type: u32 = tun_type as _;
                 tun_type as u64
             });
         __bindgen_bitfield_unit
@@ -931,7 +931,7 @@
                 16usize,
                 4u8,
             >({
-                let inner_l2_type: u32 = unsafe { ::std::mem::transmute(inner_l2_type) };
+                let inner_l2_type: u32 = inner_l2_type as _;
                 inner_l2_type as u64
             });
         __bindgen_bitfield_unit
@@ -939,7 +939,7 @@
                 20usize,
                 4u8,
             >({
-                let inner_l3_type: u32 = unsafe { ::std::mem::transmute(inner_l3_type) };
+                let inner_l3_type: u32 = inner_l3_type as _;
                 inner_l3_type as u64
             });
         __bindgen_bitfield_unit
@@ -947,7 +947,7 @@
                 24usize,
                 4u8,
             >({
-                let inner_l4_type: u32 = unsafe { ::std::mem::transmute(inner_l4_type) };
+                let inner_l4_type: u32 = inner_l4_type as _;
                 inner_l4_type as u64
             });
         __bindgen_bitfield_unit
@@ -1188,7 +1188,7 @@
     #[inline]
     pub fn set_l2_len(&mut self, val: u64) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             self._bitfield_1.set_const::<0usize, 7u8>(val as u64)
         }
     }
@@ -1208,7 +1208,7 @@
     #[inline]
     pub unsafe fn set_l2_len_raw(this: *mut Self, val: u64) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 7usize],
             >>::raw_set_const::<
@@ -1226,7 +1226,7 @@
     #[inline]
     pub fn set_l3_len(&mut self, val: u64) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             self._bitfield_1.set_const::<7usize, 9u8>(val as u64)
         }
     }
@@ -1246,7 +1246,7 @@
     #[inline]
     pub unsafe fn set_l3_len_raw(this: *mut Self, val: u64) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 7usize],
             >>::raw_set_const::<
@@ -1264,7 +1264,7 @@
     #[inline]
     pub fn set_l4_len(&mut self, val: u64) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             self._bitfield_1.set_const::<16usize, 8u8>(val as u64)
         }
     }
@@ -1284,7 +1284,7 @@
     #[inline]
     pub unsafe fn set_l4_len_raw(this: *mut Self, val: u64) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 7usize],
             >>::raw_set_const::<
@@ -1302,7 +1302,7 @@
     #[inline]
     pub fn set_tso_segsz(&mut self, val: u64) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             self._bitfield_1.set_const::<24usize, 16u8>(val as u64)
         }
     }
@@ -1322,7 +1322,7 @@
     #[inline]
     pub unsafe fn set_tso_segsz_raw(this: *mut Self, val: u64) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 7usize],
             >>::raw_set_const::<
@@ -1340,7 +1340,7 @@
     #[inline]
     pub fn set_outer_l3_len(&mut self, val: u64) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             self._bitfield_1.set_const::<40usize, 9u8>(val as u64)
         }
     }
@@ -1360,7 +1360,7 @@
     #[inline]
     pub unsafe fn set_outer_l3_len_raw(this: *mut Self, val: u64) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 7usize],
             >>::raw_set_const::<
@@ -1378,7 +1378,7 @@
     #[inline]
     pub fn set_outer_l2_len(&mut self, val: u64) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             self._bitfield_1.set_const::<49usize, 7u8>(val as u64)
         }
     }
@@ -1398,7 +1398,7 @@
     #[inline]
     pub unsafe fn set_outer_l2_len_raw(this: *mut Self, val: u64) {
         unsafe {
-            let val: u64 = ::std::mem::transmute(val);
+            let val: u64 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 7usize],
             >>::raw_set_const::<
@@ -1422,7 +1422,7 @@
                 0usize,
                 7u8,
             >({
-                let l2_len: u64 = unsafe { ::std::mem::transmute(l2_len) };
+                let l2_len: u64 = l2_len as _;
                 l2_len as u64
             });
         __bindgen_bitfield_unit
@@ -1430,7 +1430,7 @@
                 7usize,
                 9u8,
             >({
-                let l3_len: u64 = unsafe { ::std::mem::transmute(l3_len) };
+                let l3_len: u64 = l3_len as _;
                 l3_len as u64
             });
         __bindgen_bitfield_unit
@@ -1438,7 +1438,7 @@
                 16usize,
                 8u8,
             >({
-                let l4_len: u64 = unsafe { ::std::mem::transmute(l4_len) };
+                let l4_len: u64 = l4_len as _;
                 l4_len as u64
             });
         __bindgen_bitfield_unit
@@ -1446,7 +1446,7 @@
                 24usize,
                 16u8,
             >({
-                let tso_segsz: u64 = unsafe { ::std::mem::transmute(tso_segsz) };
+                let tso_segsz: u64 = tso_segsz as _;
                 tso_segsz as u64
             });
         __bindgen_bitfield_unit
@@ -1454,7 +1454,7 @@
                 40usize,
                 9u8,
             >({
-                let outer_l3_len: u64 = unsafe { ::std::mem::transmute(outer_l3_len) };
+                let outer_l3_len: u64 = outer_l3_len as _;
                 outer_l3_len as u64
             });
         __bindgen_bitfield_unit
@@ -1462,7 +1462,7 @@
                 49usize,
                 7u8,
             >({
-                let outer_l2_len: u64 = unsafe { ::std::mem::transmute(outer_l2_len) };
+                let outer_l2_len: u64 = outer_l2_len as _;
                 outer_l2_len as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/only_bitfields.rs b/bindgen-tests/tests/expectations/tests/only_bitfields.rs
index 6e25fd3..92f8ae8 100644
--- a/bindgen-tests/tests/expectations/tests/only_bitfields.rs
+++ b/bindgen-tests/tests/expectations/tests/only_bitfields.rs
@@ -508,7 +508,7 @@
     #[inline]
     pub fn set_a(&mut self, val: bool) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<0usize, 1u8>(val as u64)
         }
     }
@@ -528,7 +528,7 @@
     #[inline]
     pub unsafe fn set_a_raw(this: *mut Self, val: bool) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -546,7 +546,7 @@
     #[inline]
     pub fn set_b(&mut self, val: bool) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<1usize, 7u8>(val as u64)
         }
     }
@@ -566,7 +566,7 @@
     #[inline]
     pub unsafe fn set_b_raw(this: *mut Self, val: bool) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -583,7 +583,7 @@
                 0usize,
                 1u8,
             >({
-                let a: u8 = unsafe { ::std::mem::transmute(a) };
+                let a: u8 = a as _;
                 a as u64
             });
         __bindgen_bitfield_unit
@@ -591,7 +591,7 @@
                 1usize,
                 7u8,
             >({
-                let b: u8 = unsafe { ::std::mem::transmute(b) };
+                let b: u8 = b as _;
                 b as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/packed-bitfield.rs b/bindgen-tests/tests/expectations/tests/packed-bitfield.rs
index a72a42b..a1d1ba4 100644
--- a/bindgen-tests/tests/expectations/tests/packed-bitfield.rs
+++ b/bindgen-tests/tests/expectations/tests/packed-bitfield.rs
@@ -508,7 +508,7 @@
     #[inline]
     pub fn set_day(&mut self, val: ::std::os::raw::c_uchar) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<0usize, 5u8>(val as u64)
         }
     }
@@ -528,7 +528,7 @@
     #[inline]
     pub unsafe fn set_day_raw(this: *mut Self, val: ::std::os::raw::c_uchar) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 3usize],
             >>::raw_set_const::<
@@ -546,7 +546,7 @@
     #[inline]
     pub fn set_month(&mut self, val: ::std::os::raw::c_uchar) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<5usize, 4u8>(val as u64)
         }
     }
@@ -566,7 +566,7 @@
     #[inline]
     pub unsafe fn set_month_raw(this: *mut Self, val: ::std::os::raw::c_uchar) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 3usize],
             >>::raw_set_const::<
@@ -584,7 +584,7 @@
     #[inline]
     pub fn set_year(&mut self, val: ::std::os::raw::c_short) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<9usize, 15u8>(val as u64)
         }
     }
@@ -604,7 +604,7 @@
     #[inline]
     pub unsafe fn set_year_raw(this: *mut Self, val: ::std::os::raw::c_short) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 3usize],
             >>::raw_set_const::<
@@ -625,7 +625,7 @@
                 0usize,
                 5u8,
             >({
-                let day: u8 = unsafe { ::std::mem::transmute(day) };
+                let day: u8 = day as _;
                 day as u64
             });
         __bindgen_bitfield_unit
@@ -633,7 +633,7 @@
                 5usize,
                 4u8,
             >({
-                let month: u8 = unsafe { ::std::mem::transmute(month) };
+                let month: u8 = month as _;
                 month as u64
             });
         __bindgen_bitfield_unit
@@ -641,7 +641,7 @@
                 9usize,
                 15u8,
             >({
-                let year: u16 = unsafe { ::std::mem::transmute(year) };
+                let year: u16 = year as _;
                 year as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/private_fields.rs b/bindgen-tests/tests/expectations/tests/private_fields.rs
index 9139267..9f2e6bd 100644
--- a/bindgen-tests/tests/expectations/tests/private_fields.rs
+++ b/bindgen-tests/tests/expectations/tests/private_fields.rs
@@ -525,7 +525,7 @@
     #[inline]
     fn set_a(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<0usize, 4u8>(val as u64)
         }
     }
@@ -545,7 +545,7 @@
     #[inline]
     unsafe fn set_a_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -563,7 +563,7 @@
     #[inline]
     fn set_b(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<4usize, 4u8>(val as u64)
         }
     }
@@ -583,7 +583,7 @@
     #[inline]
     unsafe fn set_b_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -603,7 +603,7 @@
                 0usize,
                 4u8,
             >({
-                let a: u32 = unsafe { ::std::mem::transmute(a) };
+                let a: u32 = a as _;
                 a as u64
             });
         __bindgen_bitfield_unit
@@ -611,7 +611,7 @@
                 4usize,
                 4u8,
             >({
-                let b: u32 = unsafe { ::std::mem::transmute(b) };
+                let b: u32 = b as _;
                 b as u64
             });
         __bindgen_bitfield_unit
@@ -639,7 +639,7 @@
     #[inline]
     pub fn set_a(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<0usize, 4u8>(val as u64)
         }
     }
@@ -659,7 +659,7 @@
     #[inline]
     pub unsafe fn set_a_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -677,7 +677,7 @@
     #[inline]
     pub fn set_b(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<4usize, 4u8>(val as u64)
         }
     }
@@ -697,7 +697,7 @@
     #[inline]
     pub unsafe fn set_b_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -717,7 +717,7 @@
                 0usize,
                 4u8,
             >({
-                let a: u32 = unsafe { ::std::mem::transmute(a) };
+                let a: u32 = a as _;
                 a as u64
             });
         __bindgen_bitfield_unit
@@ -725,7 +725,7 @@
                 4usize,
                 4u8,
             >({
-                let b: u32 = unsafe { ::std::mem::transmute(b) };
+                let b: u32 = b as _;
                 b as u64
             });
         __bindgen_bitfield_unit
@@ -753,7 +753,7 @@
     #[inline]
     fn set_a(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<0usize, 4u8>(val as u64)
         }
     }
@@ -773,7 +773,7 @@
     #[inline]
     unsafe fn set_a_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -791,7 +791,7 @@
     #[inline]
     pub fn set_d(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<4usize, 4u8>(val as u64)
         }
     }
@@ -811,7 +811,7 @@
     #[inline]
     pub unsafe fn set_d_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -831,7 +831,7 @@
                 0usize,
                 4u8,
             >({
-                let a: u32 = unsafe { ::std::mem::transmute(a) };
+                let a: u32 = a as _;
                 a as u64
             });
         __bindgen_bitfield_unit
@@ -839,7 +839,7 @@
                 4usize,
                 4u8,
             >({
-                let d: u32 = unsafe { ::std::mem::transmute(d) };
+                let d: u32 = d as _;
                 d as u64
             });
         __bindgen_bitfield_unit
@@ -997,7 +997,7 @@
     #[inline]
     pub fn set_bf_a(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<0usize, 4u8>(val as u64)
         }
     }
@@ -1017,7 +1017,7 @@
     #[inline]
     pub unsafe fn set_bf_a_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -1035,7 +1035,7 @@
     #[inline]
     fn set_bf_b(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<4usize, 4u8>(val as u64)
         }
     }
@@ -1055,7 +1055,7 @@
     #[inline]
     unsafe fn set_bf_b_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -1073,7 +1073,7 @@
     #[inline]
     fn set_private_bf_c(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<8usize, 4u8>(val as u64)
         }
     }
@@ -1093,7 +1093,7 @@
     #[inline]
     unsafe fn set_private_bf_c_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -1114,7 +1114,7 @@
                 0usize,
                 4u8,
             >({
-                let bf_a: u32 = unsafe { ::std::mem::transmute(bf_a) };
+                let bf_a: u32 = bf_a as _;
                 bf_a as u64
             });
         __bindgen_bitfield_unit
@@ -1122,7 +1122,7 @@
                 4usize,
                 4u8,
             >({
-                let bf_b: u32 = unsafe { ::std::mem::transmute(bf_b) };
+                let bf_b: u32 = bf_b as _;
                 bf_b as u64
             });
         __bindgen_bitfield_unit
@@ -1130,7 +1130,7 @@
                 8usize,
                 4u8,
             >({
-                let private_bf_c: u32 = unsafe { ::std::mem::transmute(private_bf_c) };
+                let private_bf_c: u32 = private_bf_c as _;
                 private_bf_c as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/redundant-packed-and-align.rs b/bindgen-tests/tests/expectations/tests/redundant-packed-and-align.rs
index 77f9531..c5fdff6 100644
--- a/bindgen-tests/tests/expectations/tests/redundant-packed-and-align.rs
+++ b/bindgen-tests/tests/expectations/tests/redundant-packed-and-align.rs
@@ -541,7 +541,7 @@
     #[inline]
     pub fn set_b0(&mut self, val: u8) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<0usize, 1u8>(val as u64)
         }
     }
@@ -561,7 +561,7 @@
     #[inline]
     pub unsafe fn set_b0_raw(this: *mut Self, val: u8) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -579,7 +579,7 @@
     #[inline]
     pub fn set_b1(&mut self, val: u8) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<1usize, 1u8>(val as u64)
         }
     }
@@ -599,7 +599,7 @@
     #[inline]
     pub unsafe fn set_b1_raw(this: *mut Self, val: u8) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -616,7 +616,7 @@
                 0usize,
                 1u8,
             >({
-                let b0: u8 = unsafe { ::std::mem::transmute(b0) };
+                let b0: u8 = b0 as _;
                 b0 as u64
             });
         __bindgen_bitfield_unit
@@ -624,7 +624,7 @@
                 1usize,
                 1u8,
             >({
-                let b1: u8 = unsafe { ::std::mem::transmute(b1) };
+                let b1: u8 = b1 as _;
                 b1 as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/struct_with_bitfields.rs b/bindgen-tests/tests/expectations/tests/struct_with_bitfields.rs
index 20c85cc..f4ee972 100644
--- a/bindgen-tests/tests/expectations/tests/struct_with_bitfields.rs
+++ b/bindgen-tests/tests/expectations/tests/struct_with_bitfields.rs
@@ -511,7 +511,7 @@
     #[inline]
     pub fn set_a(&mut self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<0usize, 1u8>(val as u64)
         }
     }
@@ -531,7 +531,7 @@
     #[inline]
     pub unsafe fn set_a_raw(this: *mut Self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -549,7 +549,7 @@
     #[inline]
     pub fn set_b(&mut self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<1usize, 1u8>(val as u64)
         }
     }
@@ -569,7 +569,7 @@
     #[inline]
     pub unsafe fn set_b_raw(this: *mut Self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -587,7 +587,7 @@
     #[inline]
     pub fn set_c(&mut self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<2usize, 1u8>(val as u64)
         }
     }
@@ -607,7 +607,7 @@
     #[inline]
     pub unsafe fn set_c_raw(this: *mut Self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -625,7 +625,7 @@
     #[inline]
     pub fn set_d(&mut self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             self._bitfield_1.set_const::<6usize, 2u8>(val as u64)
         }
     }
@@ -645,7 +645,7 @@
     #[inline]
     pub unsafe fn set_d_raw(this: *mut Self, val: ::std::os::raw::c_ushort) {
         unsafe {
-            let val: u16 = ::std::mem::transmute(val);
+            let val: u16 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -667,7 +667,7 @@
                 0usize,
                 1u8,
             >({
-                let a: u16 = unsafe { ::std::mem::transmute(a) };
+                let a: u16 = a as _;
                 a as u64
             });
         __bindgen_bitfield_unit
@@ -675,7 +675,7 @@
                 1usize,
                 1u8,
             >({
-                let b: u16 = unsafe { ::std::mem::transmute(b) };
+                let b: u16 = b as _;
                 b as u64
             });
         __bindgen_bitfield_unit
@@ -683,7 +683,7 @@
                 2usize,
                 1u8,
             >({
-                let c: u16 = unsafe { ::std::mem::transmute(c) };
+                let c: u16 = c as _;
                 c as u64
             });
         __bindgen_bitfield_unit
@@ -691,7 +691,7 @@
                 6usize,
                 2u8,
             >({
-                let d: u16 = unsafe { ::std::mem::transmute(d) };
+                let d: u16 = d as _;
                 d as u64
             });
         __bindgen_bitfield_unit
@@ -705,7 +705,7 @@
     #[inline]
     pub fn set_f(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_2.set_const::<0usize, 2u8>(val as u64)
         }
     }
@@ -725,7 +725,7 @@
     #[inline]
     pub unsafe fn set_f_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 8usize],
             >>::raw_set_const::<
@@ -743,7 +743,7 @@
     #[inline]
     pub fn set_g(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_2.set_const::<32usize, 32u8>(val as u64)
         }
     }
@@ -763,7 +763,7 @@
     #[inline]
     pub unsafe fn set_g_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 8usize],
             >>::raw_set_const::<
@@ -783,7 +783,7 @@
                 0usize,
                 2u8,
             >({
-                let f: u32 = unsafe { ::std::mem::transmute(f) };
+                let f: u32 = f as _;
                 f as u64
             });
         __bindgen_bitfield_unit
@@ -791,7 +791,7 @@
                 32usize,
                 32u8,
             >({
-                let g: u32 = unsafe { ::std::mem::transmute(g) };
+                let g: u32 = g as _;
                 g as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/timex.rs b/bindgen-tests/tests/expectations/tests/timex.rs
index 7e237c6..4bf28c3 100644
--- a/bindgen-tests/tests/expectations/tests/timex.rs
+++ b/bindgen-tests/tests/expectations/tests/timex.rs
@@ -542,7 +542,7 @@
     #[inline]
     pub fn set_a(&mut self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<0usize, 32u8>(val as u64)
         }
     }
@@ -562,7 +562,7 @@
     #[inline]
     pub unsafe fn set_a_raw(this: *mut Self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 44usize],
             >>::raw_set_const::<
@@ -580,7 +580,7 @@
     #[inline]
     pub fn set_b(&mut self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<32usize, 32u8>(val as u64)
         }
     }
@@ -600,7 +600,7 @@
     #[inline]
     pub unsafe fn set_b_raw(this: *mut Self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 44usize],
             >>::raw_set_const::<
@@ -618,7 +618,7 @@
     #[inline]
     pub fn set_c(&mut self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<64usize, 32u8>(val as u64)
         }
     }
@@ -638,7 +638,7 @@
     #[inline]
     pub unsafe fn set_c_raw(this: *mut Self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 44usize],
             >>::raw_set_const::<
@@ -656,7 +656,7 @@
     #[inline]
     pub fn set_d(&mut self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<96usize, 32u8>(val as u64)
         }
     }
@@ -676,7 +676,7 @@
     #[inline]
     pub unsafe fn set_d_raw(this: *mut Self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 44usize],
             >>::raw_set_const::<
@@ -694,7 +694,7 @@
     #[inline]
     pub fn set_e(&mut self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<128usize, 32u8>(val as u64)
         }
     }
@@ -714,7 +714,7 @@
     #[inline]
     pub unsafe fn set_e_raw(this: *mut Self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 44usize],
             >>::raw_set_const::<
@@ -732,7 +732,7 @@
     #[inline]
     pub fn set_f(&mut self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<160usize, 32u8>(val as u64)
         }
     }
@@ -752,7 +752,7 @@
     #[inline]
     pub unsafe fn set_f_raw(this: *mut Self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 44usize],
             >>::raw_set_const::<
@@ -770,7 +770,7 @@
     #[inline]
     pub fn set_g(&mut self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<192usize, 32u8>(val as u64)
         }
     }
@@ -790,7 +790,7 @@
     #[inline]
     pub unsafe fn set_g_raw(this: *mut Self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 44usize],
             >>::raw_set_const::<
@@ -808,7 +808,7 @@
     #[inline]
     pub fn set_h(&mut self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<224usize, 32u8>(val as u64)
         }
     }
@@ -828,7 +828,7 @@
     #[inline]
     pub unsafe fn set_h_raw(this: *mut Self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 44usize],
             >>::raw_set_const::<
@@ -846,7 +846,7 @@
     #[inline]
     pub fn set_i(&mut self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<256usize, 32u8>(val as u64)
         }
     }
@@ -866,7 +866,7 @@
     #[inline]
     pub unsafe fn set_i_raw(this: *mut Self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 44usize],
             >>::raw_set_const::<
@@ -884,7 +884,7 @@
     #[inline]
     pub fn set_j(&mut self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<288usize, 32u8>(val as u64)
         }
     }
@@ -904,7 +904,7 @@
     #[inline]
     pub unsafe fn set_j_raw(this: *mut Self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 44usize],
             >>::raw_set_const::<
@@ -922,7 +922,7 @@
     #[inline]
     pub fn set_k(&mut self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<320usize, 32u8>(val as u64)
         }
     }
@@ -942,7 +942,7 @@
     #[inline]
     pub unsafe fn set_k_raw(this: *mut Self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 44usize],
             >>::raw_set_const::<
diff --git a/bindgen-tests/tests/expectations/tests/union_bitfield.rs b/bindgen-tests/tests/expectations/tests/union_bitfield.rs
index d9af24c..ce67d03 100644
--- a/bindgen-tests/tests/expectations/tests/union_bitfield.rs
+++ b/bindgen-tests/tests/expectations/tests/union_bitfield.rs
@@ -518,7 +518,7 @@
     #[inline]
     pub fn set_derp(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<0usize, 1u8>(val as u64)
         }
     }
@@ -538,7 +538,7 @@
     #[inline]
     pub unsafe fn set_derp_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -557,7 +557,7 @@
                 0usize,
                 1u8,
             >({
-                let derp: u32 = unsafe { ::std::mem::transmute(derp) };
+                let derp: u32 = derp as _;
                 derp as u64
             });
         __bindgen_bitfield_unit
@@ -593,7 +593,7 @@
     #[inline]
     pub fn set_foo(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<0usize, 31u8>(val as u64)
         }
     }
@@ -613,7 +613,7 @@
     #[inline]
     pub unsafe fn set_foo_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -631,7 +631,7 @@
     #[inline]
     pub fn set_bar(&mut self, val: ::std::os::raw::c_uchar) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_1.set_const::<0usize, 1u8>(val as u64)
         }
     }
@@ -651,7 +651,7 @@
     #[inline]
     pub unsafe fn set_bar_raw(this: *mut Self, val: ::std::os::raw::c_uchar) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 1usize],
             >>::raw_set_const::<
@@ -671,7 +671,7 @@
                 0usize,
                 31u8,
             >({
-                let foo: u32 = unsafe { ::std::mem::transmute(foo) };
+                let foo: u32 = foo as _;
                 foo as u64
             });
         __bindgen_bitfield_unit
@@ -679,7 +679,7 @@
                 0usize,
                 1u8,
             >({
-                let bar: u8 = unsafe { ::std::mem::transmute(bar) };
+                let bar: u8 = bar as _;
                 bar as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/union_with_anon_struct_bitfield.rs b/bindgen-tests/tests/expectations/tests/union_with_anon_struct_bitfield.rs
index b757df6..475dc01 100644
--- a/bindgen-tests/tests/expectations/tests/union_with_anon_struct_bitfield.rs
+++ b/bindgen-tests/tests/expectations/tests/union_with_anon_struct_bitfield.rs
@@ -517,7 +517,7 @@
     #[inline]
     pub fn set_b(&mut self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<0usize, 7u8>(val as u64)
         }
     }
@@ -537,7 +537,7 @@
     #[inline]
     pub unsafe fn set_b_raw(this: *mut Self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 4usize],
             >>::raw_set_const::<
@@ -555,7 +555,7 @@
     #[inline]
     pub fn set_c(&mut self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<7usize, 25u8>(val as u64)
         }
     }
@@ -575,7 +575,7 @@
     #[inline]
     pub unsafe fn set_c_raw(this: *mut Self, val: ::std::os::raw::c_int) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 4usize],
             >>::raw_set_const::<
@@ -595,7 +595,7 @@
                 0usize,
                 7u8,
             >({
-                let b: u32 = unsafe { ::std::mem::transmute(b) };
+                let b: u32 = b as _;
                 b as u64
             });
         __bindgen_bitfield_unit
@@ -603,7 +603,7 @@
                 7usize,
                 25u8,
             >({
-                let c: u32 = unsafe { ::std::mem::transmute(c) };
+                let c: u32 = c as _;
                 c as u64
             });
         __bindgen_bitfield_unit
diff --git a/bindgen-tests/tests/expectations/tests/weird_bitfields.rs b/bindgen-tests/tests/expectations/tests/weird_bitfields.rs
index 7a9269b..db0a4f1 100644
--- a/bindgen-tests/tests/expectations/tests/weird_bitfields.rs
+++ b/bindgen-tests/tests/expectations/tests/weird_bitfields.rs
@@ -574,7 +574,7 @@
     #[inline]
     pub fn set_bitTest(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<0usize, 16u8>(val as u64)
         }
     }
@@ -594,7 +594,7 @@
     #[inline]
     pub unsafe fn set_bitTest_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 4usize],
             >>::raw_set_const::<
@@ -612,7 +612,7 @@
     #[inline]
     pub fn set_bitTest2(&mut self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_1.set_const::<16usize, 15u8>(val as u64)
         }
     }
@@ -632,7 +632,7 @@
     #[inline]
     pub unsafe fn set_bitTest2_raw(this: *mut Self, val: ::std::os::raw::c_uint) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 4usize],
             >>::raw_set_const::<
@@ -652,7 +652,7 @@
                 0usize,
                 16u8,
             >({
-                let bitTest: u32 = unsafe { ::std::mem::transmute(bitTest) };
+                let bitTest: u32 = bitTest as _;
                 bitTest as u64
             });
         __bindgen_bitfield_unit
@@ -660,7 +660,7 @@
                 16usize,
                 15u8,
             >({
-                let bitTest2: u32 = unsafe { ::std::mem::transmute(bitTest2) };
+                let bitTest2: u32 = bitTest2 as _;
                 bitTest2 as u64
             });
         __bindgen_bitfield_unit
@@ -674,7 +674,7 @@
     #[inline]
     pub fn set_mFillOpacitySource(&mut self, val: nsStyleSVGOpacitySource) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_2.set_const::<0usize, 3u8>(val as u64)
         }
     }
@@ -697,7 +697,7 @@
         val: nsStyleSVGOpacitySource,
     ) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -715,7 +715,7 @@
     #[inline]
     pub fn set_mStrokeOpacitySource(&mut self, val: nsStyleSVGOpacitySource) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             self._bitfield_2.set_const::<3usize, 3u8>(val as u64)
         }
     }
@@ -740,7 +740,7 @@
         val: nsStyleSVGOpacitySource,
     ) {
         unsafe {
-            let val: u32 = ::std::mem::transmute(val);
+            let val: u32 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -758,7 +758,7 @@
     #[inline]
     pub fn set_mStrokeDasharrayFromObject(&mut self, val: bool) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_2.set_const::<6usize, 1u8>(val as u64)
         }
     }
@@ -778,7 +778,7 @@
     #[inline]
     pub unsafe fn set_mStrokeDasharrayFromObject_raw(this: *mut Self, val: bool) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -796,7 +796,7 @@
     #[inline]
     pub fn set_mStrokeDashoffsetFromObject(&mut self, val: bool) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_2.set_const::<7usize, 1u8>(val as u64)
         }
     }
@@ -816,7 +816,7 @@
     #[inline]
     pub unsafe fn set_mStrokeDashoffsetFromObject_raw(this: *mut Self, val: bool) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -834,7 +834,7 @@
     #[inline]
     pub fn set_mStrokeWidthFromObject(&mut self, val: bool) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             self._bitfield_2.set_const::<8usize, 1u8>(val as u64)
         }
     }
@@ -854,7 +854,7 @@
     #[inline]
     pub unsafe fn set_mStrokeWidthFromObject_raw(this: *mut Self, val: bool) {
         unsafe {
-            let val: u8 = ::std::mem::transmute(val);
+            let val: u8 = val as _;
             <__BindgenBitfieldUnit<
                 [u8; 2usize],
             >>::raw_set_const::<
@@ -877,9 +877,7 @@
                 0usize,
                 3u8,
             >({
-                let mFillOpacitySource: u32 = unsafe {
-                    ::std::mem::transmute(mFillOpacitySource)
-                };
+                let mFillOpacitySource: u32 = mFillOpacitySource as _;
                 mFillOpacitySource as u64
             });
         __bindgen_bitfield_unit
@@ -887,9 +885,7 @@
                 3usize,
                 3u8,
             >({
-                let mStrokeOpacitySource: u32 = unsafe {
-                    ::std::mem::transmute(mStrokeOpacitySource)
-                };
+                let mStrokeOpacitySource: u32 = mStrokeOpacitySource as _;
                 mStrokeOpacitySource as u64
             });
         __bindgen_bitfield_unit
@@ -897,9 +893,7 @@
                 6usize,
                 1u8,
             >({
-                let mStrokeDasharrayFromObject: u8 = unsafe {
-                    ::std::mem::transmute(mStrokeDasharrayFromObject)
-                };
+                let mStrokeDasharrayFromObject: u8 = mStrokeDasharrayFromObject as _;
                 mStrokeDasharrayFromObject as u64
             });
         __bindgen_bitfield_unit
@@ -907,9 +901,7 @@
                 7usize,
                 1u8,
             >({
-                let mStrokeDashoffsetFromObject: u8 = unsafe {
-                    ::std::mem::transmute(mStrokeDashoffsetFromObject)
-                };
+                let mStrokeDashoffsetFromObject: u8 = mStrokeDashoffsetFromObject as _;
                 mStrokeDashoffsetFromObject as u64
             });
         __bindgen_bitfield_unit
@@ -917,9 +909,7 @@
                 8usize,
                 1u8,
             >({
-                let mStrokeWidthFromObject: u8 = unsafe {
-                    ::std::mem::transmute(mStrokeWidthFromObject)
-                };
+                let mStrokeWidthFromObject: u8 = mStrokeWidthFromObject as _;
                 mStrokeWidthFromObject as u64
             });
         __bindgen_bitfield_unit
