Skip to content

Commit a8a722f

Browse files
committed
Sync from rust 0308df2
2 parents 84afcee + 648f5e4 commit a8a722f

File tree

16 files changed

+70
-65
lines changed

16 files changed

+70
-65
lines changed

example/float-minmax-pass.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ fn main() {
2222

2323
#[cfg(not(any(target_arch = "mips", target_arch = "mips64")))]
2424
let nan = f32::NAN;
25-
// MIPS hardware treats f32::NAN as SNAN. Clear the signaling bit.
25+
// MIPS hardware except MIPS R6 treats f32::NAN as SNAN. Clear the signaling bit.
2626
// See https://github.com/rust-lang/rust/issues/52746.
2727
#[cfg(any(target_arch = "mips", target_arch = "mips64"))]
2828
let nan = f32::from_bits(f32::NAN.to_bits() - 1);

src/abi/comments.rs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -80,14 +80,7 @@ pub(super) fn add_local_place_comments<'tcx>(
8080
return;
8181
}
8282
let TyAndLayout { ty, layout } = place.layout();
83-
let rustc_target::abi::LayoutS {
84-
size,
85-
align,
86-
abi: _,
87-
variants: _,
88-
fields: _,
89-
largest_niche: _,
90-
} = layout.0.0;
83+
let rustc_target::abi::LayoutS { size, align, .. } = layout.0.0;
9184

9285
let (kind, extra) = place.debug_comment();
9386

src/abi/mod.rs

Lines changed: 6 additions & 6 deletions
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,
@@ -616,7 +616,7 @@ pub(crate) fn codegen_drop<'tcx>(
616616
// `Instance::resolve_drop_in_place`?
617617
let virtual_drop = Instance {
618618
def: ty::InstanceDef::Virtual(drop_instance.def_id(), 0),
619-
substs: drop_instance.substs,
619+
args: drop_instance.args,
620620
};
621621
let fn_abi =
622622
RevealAllLayoutCx(fx.tcx).fn_abi_of_instance(virtual_drop, ty::List::empty());
@@ -653,7 +653,7 @@ pub(crate) fn codegen_drop<'tcx>(
653653

654654
let virtual_drop = Instance {
655655
def: ty::InstanceDef::Virtual(drop_instance.def_id(), 0),
656-
substs: drop_instance.substs,
656+
args: drop_instance.args,
657657
};
658658
let fn_abi =
659659
RevealAllLayoutCx(fx.tcx).fn_abi_of_instance(virtual_drop, ty::List::empty());

src/base.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ pub(crate) fn codegen_fn<'tcx>(
3030
module: &mut dyn Module,
3131
instance: Instance<'tcx>,
3232
) -> CodegenedFunction {
33-
debug_assert!(!instance.substs.has_infer());
33+
debug_assert!(!instance.args.has_infer());
3434

3535
let symbol_name = tcx.symbol_name(instance).name.to_string();
3636
let _timer = tcx.prof.generic_activity_with_arg("codegen fn", &*symbol_name);
@@ -594,13 +594,13 @@ fn codegen_stmt<'tcx>(
594594
let from_ty = fx.monomorphize(operand.ty(&fx.mir.local_decls, fx.tcx));
595595
let to_layout = fx.layout_of(fx.monomorphize(to_ty));
596596
match *from_ty.kind() {
597-
ty::FnDef(def_id, substs) => {
597+
ty::FnDef(def_id, args) => {
598598
let func_ref = fx.get_function_ref(
599599
Instance::resolve_for_fn_ptr(
600600
fx.tcx,
601601
ParamEnv::reveal_all(),
602602
def_id,
603-
substs,
603+
args,
604604
)
605605
.unwrap()
606606
.polymorphize(fx.tcx),
@@ -684,11 +684,11 @@ fn codegen_stmt<'tcx>(
684684
) => {
685685
let operand = codegen_operand(fx, operand);
686686
match *operand.layout().ty.kind() {
687-
ty::Closure(def_id, substs) => {
687+
ty::Closure(def_id, args) => {
688688
let instance = Instance::resolve_closure(
689689
fx.tcx,
690690
def_id,
691-
substs,
691+
args,
692692
ty::ClosureKind::FnOnce,
693693
)
694694
.expect("failed to normalize and resolve closure during codegen")

src/constant.rs

Lines changed: 1 addition & 1 deletion
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/driver/mod.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
//! [`codegen_static`]: crate::constant::codegen_static
66
77
use rustc_data_structures::profiling::SelfProfilerRef;
8-
use rustc_middle::mir::mono::{Linkage as RLinkage, MonoItem, Visibility};
8+
use rustc_middle::mir::mono::{MonoItem, MonoItemData};
99

1010
use crate::prelude::*;
1111

@@ -16,11 +16,11 @@ pub(crate) mod jit;
1616
fn predefine_mono_items<'tcx>(
1717
tcx: TyCtxt<'tcx>,
1818
module: &mut dyn Module,
19-
mono_items: &[(MonoItem<'tcx>, (RLinkage, Visibility))],
19+
mono_items: &[(MonoItem<'tcx>, MonoItemData)],
2020
) {
2121
tcx.prof.generic_activity("predefine functions").run(|| {
2222
let is_compiler_builtins = tcx.is_compiler_builtins(LOCAL_CRATE);
23-
for &(mono_item, (linkage, visibility)) in mono_items {
23+
for &(mono_item, data) in mono_items {
2424
match mono_item {
2525
MonoItem::Fn(instance) => {
2626
let name = tcx.symbol_name(instance).name;
@@ -29,8 +29,8 @@ fn predefine_mono_items<'tcx>(
2929
get_function_sig(tcx, module.target_config().default_call_conv, instance);
3030
let linkage = crate::linkage::get_clif_linkage(
3131
mono_item,
32-
linkage,
33-
visibility,
32+
data.linkage,
33+
data.visibility,
3434
is_compiler_builtins,
3535
);
3636
module.declare_function(name, linkage, &sig).unwrap();

src/global_asm.rs

Lines changed: 1 addition & 1 deletion
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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 16 additions & 4 deletions
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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 14 additions & 14 deletions
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

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

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

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

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

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

src/intrinsics/simd.rs

Lines changed: 2 additions & 2 deletions
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,

0 commit comments

Comments
 (0)