mrustc's lexer incorrectly parses `2b` as an integer literal with unknown suffix 'b', rather than as two separate tokens (integer `2` an followed by identifier `b`). This causes a build failure: error:0: Unknown integer suffix b This patch renames the macro pattern `2b` to `_2b` which is a valid identifier that mrustc can parse correctly. The functionality remains identical as this is just a pattern label used internally by the macro. diff --git a/library/stdarch/crates/core_arch/src/powerpc/macros.rs b/library/stdarch/crates/core_arch/src/powerpc/macros.rs index 1234567..abcdefg 100644 --- a/library/stdarch/crates/core_arch/src/powerpc/macros.rs +++ b/library/stdarch/crates/core_arch/src/powerpc/macros.rs @@ -114,7 +114,7 @@ macro_rules! impl_vec_trait { ([$Trait:ident $m:ident] 2 ($fn:ident)) => { impl_vec_trait!{ [$Trait $m] ($fn, $fn, $fn, $fn, $fn, $fn) } }; - ([$Trait:ident $m:ident]+ 2b ($b:ident, $h:ident, $w:ident)) => { + ([$Trait:ident $m:ident]+ _2b ($b:ident, $h:ident, $w:ident)) => { impl_vec_trait!{ [$Trait $m]+ $b (vector_bool_char, vector_bool_char) -> vector_bool_char } impl_vec_trait!{ [$Trait $m]+ $b (vector_unsigned_char, vector_unsigned_char) -> vector_unsigned_char } impl_vec_trait!{ [$Trait $m]+ $b (vector_signed_char, vector_signed_char) -> vector_signed_char } @@ -125,9 +125,9 @@ macro_rules! impl_vec_trait { impl_vec_trait!{ [$Trait $m]+ $w (vector_unsigned_int, vector_unsigned_int) -> vector_unsigned_int } impl_vec_trait!{ [$Trait $m]+ $w (vector_signed_int, vector_signed_int) -> vector_signed_int } }; - ([$Trait:ident $m:ident]+ 2b ($fn:ident)) => { - impl_vec_trait!{ [$Trait $m]+ 2b ($fn, $fn, $fn) } + ([$Trait:ident $m:ident]+ _2b ($fn:ident)) => { + impl_vec_trait!{ [$Trait $m]+ _2b ($fn, $fn, $fn) } }; } macro_rules! s_t_l { diff --git a/library/stdarch/crates/core_arch/src/powerpc/altivec.rs b/library/stdarch/crates/core_arch/src/powerpc/altivec.rs index 1234567..abcdefg 100644 --- a/library/stdarch/crates/core_arch/src/powerpc/altivec.rs +++ b/library/stdarch/crates/core_arch/src/powerpc/altivec.rs @@ -1308,7 +1308,7 @@ unsafe fn vec_andc(self, b: Other) -> Self::Result; } - impl_vec_trait! { [VectorAndc vec_andc]+ 2b (andc) } + impl_vec_trait! { [VectorAndc vec_andc]+ _2b (andc) } #[inline] #[target_feature(enable = "altivec")] @@ -1326,7 +1326,7 @@ unsafe fn vec_orc(self, b: Other) -> Self::Result; } - impl_vec_trait! { [VectorOrc vec_orc]+ 2b (orc) } + impl_vec_trait! { [VectorOrc vec_orc]+ _2b (orc) } test_impl! { vec_vand(a: vector_signed_char, b: vector_signed_char) -> vector_signed_char [ simd_and, vand / xxland ] } @@ -2465,7 +2465,7 @@ unsafe fn vec_nor(self, b: Other) -> Self::Result; } - impl_vec_trait! { [VectorNor vec_nor]+ 2b (vec_vnorsb, vec_vnorsh, vec_vnorsw) } + impl_vec_trait! { [VectorNor vec_nor]+ _2b (vec_vnorsb, vec_vnorsh, vec_vnorsw) } macro_rules! vector_vnand { ($fun:ident $ty:ident) => { @@ -2490,7 +2490,7 @@ unsafe fn vec_nand(self, b: Other) -> Self::Result; } - impl_vec_trait! { [VectorNand vec_nand]+ 2b (vec_vnandsb, vec_vnandsh, vec_vnandsw) } + impl_vec_trait! { [VectorNand vec_nand]+ _2b (vec_vnandsb, vec_vnandsh, vec_vnandsw) } #[inline] #[target_feature(enable = "altivec")] @@ -2689,7 +2689,7 @@ unsafe fn vec_mergeh(self, b: Other) -> Self::Result; } - impl_vec_trait! { [VectorMergeh vec_mergeh]+ 2b (vec_vmrghb, vec_vmrghh, vec_vmrghw) } + impl_vec_trait! { [VectorMergeh vec_mergeh]+ _2b (vec_vmrghb, vec_vmrghh, vec_vmrghw) } impl_vec_trait! { [VectorMergeh vec_mergeh]+ vec_vmrghw (vector_float, vector_float) -> vector_float } #[unstable(feature = "stdarch_powerpc", issue = "111145")] @@ -2698,7 +2698,7 @@ unsafe fn vec_mergel(self, b: Other) -> Self::Result; } - impl_vec_trait! { [VectorMergel vec_mergel]+ 2b (vec_vmrglb, vec_vmrglh, vec_vmrglw) } + impl_vec_trait! { [VectorMergel vec_mergel]+ _2b (vec_vmrglb, vec_vmrglh, vec_vmrglw) } impl_vec_trait! { [VectorMergel vec_mergel]+ vec_vmrglw (vector_float, vector_float) -> vector_float } #[inline]