Skip to content

Commit 72df778

Browse files
Rollup merge of #132574 - workingjubilee:abi-in-compiler, r=compiler-errors
compiler: Directly use rustc_abi almost everywhere Use rustc_abi instead of rustc_target where applicable. This is mostly described by the following substitutions: ```rust match path_substring { rustc_target::spec::abi::Abi => rustc_abi::ExternAbi, rustc_target::abi::call => rustc_target::callconv, rustc_target::abi => rustc_abi, } ``` A number of spot-fixes make that not quite the whole story. The main exception is in 33edc68 where I get a lot more persnickety about how things are imported, especially in `rustc_middle::ty::layout`, not just from where. This includes putting an end to a reexport of `rustc_middle::ty::ReprOptions`, for the same reason that the rest of this change is happening: reexports mostly confound things. This notably omits rustc_passes and the ast crates, as I'm still examining a question I have about how they do stability checking of `extern "Abi"` strings and if I can simplify their logic. The rustc_abi and rustc_target crates also go untouched because they will be entangled in that cleanup. r? compiler-errors
2 parents 1505997 + fa20473 commit 72df778

File tree

141 files changed

+363
-385
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

141 files changed

+363
-385
lines changed

Cargo.lock

-3
Original file line numberDiff line numberDiff line change
@@ -4093,7 +4093,6 @@ dependencies = [
40934093
"rustc_macros",
40944094
"rustc_middle",
40954095
"rustc_span",
4096-
"rustc_target",
40974096
"smallvec",
40984097
"tracing",
40994098
]
@@ -4237,7 +4236,6 @@ dependencies = [
42374236
"rustc_middle",
42384237
"rustc_session",
42394238
"rustc_span",
4240-
"rustc_target",
42414239
"smallvec",
42424240
"tracing",
42434241
"tracing-subscriber",
@@ -4437,7 +4435,6 @@ dependencies = [
44374435
"rustc_middle",
44384436
"rustc_session",
44394437
"rustc_span",
4440-
"rustc_target",
44414438
"tracing",
44424439
]
44434440

compiler/rustc_codegen_llvm/src/abi.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use std::cmp;
22

33
use libc::c_uint;
44
use rustc_abi as abi;
5+
pub(crate) use rustc_abi::ExternAbi;
56
use rustc_abi::Primitive::Int;
67
use rustc_abi::{HasDataLayout, Size};
78
use rustc_codegen_ssa::MemFlags;
@@ -13,9 +14,8 @@ use rustc_middle::ty::layout::LayoutOf;
1314
pub(crate) use rustc_middle::ty::layout::{WIDE_PTR_ADDR, WIDE_PTR_EXTRA};
1415
use rustc_middle::{bug, ty};
1516
use rustc_session::config;
16-
pub(crate) use rustc_target::abi::call::*;
17+
pub(crate) use rustc_target::callconv::*;
1718
use rustc_target::spec::SanitizerSet;
18-
pub(crate) use rustc_target::spec::abi::Abi;
1919
use smallvec::SmallVec;
2020

2121
use crate::attributes::llfn_attrs_from_instance;
@@ -436,7 +436,7 @@ impl<'ll, 'tcx> FnAbiLlvmExt<'ll, 'tcx> for FnAbi<'tcx, Ty<'tcx>> {
436436
i - 1
437437
};
438438

439-
let apply_range_attr = |idx: AttributePlace, scalar: rustc_target::abi::Scalar| {
439+
let apply_range_attr = |idx: AttributePlace, scalar: rustc_abi::Scalar| {
440440
if cx.sess().opts.optimize != config::OptLevel::No
441441
&& llvm_util::get_version() >= (19, 0, 0)
442442
&& matches!(scalar.primitive(), Int(..))

compiler/rustc_codegen_llvm/src/asm.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use std::assert_matches::assert_matches;
22

33
use libc::{c_char, c_uint};
4+
use rustc_abi::{BackendRepr, Float, Integer, Primitive, Scalar};
45
use rustc_ast::{InlineAsmOptions, InlineAsmTemplatePiece};
56
use rustc_codegen_ssa::mir::operand::OperandValue;
67
use rustc_codegen_ssa::traits::*;
@@ -9,7 +10,6 @@ use rustc_middle::ty::Instance;
910
use rustc_middle::ty::layout::TyAndLayout;
1011
use rustc_middle::{bug, span_bug};
1112
use rustc_span::{Pos, Span, Symbol, sym};
12-
use rustc_target::abi::*;
1313
use rustc_target::asm::*;
1414
use smallvec::SmallVec;
1515
use tracing::debug;

compiler/rustc_codegen_llvm/src/builder.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use rustc_middle::ty::{self, Instance, Ty, TyCtxt};
2121
use rustc_sanitizers::{cfi, kcfi};
2222
use rustc_session::config::OptLevel;
2323
use rustc_span::Span;
24-
use rustc_target::abi::call::FnAbi;
24+
use rustc_target::callconv::FnAbi;
2525
use rustc_target::spec::{HasTargetSpec, SanitizerSet, Target};
2626
use smallvec::SmallVec;
2727
use tracing::{debug, instrument};

compiler/rustc_codegen_llvm/src/consts.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
use std::ops::Range;
22

3+
use rustc_abi::{
4+
Align, AlignFromBytesError, HasDataLayout, Primitive, Scalar, Size, WrappingRange,
5+
};
36
use rustc_codegen_ssa::common;
47
use rustc_codegen_ssa::traits::*;
58
use rustc_hir::def::DefKind;
@@ -14,9 +17,6 @@ use rustc_middle::ty::layout::LayoutOf;
1417
use rustc_middle::ty::{self, Instance};
1518
use rustc_middle::{bug, span_bug};
1619
use rustc_session::config::Lto;
17-
use rustc_target::abi::{
18-
Align, AlignFromBytesError, HasDataLayout, Primitive, Scalar, Size, WrappingRange,
19-
};
2020
use tracing::{debug, instrument, trace};
2121

2222
use crate::common::{AsCCharPtr, CodegenCx};

compiler/rustc_codegen_llvm/src/context.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use std::cell::{Cell, RefCell};
33
use std::ffi::{CStr, c_uint};
44
use std::str;
55

6+
use rustc_abi::{HasDataLayout, TargetDataLayout, VariantIdx};
67
use rustc_codegen_ssa::back::versioned_llvm_target;
78
use rustc_codegen_ssa::base::{wants_msvc_seh, wants_wasm_eh};
89
use rustc_codegen_ssa::errors as ssa_errors;
@@ -24,7 +25,6 @@ use rustc_session::config::{
2425
};
2526
use rustc_span::source_map::Spanned;
2627
use rustc_span::{DUMMY_SP, Span};
27-
use rustc_target::abi::{HasDataLayout, TargetDataLayout, VariantIdx};
2828
use rustc_target::spec::{HasTargetSpec, RelocModel, SmallDataThresholdSupport, Target, TlsModel};
2929
use smallvec::SmallVec;
3030

compiler/rustc_codegen_llvm/src/coverageinfo/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use std::cell::{OnceCell, RefCell};
22
use std::ffi::{CStr, CString};
33

44
use libc::c_uint;
5+
use rustc_abi::Size;
56
use rustc_codegen_ssa::traits::{
67
BuilderMethods, ConstCodegenMethods, CoverageInfoBuilderMethods, MiscCodegenMethods,
78
};
@@ -10,7 +11,6 @@ use rustc_llvm::RustString;
1011
use rustc_middle::mir::coverage::CoverageKind;
1112
use rustc_middle::ty::Instance;
1213
use rustc_middle::ty::layout::HasTyCtxt;
13-
use rustc_target::abi::Size;
1414
use tracing::{debug, instrument};
1515

1616
use crate::builder::Builder;

compiler/rustc_codegen_llvm/src/debuginfo/metadata.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use std::path::{Path, PathBuf};
55
use std::{iter, ptr};
66

77
use libc::{c_char, c_longlong, c_uint};
8+
use rustc_abi::{Align, Size};
89
use rustc_codegen_ssa::debuginfo::type_names::{VTableNameKind, cpp_like_debuginfo};
910
use rustc_codegen_ssa::traits::*;
1011
use rustc_hir::def::{CtorKind, DefKind};
@@ -19,7 +20,6 @@ use rustc_session::config::{self, DebugInfo, Lto};
1920
use rustc_span::symbol::Symbol;
2021
use rustc_span::{DUMMY_SP, FileName, FileNameDisplayPreference, SourceFile, hygiene};
2122
use rustc_symbol_mangling::typeid_for_trait_ref;
22-
use rustc_target::abi::{Align, Size};
2323
use rustc_target::spec::DebuginfoKind;
2424
use smallvec::smallvec;
2525
use tracing::{debug, instrument};

compiler/rustc_codegen_llvm/src/debuginfo/metadata/enums/cpp_like.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
use std::borrow::Cow;
22

33
use libc::c_uint;
4+
use rustc_abi::{Align, Endian, Size, TagEncoding, VariantIdx, Variants};
45
use rustc_codegen_ssa::debuginfo::type_names::compute_debuginfo_type_name;
56
use rustc_codegen_ssa::debuginfo::{tag_base_type, wants_c_like_enum_debuginfo};
67
use rustc_codegen_ssa::traits::ConstCodegenMethods;
78
use rustc_index::IndexVec;
89
use rustc_middle::bug;
910
use rustc_middle::ty::layout::{LayoutOf, TyAndLayout};
1011
use rustc_middle::ty::{self, AdtDef, CoroutineArgs, CoroutineArgsExt, Ty};
11-
use rustc_target::abi::{Align, Endian, Size, TagEncoding, VariantIdx, Variants};
1212
use smallvec::smallvec;
1313

1414
use crate::common::{AsCCharPtr, CodegenCx};

compiler/rustc_codegen_llvm/src/debuginfo/metadata/enums/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use std::borrow::Cow;
22

3+
use rustc_abi::{FieldIdx, TagEncoding, VariantIdx, Variants};
34
use rustc_codegen_ssa::debuginfo::type_names::{compute_debuginfo_type_name, cpp_like_debuginfo};
45
use rustc_codegen_ssa::debuginfo::{tag_base_type, wants_c_like_enum_debuginfo};
56
use rustc_hir::def::CtorKind;
@@ -9,7 +10,6 @@ use rustc_middle::mir::CoroutineLayout;
910
use rustc_middle::ty::layout::{LayoutOf, TyAndLayout};
1011
use rustc_middle::ty::{self, AdtDef, CoroutineArgs, CoroutineArgsExt, Ty, VariantDef};
1112
use rustc_span::Symbol;
12-
use rustc_target::abi::{FieldIdx, TagEncoding, VariantIdx, Variants};
1313

1414
use super::type_map::{DINodeCreationResult, UniqueTypeId};
1515
use super::{SmallVec, size_and_align_of};

compiler/rustc_codegen_llvm/src/debuginfo/metadata/enums/native.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
use std::borrow::Cow;
22

33
use libc::c_uint;
4+
use rustc_abi::{Size, TagEncoding, VariantIdx, Variants};
45
use rustc_codegen_ssa::debuginfo::type_names::compute_debuginfo_type_name;
56
use rustc_codegen_ssa::debuginfo::{tag_base_type, wants_c_like_enum_debuginfo};
67
use rustc_codegen_ssa::traits::ConstCodegenMethods;
78
use rustc_middle::bug;
89
use rustc_middle::ty::layout::{LayoutOf, TyAndLayout};
910
use rustc_middle::ty::{self};
10-
use rustc_target::abi::{Size, TagEncoding, VariantIdx, Variants};
1111
use smallvec::smallvec;
1212

1313
use crate::common::{AsCCharPtr, CodegenCx};

compiler/rustc_codegen_llvm/src/debuginfo/metadata/type_map.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
use std::cell::RefCell;
22

3+
use rustc_abi::{Align, Size, VariantIdx};
34
use rustc_data_structures::fingerprint::Fingerprint;
45
use rustc_data_structures::fx::FxHashMap;
56
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
67
use rustc_macros::HashStable;
78
use rustc_middle::bug;
89
use rustc_middle::ty::{ParamEnv, PolyExistentialTraitRef, Ty, TyCtxt};
9-
use rustc_target::abi::{Align, Size, VariantIdx};
1010

1111
use super::{SmallVec, UNKNOWN_LINE_NUMBER, unknown_file_metadata};
1212
use crate::common::{AsCCharPtr, CodegenCx};

compiler/rustc_codegen_llvm/src/debuginfo/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use std::ops::Range;
55
use std::{iter, ptr};
66

77
use libc::c_uint;
8+
use rustc_abi::Size;
89
use rustc_codegen_ssa::debuginfo::type_names;
910
use rustc_codegen_ssa::mir::debuginfo::VariableKind::*;
1011
use rustc_codegen_ssa::mir::debuginfo::{DebugScope, FunctionDebugContext, VariableKind};
@@ -22,7 +23,6 @@ use rustc_span::symbol::Symbol;
2223
use rustc_span::{
2324
BytePos, Pos, SourceFile, SourceFileAndLine, SourceFileHash, Span, StableSourceFileId,
2425
};
25-
use rustc_target::abi::Size;
2626
use smallvec::SmallVec;
2727
use tracing::debug;
2828

compiler/rustc_codegen_llvm/src/intrinsic.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use std::assert_matches::assert_matches;
22
use std::cmp::Ordering;
33

4+
use rustc_abi::{self as abi, Align, Float, HasDataLayout, Primitive, Size};
45
use rustc_codegen_ssa::base::{compare_simd_types, wants_msvc_seh, wants_wasm_eh};
56
use rustc_codegen_ssa::common::{IntPredicate, TypeKind};
67
use rustc_codegen_ssa::errors::{ExpectedPointerMutability, InvalidMonomorphization};
@@ -13,11 +14,10 @@ use rustc_middle::ty::layout::{FnAbiOf, HasTyCtxt, LayoutOf};
1314
use rustc_middle::ty::{self, GenericArgsRef, Ty};
1415
use rustc_middle::{bug, span_bug};
1516
use rustc_span::{Span, Symbol, sym};
16-
use rustc_target::abi::{self, Align, Float, HasDataLayout, Primitive, Size};
1717
use rustc_target::spec::{HasTargetSpec, PanicStrategy};
1818
use tracing::debug;
1919

20-
use crate::abi::{Abi, FnAbi, FnAbiLlvmExt, LlvmType, PassMode};
20+
use crate::abi::{ExternAbi, FnAbi, FnAbiLlvmExt, LlvmType, PassMode};
2121
use crate::builder::Builder;
2222
use crate::context::CodegenCx;
2323
use crate::llvm::{self, Metadata};
@@ -1094,7 +1094,7 @@ fn get_rust_try_fn<'ll, 'tcx>(
10941094
tcx.types.unit,
10951095
false,
10961096
hir::Safety::Unsafe,
1097-
Abi::Rust,
1097+
ExternAbi::Rust,
10981098
)),
10991099
);
11001100
// `unsafe fn(*mut i8, *mut i8) -> ()`
@@ -1105,7 +1105,7 @@ fn get_rust_try_fn<'ll, 'tcx>(
11051105
tcx.types.unit,
11061106
false,
11071107
hir::Safety::Unsafe,
1108-
Abi::Rust,
1108+
ExternAbi::Rust,
11091109
)),
11101110
);
11111111
// `unsafe fn(unsafe fn(*mut i8) -> (), *mut i8, unsafe fn(*mut i8, *mut i8) -> ()) -> i32`
@@ -1114,7 +1114,7 @@ fn get_rust_try_fn<'ll, 'tcx>(
11141114
tcx.types.i32,
11151115
false,
11161116
hir::Safety::Unsafe,
1117-
Abi::Rust,
1117+
ExternAbi::Rust,
11181118
));
11191119
let rust_try = gen_fn(cx, "__rust_try", rust_fn_sig, codegen);
11201120
cx.rust_try_fn.set(Some(rust_try));

