Skip to content

Commit d45c8c3

Browse files
committed
refactor(rustc_middle): Substs -> GenericArg
1 parent 1cae701 commit d45c8c3

13 files changed

+63
-51
lines changed

src/abi/mod.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ pub(crate) fn get_function_sig<'tcx>(
7070
default_call_conv: CallConv,
7171
inst: Instance<'tcx>,
7272
) -> Signature {
73-
assert!(!inst.substs.has_infer());
73+
assert!(!inst.args.has_infer());
7474
clif_sig_from_fn_abi(
7575
tcx,
7676
default_call_conv,
@@ -377,16 +377,16 @@ pub(crate) fn codegen_terminator_call<'tcx>(
377377
let ret_place = codegen_place(fx, destination);
378378

379379
// Handle special calls like intrinsics and empty drop glue.
380-
let instance = if let ty::FnDef(def_id, substs) = *func.layout().ty.kind() {
380+
let instance = if let ty::FnDef(def_id, fn_args) = *func.layout().ty.kind() {
381381
let instance =
382-
ty::Instance::expect_resolve(fx.tcx, ty::ParamEnv::reveal_all(), def_id, substs)
382+
ty::Instance::expect_resolve(fx.tcx, ty::ParamEnv::reveal_all(), def_id, fn_args)
383383
.polymorphize(fx.tcx);
384384

385385
if fx.tcx.symbol_name(instance).name.starts_with("llvm.") {
386386
crate::intrinsics::codegen_llvm_intrinsic_call(
387387
fx,
388388
&fx.tcx.symbol_name(instance).name,
389-
substs,
389+
fn_args,
390390
args,
391391
ret_place,
392392
target,
@@ -611,7 +611,7 @@ pub(crate) fn codegen_drop<'tcx>(
611611
// `Instance::resolve_drop_in_place`?
612612
let virtual_drop = Instance {
613613
def: ty::InstanceDef::Virtual(drop_instance.def_id(), 0),
614-
substs: drop_instance.substs,
614+
args: drop_instance.args,
615615
};
616616
let fn_abi =
617617
RevealAllLayoutCx(fx.tcx).fn_abi_of_instance(virtual_drop, ty::List::empty());
@@ -648,7 +648,7 @@ pub(crate) fn codegen_drop<'tcx>(
648648

649649
let virtual_drop = Instance {
650650
def: ty::InstanceDef::Virtual(drop_instance.def_id(), 0),
651-
substs: drop_instance.substs,
651+
args: drop_instance.args,
652652
};
653653
let fn_abi =
654654
RevealAllLayoutCx(fx.tcx).fn_abi_of_instance(virtual_drop, ty::List::empty());

src/base.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ pub(crate) fn codegen_fn<'tcx>(
2828
module: &mut dyn Module,
2929
instance: Instance<'tcx>,
3030
) -> CodegenedFunction {
31-
debug_assert!(!instance.substs.has_infer());
31+
debug_assert!(!instance.args.has_infer());
3232

3333
let symbol_name = tcx.symbol_name(instance).name.to_string();
3434
let _timer = tcx.prof.generic_activity_with_arg("codegen fn", &*symbol_name);
@@ -578,13 +578,13 @@ fn codegen_stmt<'tcx>(
578578
let from_ty = fx.monomorphize(operand.ty(&fx.mir.local_decls, fx.tcx));
579579
let to_layout = fx.layout_of(fx.monomorphize(to_ty));
580580
match *from_ty.kind() {
581-
ty::FnDef(def_id, substs) => {
581+
ty::FnDef(def_id, args) => {
582582
let func_ref = fx.get_function_ref(
583583
Instance::resolve_for_fn_ptr(
584584
fx.tcx,
585585
ParamEnv::reveal_all(),
586586
def_id,
587-
substs,
587+
args,
588588
)
589589
.unwrap()
590590
.polymorphize(fx.tcx),
@@ -668,11 +668,11 @@ fn codegen_stmt<'tcx>(
668668
) => {
669669
let operand = codegen_operand(fx, operand);
670670
match *operand.layout().ty.kind() {
671-
ty::Closure(def_id, substs) => {
671+
ty::Closure(def_id, args) => {
672672
let instance = Instance::resolve_closure(
673673
fx.tcx,
674674
def_id,
675-
substs,
675+
args,
676676
ty::ClosureKind::FnOnce,
677677
)
678678
.expect("failed to normalize and resolve closure during codegen")

src/constant.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ pub(crate) fn codegen_tls_ref<'tcx>(
5757
let tls_ptr = if !def_id.is_local() && fx.tcx.needs_thread_local_shim(def_id) {
5858
let instance = ty::Instance {
5959
def: ty::InstanceDef::ThreadLocalShim(def_id),
60-
substs: ty::InternalSubsts::empty(),
60+
args: ty::GenericArgs::empty(),
6161
};
6262
let func_ref = fx.get_function_ref(instance);
6363
let call = fx.bcx.ins().call(func_ref, &[]);

src/global_asm.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ pub(crate) fn codegen_global_asm_item(tcx: TyCtxt<'_>, global_asm: &mut String,
4242
InlineAsmOperand::SymFn { anon_const } => {
4343
let ty = tcx.typeck_body(anon_const.body).node_type(anon_const.hir_id);
4444
let instance = match ty.kind() {
45-
&ty::FnDef(def_id, substs) => Instance::new(def_id, substs),
45+
&ty::FnDef(def_id, args) => Instance::new(def_id, args),
4646
_ => span_bug!(op_sp, "asm sym is not a function"),
4747
};
4848
let symbol = tcx.symbol_name(instance);

src/inline_asm.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -254,12 +254,12 @@ pub(crate) fn codegen_inline_asm<'tcx>(
254254
}
255255
InlineAsmOperand::SymFn { ref value } => {
256256
let literal = fx.monomorphize(value.literal);
257-
if let ty::FnDef(def_id, substs) = *literal.ty().kind() {
257+
if let ty::FnDef(def_id, args) = *literal.ty().kind() {
258258
let instance = ty::Instance::resolve_for_fn_ptr(
259259
fx.tcx,
260260
ty::ParamEnv::reveal_all(),
261261
def_id,
262-
substs,
262+
args,
263263
)
264264
.unwrap();
265265
let symbol = fx.tcx.symbol_name(instance);

src/intrinsics/llvm.rs

+16-4
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,35 @@
33
use crate::intrinsics::*;
44
use crate::prelude::*;
55

6-
use rustc_middle::ty::subst::SubstsRef;
6+
use rustc_middle::ty::GenericArgsRef;
77

88
pub(crate) fn codegen_llvm_intrinsic_call<'tcx>(
99
fx: &mut FunctionCx<'_, '_, 'tcx>,
1010
intrinsic: &str,
11-
substs: SubstsRef<'tcx>,
11+
generic_args: GenericArgsRef<'tcx>,
1212
args: &[mir::Operand<'tcx>],
1313
ret: CPlace<'tcx>,
1414
target: Option<BasicBlock>,
1515
) {
1616
if intrinsic.starts_with("llvm.aarch64") {
1717
return llvm_aarch64::codegen_aarch64_llvm_intrinsic_call(
18-
fx, intrinsic, substs, args, ret, target,
18+
fx,
19+
intrinsic,
20+
generic_args,
21+
args,
22+
ret,
23+
target,
1924
);
2025
}
2126
if intrinsic.starts_with("llvm.x86") {
22-
return llvm_x86::codegen_x86_llvm_intrinsic_call(fx, intrinsic, substs, args, ret, target);
27+
return llvm_x86::codegen_x86_llvm_intrinsic_call(
28+
fx,
29+
intrinsic,
30+
generic_args,
31+
args,
32+
ret,
33+
target,
34+
);
2335
}
2436

2537
match intrinsic {

src/intrinsics/llvm_aarch64.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
use crate::intrinsics::*;
44
use crate::prelude::*;
55

6-
use rustc_middle::ty::subst::SubstsRef;
6+
use rustc_middle::ty::GenericArgsRef;
77

88
pub(crate) fn codegen_aarch64_llvm_intrinsic_call<'tcx>(
99
fx: &mut FunctionCx<'_, '_, 'tcx>,
1010
intrinsic: &str,
11-
_substs: SubstsRef<'tcx>,
11+
_args: GenericArgsRef<'tcx>,
1212
args: &[mir::Operand<'tcx>],
1313
ret: CPlace<'tcx>,
1414
target: Option<BasicBlock>,

src/intrinsics/llvm_x86.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
use crate::intrinsics::*;
44
use crate::prelude::*;
55

6-
use rustc_middle::ty::subst::SubstsRef;
6+
use rustc_middle::ty::GenericArgsRef;
77

88
pub(crate) fn codegen_x86_llvm_intrinsic_call<'tcx>(
99
fx: &mut FunctionCx<'_, '_, 'tcx>,
1010
intrinsic: &str,
11-
_substs: SubstsRef<'tcx>,
11+
_args: GenericArgsRef<'tcx>,
1212
args: &[mir::Operand<'tcx>],
1313
ret: CPlace<'tcx>,
1414
target: Option<BasicBlock>,

src/intrinsics/mod.rs

+14-14
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ pub(crate) use llvm::codegen_llvm_intrinsic_call;
2424
use rustc_middle::ty;
2525
use rustc_middle::ty::layout::{HasParamEnv, ValidityRequirement};
2626
use rustc_middle::ty::print::{with_no_trimmed_paths, with_no_visible_paths};
27-
use rustc_middle::ty::subst::SubstsRef;
27+
use rustc_middle::ty::GenericArgsRef;
2828
use rustc_span::symbol::{kw, sym, Symbol};
2929

3030
use crate::prelude::*;
@@ -213,13 +213,13 @@ pub(crate) fn codegen_intrinsic_call<'tcx>(
213213
source_info: mir::SourceInfo,
214214
) {
215215
let intrinsic = fx.tcx.item_name(instance.def_id());
216-
let substs = instance.substs;
216+
let instance_args = instance.args;
217217

218218
if intrinsic.as_str().starts_with("simd_") {
219219
self::simd::codegen_simd_intrinsic_call(
220220
fx,
221221
intrinsic,
222-
substs,
222+
instance_args,
223223
args,
224224
destination,
225225
target.expect("target for simd intrinsic"),
@@ -233,7 +233,7 @@ pub(crate) fn codegen_intrinsic_call<'tcx>(
233233
fx,
234234
instance,
235235
intrinsic,
236-
substs,
236+
instance_args,
237237
args,
238238
destination,
239239
target,
@@ -365,7 +365,7 @@ fn codegen_regular_intrinsic_call<'tcx>(
365365
fx: &mut FunctionCx<'_, '_, 'tcx>,
366366
instance: Instance<'tcx>,
367367
intrinsic: Symbol,
368-
substs: SubstsRef<'tcx>,
368+
generic_args: GenericArgsRef<'tcx>,
369369
args: &[mir::Operand<'tcx>],
370370
ret: CPlace<'tcx>,
371371
destination: Option<BasicBlock>,
@@ -394,7 +394,7 @@ fn codegen_regular_intrinsic_call<'tcx>(
394394
let dst = dst.load_scalar(fx);
395395
let count = count.load_scalar(fx);
396396

397-
let elem_ty = substs.type_at(0);
397+
let elem_ty = generic_args.type_at(0);
398398
let elem_size: u64 = fx.layout_of(elem_ty).size.bytes();
399399
assert_eq!(args.len(), 3);
400400
let byte_amount =
@@ -410,7 +410,7 @@ fn codegen_regular_intrinsic_call<'tcx>(
410410
let src = src.load_scalar(fx);
411411
let count = count.load_scalar(fx);
412412

413-
let elem_ty = substs.type_at(0);
413+
let elem_ty = generic_args.type_at(0);
414414
let elem_size: u64 = fx.layout_of(elem_ty).size.bytes();
415415
assert_eq!(args.len(), 3);
416416
let byte_amount =
@@ -428,7 +428,7 @@ fn codegen_regular_intrinsic_call<'tcx>(
428428
sym::size_of_val => {
429429
intrinsic_args!(fx, args => (ptr); intrinsic);
430430

431-
let layout = fx.layout_of(substs.type_at(0));
431+
let layout = fx.layout_of(generic_args.type_at(0));
432432
// Note: Can't use is_unsized here as truly unsized types need to take the fixed size
433433
// branch
434434
let size = if let Abi::ScalarPair(_, _) = ptr.layout().abi {
@@ -443,7 +443,7 @@ fn codegen_regular_intrinsic_call<'tcx>(
443443
sym::min_align_of_val => {
444444
intrinsic_args!(fx, args => (ptr); intrinsic);
445445

446-
let layout = fx.layout_of(substs.type_at(0));
446+
let layout = fx.layout_of(generic_args.type_at(0));
447447
// Note: Can't use is_unsized here as truly unsized types need to take the fixed size
448448
// branch
449449
let align = if let Abi::ScalarPair(_, _) = ptr.layout().abi {
@@ -602,7 +602,7 @@ fn codegen_regular_intrinsic_call<'tcx>(
602602
sym::assert_inhabited | sym::assert_zero_valid | sym::assert_mem_uninitialized_valid => {
603603
intrinsic_args!(fx, args => (); intrinsic);
604604

605-
let ty = substs.type_at(0);
605+
let ty = generic_args.type_at(0);
606606

607607
let requirement = ValidityRequirement::from_intrinsic(intrinsic);
608608

@@ -674,7 +674,7 @@ fn codegen_regular_intrinsic_call<'tcx>(
674674
intrinsic_args!(fx, args => (ptr, base); intrinsic);
675675
let ptr = ptr.load_scalar(fx);
676676
let base = base.load_scalar(fx);
677-
let ty = substs.type_at(0);
677+
let ty = generic_args.type_at(0);
678678

679679
let pointee_size: u64 = fx.layout_of(ty).size.bytes();
680680
let diff_bytes = fx.bcx.ins().isub(ptr, base);
@@ -720,7 +720,7 @@ fn codegen_regular_intrinsic_call<'tcx>(
720720
intrinsic_args!(fx, args => (ptr); intrinsic);
721721
let ptr = ptr.load_scalar(fx);
722722

723-
let ty = substs.type_at(0);
723+
let ty = generic_args.type_at(0);
724724
match ty.kind() {
725725
ty::Uint(UintTy::U128) | ty::Int(IntTy::I128) => {
726726
// FIXME implement 128bit atomics
@@ -751,7 +751,7 @@ fn codegen_regular_intrinsic_call<'tcx>(
751751
intrinsic_args!(fx, args => (ptr, val); intrinsic);
752752
let ptr = ptr.load_scalar(fx);
753753

754-
let ty = substs.type_at(0);
754+
let ty = generic_args.type_at(0);
755755
match ty.kind() {
756756
ty::Uint(UintTy::U128) | ty::Int(IntTy::I128) => {
757757
// FIXME implement 128bit atomics
@@ -1128,7 +1128,7 @@ fn codegen_regular_intrinsic_call<'tcx>(
11281128
let lhs_ref = lhs_ref.load_scalar(fx);
11291129
let rhs_ref = rhs_ref.load_scalar(fx);
11301130

1131-
let size = fx.layout_of(substs.type_at(0)).layout.size();
1131+
let size = fx.layout_of(generic_args.type_at(0)).layout.size();
11321132
// FIXME add and use emit_small_memcmp
11331133
let is_eq_value = if size == Size::ZERO {
11341134
// No bytes means they're trivially equal

src/intrinsics/simd.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//! Codegen `extern "platform-intrinsic"` intrinsics.
22
3-
use rustc_middle::ty::subst::SubstsRef;
3+
use rustc_middle::ty::GenericArgsRef;
44
use rustc_span::Symbol;
55
use rustc_target::abi::Endian;
66

@@ -21,7 +21,7 @@ fn report_simd_type_validation_error(
2121
pub(super) fn codegen_simd_intrinsic_call<'tcx>(
2222
fx: &mut FunctionCx<'_, '_, 'tcx>,
2323
intrinsic: Symbol,
24-
_substs: SubstsRef<'tcx>,
24+
_args: GenericArgsRef<'tcx>,
2525
args: &[mir::Operand<'tcx>],
2626
ret: CPlace<'tcx>,
2727
target: BasicBlock,

src/main_shim.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use rustc_hir::LangItem;
2-
use rustc_middle::ty::subst::GenericArg;
32
use rustc_middle::ty::AssocKind;
3+
use rustc_middle::ty::GenericArg;
44
use rustc_session::config::{sigpipe, EntryFnType};
55
use rustc_span::symbol::Ident;
66

@@ -119,7 +119,7 @@ pub(crate) fn maybe_create_entry_wrapper(
119119
tcx,
120120
ParamEnv::reveal_all(),
121121
report.def_id,
122-
tcx.mk_substs(&[GenericArg::from(main_ret_ty)]),
122+
tcx.mk_args(&[GenericArg::from(main_ret_ty)]),
123123
)
124124
.unwrap()
125125
.unwrap()
@@ -146,7 +146,7 @@ pub(crate) fn maybe_create_entry_wrapper(
146146
tcx,
147147
ParamEnv::reveal_all(),
148148
start_def_id,
149-
tcx.mk_substs(&[main_ret_ty.into()]),
149+
tcx.mk_args(&[main_ret_ty.into()]),
150150
)
151151
.unwrap()
152152
.unwrap()

src/pretty_clif.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
//!
1010
//! function u0:22(i64) -> i8, i8 system_v {
1111
//! ; symbol _ZN97_$LT$example..IsNotEmpty$u20$as$u20$mini_core..FnOnce$LT$$LP$$RF$$RF$$u5b$u16$u5d$$C$$RP$$GT$$GT$9call_once17hd517c453d67c0915E
12-
//! ; instance Instance { def: Item(WithOptConstParam { did: DefId(0:42 ~ example[4e51]::{impl#0}::call_once), const_param_did: None }), substs: [ReErased, ReErased] }
12+
//! ; instance Instance { def: Item(WithOptConstParam { did: DefId(0:42 ~ example[4e51]::{impl#0}::call_once), const_param_did: None }), args: [ReErased, ReErased] }
1313
//! ; abi FnAbi { args: [ArgAbi { layout: TyAndLayout { ty: IsNotEmpty, layout: Layout { size: Size(0 bytes), align: AbiAndPrefAlign { abi: Align(1 bytes), pref: Align(8 bytes) }, abi: Aggregate { sized: true }, fields: Arbitrary { offsets: [], memory_index: [] }, largest_niche: None, variants: Single { index: 0 } } }, mode: Ignore }, ArgAbi { layout: TyAndLayout { ty: &&[u16], layout: Layout { size: Size(8 bytes), align: AbiAndPrefAlign { abi: Align(8 bytes), pref: Align(8 bytes) }, abi: Scalar(Initialized { value: Pointer(AddressSpace(0)), valid_range: 1..=18446744073709551615 }), fields: Primitive, largest_niche: Some(Niche { offset: Size(0 bytes), value: Pointer(AddressSpace(0)), valid_range: 1..=18446744073709551615 }), variants: Single { index: 0 } } }, mode: Direct(ArgAttributes { regular: NonNull | NoUndef, arg_ext: None, pointee_size: Size(0 bytes), pointee_align: Some(Align(8 bytes)) }) }], ret: ArgAbi { layout: TyAndLayout { ty: (u8, u8), layout: Layout { size: Size(2 bytes), align: AbiAndPrefAlign { abi: Align(1 bytes), pref: Align(8 bytes) }, abi: ScalarPair(Initialized { value: Int(I8, false), valid_range: 0..=255 }, Initialized { value: Int(I8, false), valid_range: 0..=255 }), fields: Arbitrary { offsets: [Size(0 bytes), Size(1 bytes)], memory_index: [0, 1] }, largest_niche: None, variants: Single { index: 0 } } }, mode: Pair(ArgAttributes { regular: NoUndef, arg_ext: None, pointee_size: Size(0 bytes), pointee_align: None }, ArgAttributes { regular: NoUndef, arg_ext: None, pointee_size: Size(0 bytes), pointee_align: None }) }, c_variadic: false, fixed_count: 1, conv: Rust, can_unwind: false }
1414
//!
1515
//! ; kind loc.idx param pass mode ty
@@ -25,7 +25,7 @@
2525
//!
2626
//! ss0 = explicit_slot 16
2727
//! sig0 = (i64, i64) -> i8, i8 system_v
28-
//! fn0 = colocated u0:23 sig0 ; Instance { def: Item(WithOptConstParam { did: DefId(0:46 ~ example[4e51]::{impl#1}::call_mut), const_param_did: None }), substs: [ReErased, ReErased] }
28+
//! fn0 = colocated u0:23 sig0 ; Instance { def: Item(WithOptConstParam { did: DefId(0:46 ~ example[4e51]::{impl#1}::call_mut), const_param_did: None }), args: [ReErased, ReErased] }
2929
//!
3030
//! block0(v0: i64):
3131
//! nop
@@ -261,7 +261,7 @@ pub(crate) fn write_clif_file(
261261

262262
impl fmt::Debug for FunctionCx<'_, '_, '_> {
263263
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
264-
writeln!(f, "{:?}", self.instance.substs)?;
264+
writeln!(f, "{:?}", self.instance.args)?;
265265
writeln!(f, "{:?}", self.local_map)?;
266266

267267
let mut clif = String::new();

0 commit comments

Comments
 (0)