From 30ee7ba862f97bf32c1fc665590edd71901d12d1 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Tue, 21 May 2024 16:30:55 +0200 Subject: [PATCH] Add shl and shr missing casts --- src/context.rs | 2 +- src/int.rs | 24 ++++++++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/context.rs b/src/context.rs index a082bc1b2fc2..0e3d79077992 100644 --- a/src/context.rs +++ b/src/context.rs @@ -613,7 +613,7 @@ impl<'b, 'tcx> CodegenCx<'b, 'tcx> { // user defined names let mut name = String::with_capacity(prefix.len() + 6); name.push_str(prefix); - name.push_str("."); + name.push('.'); name.push_str(&(idx as u64).to_base(ALPHANUMERIC_ONLY)); name } diff --git a/src/int.rs b/src/int.rs index 841bcf592e48..218198b9c576 100644 --- a/src/int.rs +++ b/src/int.rs @@ -83,7 +83,17 @@ impl<'a, 'gcc, 'tcx> Builder<'a, 'gcc, 'tcx> { let b = self.context.new_cast(self.location, b, a_type); a >> b } else { - a >> b + let a_size = a_type.get_size(); + let b_size = b_type.get_size(); + if a_size > b_size { + let b = self.context.new_cast(self.location, b, a_type); + a >> b + } else if a_size < b_size { + let a = self.context.new_cast(self.location, a, b_type); + a >> b + } else { + a >> b + } } } else if a_type.is_vector() && a_type.is_vector() { a >> b @@ -635,7 +645,17 @@ impl<'a, 'gcc, 'tcx> Builder<'a, 'gcc, 'tcx> { let b = self.context.new_cast(self.location, b, a_type); a << b } else { - a << b + let a_size = a_type.get_size(); + let b_size = b_type.get_size(); + if a_size > b_size { + let b = self.context.new_cast(self.location, b, a_type); + a << b + } else if a_size < b_size { + let a = self.context.new_cast(self.location, a, b_type); + a << b + } else { + a << b + } } } else if a_type.is_vector() && a_type.is_vector() { a << b