compiler/rustc_codegen_llvm/src/llvm/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ use std::str::FromStr;
88
use std::string::FromUtf8Error;
99

1010
use libc::c_uint;
11+
use rustc_abi::{Align, Size, WrappingRange};
1112
use rustc_llvm::RustString;
12-
use rustc_target::abi::{Align, Size, WrappingRange};
1313

1414
pub use self::AtomicRmwBinOp::*;
1515
pub use self::CallConv::*;

compiler/rustc_codegen_llvm/src/type_.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
use std::{fmt, ptr};
22

33
use libc::{c_char, c_uint};
4+
use rustc_abi::{AddressSpace, Align, Integer, Size};
45
use rustc_codegen_ssa::common::TypeKind;
56
use rustc_codegen_ssa::traits::*;
67
use rustc_data_structures::small_c_str::SmallCStr;
78
use rustc_middle::bug;
89
use rustc_middle::ty::layout::TyAndLayout;
910
use rustc_middle::ty::{self, Ty};
10-
use rustc_target::abi::call::{CastTarget, FnAbi, Reg};
11-
use rustc_target::abi::{AddressSpace, Align, Integer, Size};
11+
use rustc_target::callconv::{CastTarget, FnAbi, Reg};
1212

1313
use crate::abi::{FnAbiLlvmExt, LlvmType};
1414
use crate::context::CodegenCx;

