Skip to content

Commit 43968aa

Browse files
committed
Replace sext() and zext() with single ext() method
1 parent 6a5f537 commit 43968aa

File tree

4 files changed

+11
-17
lines changed

4 files changed

+11
-17
lines changed

compiler/rustc_middle/src/ty/layout.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use rustc_session::{DataTypeKind, FieldInfo, SizeKind, VariantInfo};
1515
use rustc_span::symbol::{Ident, Symbol};
1616
use rustc_span::DUMMY_SP;
1717
use rustc_target::abi::call::{
18-
ArgAbi, ArgAttribute, ArgAttributes, Conv, FnAbi, PassMode, Reg, RegKind,
18+
ArgAbi, ArgAttribute, ArgAttributes, ArgExtension, Conv, FnAbi, PassMode, Reg, RegKind,
1919
};
2020
use rustc_target::abi::*;
2121
use rustc_target::spec::{abi::Abi as SpecAbi, HasTargetSpec, PanicStrategy};
@@ -2619,7 +2619,7 @@ where
26192619
is_return: bool| {
26202620
// Booleans are always an i1 that needs to be zero-extended.
26212621
if scalar.is_bool() {
2622-
attrs.zext();
2622+
attrs.ext(ArgExtension::Zext);
26232623
return;
26242624
}
26252625

compiler/rustc_target/src/abi/call/mips64.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::abi::call::{ArgAbi, CastTarget, FnAbi, PassMode, Reg, RegKind, Uniform};
1+
use crate::abi::call::{ArgAbi, ArgExtension, CastTarget, FnAbi, PassMode, Reg, RegKind, Uniform};
22
use crate::abi::{self, HasDataLayout, LayoutOf, Size, TyAndLayout, TyAndLayoutMethods};
33

44
fn extend_integer_width_mips<Ty>(arg: &mut ArgAbi<'_, Ty>, bits: u64) {
@@ -7,7 +7,7 @@ fn extend_integer_width_mips<Ty>(arg: &mut ArgAbi<'_, Ty>, bits: u64) {
77
if let abi::Int(i, signed) = scalar.value {
88
if !signed && i.size().bits() == 32 {
99
if let PassMode::Direct(ref mut attrs) = arg.mode {
10-
attrs.sext();
10+
attrs.ext(ArgExtension::Sext);
1111
return;
1212
}
1313
}

compiler/rustc_target/src/abi/call/mod.rs

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -96,15 +96,9 @@ impl ArgAttributes {
9696
}
9797
}
9898

99-
pub fn zext(&mut self) -> &mut Self {
100-
assert_ne!(self.arg_ext, ArgExtension::Sext);
101-
self.arg_ext = ArgExtension::Zext;
102-
self
103-
}
104-
105-
pub fn sext(&mut self) -> &mut Self {
106-
assert_ne!(self.arg_ext, ArgExtension::Zext);
107-
self.arg_ext = ArgExtension::Sext;
99+
pub fn ext(&mut self, ext: ArgExtension) -> &mut Self {
100+
assert!(self.arg_ext == ArgExtension::None || self.arg_ext == ext);
101+
self.arg_ext = ext;
108102
self
109103
}
110104

@@ -481,9 +475,9 @@ impl<'a, Ty> ArgAbi<'a, Ty> {
481475
if i.size().bits() < bits {
482476
if let PassMode::Direct(ref mut attrs) = self.mode {
483477
if signed {
484-
attrs.sext()
478+
attrs.ext(ArgExtension::Sext)
485479
} else {
486-
attrs.zext()
480+
attrs.ext(ArgExtension::Zext)
487481
};
488482
}
489483
}

compiler/rustc_target/src/abi/call/riscv.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
// Reference: Clang RISC-V ELF psABI lowering code
55
// https://github.com/llvm/llvm-project/blob/8e780252a7284be45cf1ba224cabd884847e8e92/clang/lib/CodeGen/TargetInfo.cpp#L9311-L9773
66

7-
use crate::abi::call::{ArgAbi, CastTarget, FnAbi, PassMode, Reg, RegKind, Uniform};
7+
use crate::abi::call::{ArgAbi, ArgExtension, CastTarget, FnAbi, PassMode, Reg, RegKind, Uniform};
88
use crate::abi::{
99
self, Abi, FieldsShape, HasDataLayout, LayoutOf, Size, TyAndLayout, TyAndLayoutMethods,
1010
};
@@ -308,7 +308,7 @@ fn extend_integer_width<'a, Ty>(arg: &mut ArgAbi<'a, Ty>, xlen: u64) {
308308
// 32-bit integers are always sign-extended
309309
if i.size().bits() == 32 && xlen > 32 {
310310
if let PassMode::Direct(ref mut attrs) = arg.mode {
311-
attrs.sext();
311+
attrs.ext(ArgExtension::Sext);
312312
return;
313313
}
314314
}

0 commit comments

Comments
 (0)