compiler/rustc_codegen_llvm/src/va_arg.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1+
use rustc_abi::{Align, Endian, HasDataLayout, Size};
12
use rustc_codegen_ssa::common::IntPredicate;
23
use rustc_codegen_ssa::mir::operand::OperandRef;
34
use rustc_codegen_ssa::traits::{BaseTypeCodegenMethods, BuilderMethods, ConstCodegenMethods};
45
use rustc_middle::ty::Ty;
56
use rustc_middle::ty::layout::{HasTyCtxt, LayoutOf};
6-
use rustc_target::abi::{Align, Endian, HasDataLayout, Size};
77

88
use crate::builder::Builder;
99
use crate::type_::Type;

compiler/rustc_codegen_ssa/src/back/metadata.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ use object::{
1111
SectionFlags, SectionKind, SubArchitecture, SymbolFlags, SymbolKind, SymbolScope, elf, pe,
1212
xcoff,
1313
};
14+
use rustc_abi::Endian;
1415
use rustc_data_structures::memmap::Mmap;
1516
use rustc_data_structures::owned_slice::{OwnedSlice, try_slice_owned};
1617
use rustc_metadata::EncodedMetadata;
@@ -19,7 +20,6 @@ use rustc_metadata::fs::METADATA_FILENAME;
1920
use rustc_middle::bug;
2021
use rustc_session::Session;
2122
use rustc_span::sym;
22-
use rustc_target::abi::Endian;
2323
use rustc_target::spec::{RelocModel, Target, ef_avr_arch};
2424

2525
use super::apple;

compiler/rustc_codegen_ssa/src/back/symbol_export.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -548,7 +548,7 @@ pub(crate) fn linking_symbol_name_for_instance_in_crate<'tcx>(
548548
symbol: ExportedSymbol<'tcx>,
549549
instantiating_crate: CrateNum,
550550
) -> String {
551-
use rustc_target::abi::call::Conv;
551+
use rustc_target::callconv::Conv;
552552

553553
let mut undecorated = symbol_name_for_instance_in_crate(tcx, symbol, instantiating_crate);
554554

compiler/rustc_codegen_ssa/src/base.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use std::collections::BTreeSet;
33
use std::time::{Duration, Instant};
44

55
use itertools::Itertools;
6+
use rustc_abi::FIRST_VARIANT;
67
use rustc_ast::expand::allocator::{ALLOCATOR_METHODS, AllocatorKind, global_fn_name};
78
use rustc_attr as attr;
89
use rustc_data_structures::fx::{FxHashMap, FxIndexSet};
@@ -26,7 +27,6 @@ use rustc_session::Session;
2627
use rustc_session::config::{self, CrateType, EntryFnType, OptLevel, OutputType};
2728
use rustc_span::symbol::sym;
2829
use rustc_span::{DUMMY_SP, Symbol};
29-
use rustc_target::abi::FIRST_VARIANT;
3030
use rustc_trait_selection::infer::at::ToTrace;
3131
use rustc_trait_selection::infer::{BoundRegionConversionTime, TyCtxtInferExt};
3232
use rustc_trait_selection::traits::{ObligationCause, ObligationCtxt};

compiler/rustc_codegen_ssa/src/debuginfo/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1+
use rustc_abi::{Integer, Primitive, Size, TagEncoding, Variants};
12
use rustc_middle::bug;
23
use rustc_middle::ty::layout::{IntegerExt, PrimitiveExt, TyAndLayout};
34
use rustc_middle::ty::{self, Ty, TyCtxt};
4-
use rustc_target::abi::{Integer, Primitive, Size, TagEncoding, Variants};
55

66
// FIXME(eddyb) find a place for this (or a way to replace it).
77
pub mod type_names;

compiler/rustc_codegen_ssa/src/debuginfo/type_names.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
use std::fmt::Write;
1515

16+
use rustc_abi::Integer;
1617
use rustc_data_structures::fx::FxHashSet;
1718
use rustc_data_structures::stable_hasher::{Hash64, HashStable, StableHasher};
1819
use rustc_hir::def_id::DefId;
@@ -23,7 +24,6 @@ use rustc_middle::ty::layout::{IntegerExt, TyAndLayout};
2324
use rustc_middle::ty::{
2425
self, ExistentialProjection, GenericArgKind, GenericArgsRef, ParamEnv, Ty, TyCtxt,
2526
};
26-
use rustc_target::abi::Integer;
2727
use smallvec::SmallVec;
2828

2929
use crate::debuginfo::wants_c_like_enum_debuginfo;
@@ -364,7 +364,7 @@ fn push_debuginfo_type_name<'tcx>(
364364
} else {
365365
output.push_str(sig.safety.prefix_str());
366366

367-
if sig.abi != rustc_target::spec::abi::Abi::Rust {
367+
if sig.abi != rustc_abi::ExternAbi::Rust {
368368
output.push_str("extern \"");
369369
output.push_str(sig.abi.name());
370370
output.push_str("\" ");

compiler/rustc_codegen_ssa/src/meth.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use rustc_middle::bug;
22
use rustc_middle::ty::{self, GenericArgKind, Ty};
33
use rustc_session::config::Lto;
44
use rustc_symbol_mangling::typeid_for_trait_ref;
5-
use rustc_target::abi::call::FnAbi;
5+
use rustc_target::callconv::FnAbi;
66
use tracing::{debug, instrument};
77

88
use crate::traits::*;

0 commit comments

Comments
 (0)