Skip to content

Commit 1d05e3c

Browse files
committed
Auto merge of #152075 - JonathanBrouwer:rollup-TaaDPXF, r=JonathanBrouwer
Rollup of 7 pull requests Successful merges: - #148967 (const-eval: always do mem-to-mem copies if there might be padding involved) - #152012 (Use `DEVELOPER_DIR` instead of a custom `xcode-select` script) - #152044 (Convert to inline diagnostics in `rustc_incremental`) - #152046 (Use glob imports for attribute parsers) - #152054 (Distinguish error message for `#[diagnostic::on_const]` on const trait impls) - #152059 (Fix some autodiff tests require Clto=fat) - #152073 (Convert to inline diagnostics in `rustc_mir_dataflow`)
2 parents 0c40f5b + 7960088 commit 1d05e3c

38 files changed

Lines changed: 226 additions & 307 deletions

File tree

.github/workflows/ci.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -165,9 +165,6 @@ jobs:
165165
- name: install sccache
166166
run: src/ci/scripts/install-sccache.sh
167167

168-
- name: select Xcode
169-
run: src/ci/scripts/select-xcode.sh
170-
171168
- name: install clang
172169
run: src/ci/scripts/install-clang.sh
173170

Cargo.lock

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3789,7 +3789,6 @@ dependencies = [
37893789
"rustc_hir_analysis",
37903790
"rustc_hir_pretty",
37913791
"rustc_hir_typeck",
3792-
"rustc_incremental",
37933792
"rustc_index",
37943793
"rustc_interface",
37953794
"rustc_lexer",
@@ -3799,7 +3798,6 @@ dependencies = [
37993798
"rustc_metadata",
38003799
"rustc_middle",
38013800
"rustc_mir_build",
3802-
"rustc_mir_dataflow",
38033801
"rustc_mir_transform",
38043802
"rustc_monomorphize",
38053803
"rustc_parse",
@@ -4048,7 +4046,6 @@ dependencies = [
40484046
"rustc_ast",
40494047
"rustc_data_structures",
40504048
"rustc_errors",
4051-
"rustc_fluent_macro",
40524049
"rustc_fs_util",
40534050
"rustc_graphviz",
40544051
"rustc_hashes",
@@ -4333,7 +4330,6 @@ dependencies = [
43334330
"rustc_abi",
43344331
"rustc_data_structures",
43354332
"rustc_errors",
4336-
"rustc_fluent_macro",
43374333
"rustc_graphviz",
43384334
"rustc_hir",
43394335
"rustc_index",

compiler/rustc_attr_parsing/src/context.rs

Lines changed: 35 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -16,90 +16,42 @@ use rustc_session::lint::{Lint, LintId};
1616
use rustc_span::{ErrorGuaranteed, Span, Symbol};
1717

1818
use crate::AttributeParser;
19-
use crate::attributes::allow_unstable::{
20-
AllowConstFnUnstableParser, AllowInternalUnstableParser, UnstableFeatureBoundParser,
21-
};
22-
use crate::attributes::body::CoroutineParser;
23-
use crate::attributes::cfi_encoding::CfiEncodingParser;
24-
use crate::attributes::codegen_attrs::{
25-
ColdParser, CoverageParser, EiiForeignItemParser, ExportNameParser, ForceTargetFeatureParser,
26-
NakedParser, NoMangleParser, ObjcClassParser, ObjcSelectorParser, OptimizeParser,
27-
PatchableFunctionEntryParser, RustcPassIndirectlyInNonRusticAbisParser, SanitizeParser,
28-
TargetFeatureParser, ThreadLocalParser, TrackCallerParser, UsedParser,
29-
};
30-
use crate::attributes::confusables::ConfusablesParser;
31-
use crate::attributes::crate_level::{
32-
CrateNameParser, CrateTypeParser, MoveSizeLimitParser, NeedsPanicRuntimeParser,
33-
NoBuiltinsParser, NoCoreParser, NoMainParser, NoStdParser, PanicRuntimeParser,
34-
PatternComplexityLimitParser, ProfilerRuntimeParser, RecursionLimitParser,
35-
RustcCoherenceIsCoreParser, RustcPreserveUbChecksParser, TypeLengthLimitParser,
36-
WindowsSubsystemParser,
37-
};
38-
use crate::attributes::debugger::DebuggerViualizerParser;
39-
use crate::attributes::deprecation::DeprecationParser;
40-
use crate::attributes::do_not_recommend::DoNotRecommendParser;
41-
use crate::attributes::doc::DocParser;
42-
use crate::attributes::dummy::DummyParser;
43-
use crate::attributes::inline::{InlineParser, RustcForceInlineParser};
44-
use crate::attributes::instruction_set::InstructionSetParser;
45-
use crate::attributes::link_attrs::{
46-
CompilerBuiltinsParser, ExportStableParser, FfiConstParser, FfiPureParser, LinkNameParser,
47-
LinkOrdinalParser, LinkParser, LinkSectionParser, LinkageParser, NeedsAllocatorParser,
48-
StdInternalSymbolParser,
49-
};
50-
use crate::attributes::lint_helpers::{
51-
AsPtrParser, AutomaticallyDerivedParser, PassByValueParser, PubTransparentParser,
52-
RustcShouldNotBeCalledOnConstItems,
53-
};
54-
use crate::attributes::loop_match::{ConstContinueParser, LoopMatchParser};
55-
use crate::attributes::macro_attrs::{
56-
AllowInternalUnsafeParser, CollapseDebugInfoParser, MacroEscapeParser, MacroExportParser,
57-
MacroUseParser,
58-
};
59-
use crate::attributes::must_not_suspend::MustNotSuspendParser;
60-
use crate::attributes::must_use::MustUseParser;
61-
use crate::attributes::no_implicit_prelude::NoImplicitPreludeParser;
62-
use crate::attributes::no_link::NoLinkParser;
63-
use crate::attributes::non_exhaustive::NonExhaustiveParser;
19+
// Glob imports to avoid big, bitrotty import lists
20+
use crate::attributes::allow_unstable::*;
21+
use crate::attributes::body::*;
22+
use crate::attributes::cfi_encoding::*;
23+
use crate::attributes::codegen_attrs::*;
24+
use crate::attributes::confusables::*;
25+
use crate::attributes::crate_level::*;
26+
use crate::attributes::debugger::*;
27+
use crate::attributes::deprecation::*;
28+
use crate::attributes::do_not_recommend::*;
29+
use crate::attributes::doc::*;
30+
use crate::attributes::dummy::*;
31+
use crate::attributes::inline::*;
32+
use crate::attributes::instruction_set::*;
33+
use crate::attributes::link_attrs::*;
34+
use crate::attributes::lint_helpers::*;
35+
use crate::attributes::loop_match::*;
36+
use crate::attributes::macro_attrs::*;
37+
use crate::attributes::must_not_suspend::*;
38+
use crate::attributes::must_use::*;
39+
use crate::attributes::no_implicit_prelude::*;
40+
use crate::attributes::no_link::*;
41+
use crate::attributes::non_exhaustive::*;
6442
use crate::attributes::path::PathParser as PathAttributeParser;
65-
use crate::attributes::pin_v2::PinV2Parser;
66-
use crate::attributes::proc_macro_attrs::{
67-
ProcMacroAttributeParser, ProcMacroDeriveParser, ProcMacroParser, RustcBuiltinMacroParser,
68-
};
69-
use crate::attributes::prototype::CustomMirParser;
70-
use crate::attributes::repr::{AlignParser, AlignStaticParser, ReprParser};
71-
use crate::attributes::rustc_allocator::{
72-
RustcAllocatorParser, RustcAllocatorZeroedParser, RustcAllocatorZeroedVariantParser,
73-
RustcDeallocatorParser, RustcReallocatorParser,
74-
};
75-
use crate::attributes::rustc_dump::{
76-
RustcDumpDefParentsParser, RustcDumpItemBoundsParser, RustcDumpPredicatesParser,
77-
RustcDumpUserArgsParser, RustcDumpVtableParser,
78-
};
79-
use crate::attributes::rustc_internal::{
80-
RustcHasIncoherentInherentImplsParser, RustcHiddenTypeOfOpaquesParser, RustcLayoutParser,
81-
RustcLayoutScalarValidRangeEndParser, RustcLayoutScalarValidRangeStartParser,
82-
RustcLegacyConstGenericsParser, RustcLintOptDenyFieldAccessParser, RustcLintOptTyParser,
83-
RustcLintQueryInstabilityParser, RustcLintUntrackedQueryInformationParser, RustcMainParser,
84-
RustcMirParser, RustcMustImplementOneOfParser, RustcNeverReturnsNullPointerParser,
85-
RustcNoImplicitAutorefsParser, RustcNonConstTraitMethodParser, RustcNounwindParser,
86-
RustcObjectLifetimeDefaultParser, RustcOffloadKernelParser, RustcScalableVectorParser,
87-
RustcSimdMonomorphizeLaneLimitParser,
88-
};
89-
use crate::attributes::semantics::MayDangleParser;
90-
use crate::attributes::stability::{
91-
BodyStabilityParser, ConstStabilityIndirectParser, ConstStabilityParser, StabilityParser,
92-
};
93-
use crate::attributes::test_attrs::{
94-
IgnoreParser, RustcVarianceOfOpaquesParser, RustcVarianceParser, ShouldPanicParser,
95-
};
96-
use crate::attributes::traits::{
97-
AllowIncoherentImplParser, CoinductiveParser, DenyExplicitImplParser,
98-
DynIncompatibleTraitParser, FundamentalParser, MarkerParser, ParenSugarParser, PointeeParser,
99-
SkipDuringMethodDispatchParser, SpecializationTraitParser, TypeConstParser,
100-
UnsafeSpecializationMarkerParser,
101-
};
102-
use crate::attributes::transparency::TransparencyParser;
43+
use crate::attributes::pin_v2::*;
44+
use crate::attributes::proc_macro_attrs::*;
45+
use crate::attributes::prototype::*;
46+
use crate::attributes::repr::*;
47+
use crate::attributes::rustc_allocator::*;
48+
use crate::attributes::rustc_dump::*;
49+
use crate::attributes::rustc_internal::*;
50+
use crate::attributes::semantics::*;
51+
use crate::attributes::stability::*;
52+
use crate::attributes::test_attrs::*;
53+
use crate::attributes::traits::*;
54+
use crate::attributes::transparency::*;
10355
use crate::attributes::{AttributeParser as _, Combine, Single, WithoutArgs};
10456
use crate::parser::{ArgParser, RefPathParser};
10557
use crate::session_diagnostics::{

compiler/rustc_const_eval/src/interpret/place.rs

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
use either::{Either, Left, Right};
66
use rustc_abi::{BackendRepr, HasDataLayout, Size};
77
use rustc_data_structures::assert_matches;
8-
use rustc_middle::ty::Ty;
98
use rustc_middle::ty::layout::TyAndLayout;
9+
use rustc_middle::ty::{self, Ty};
1010
use rustc_middle::{bug, mir, span_bug};
1111
use tracing::field::Empty;
1212
use tracing::{instrument, trace};
@@ -884,10 +884,38 @@ where
884884
dest.layout().ty,
885885
);
886886
}
887+
// If the source has padding, we want to always do a mem-to-mem copy to ensure consistent
888+
// padding in the target independent of layout choices.
889+
let src_has_padding = match src.layout().backend_repr {
890+
BackendRepr::Scalar(_) => false,
891+
BackendRepr::ScalarPair(left, right)
892+
if matches!(src.layout().ty.kind(), ty::Ref(..) | ty::RawPtr(..)) =>
893+
{
894+
// Wide pointers never have padding, so we can avoid calling `size()`.
895+
debug_assert_eq!(left.size(self) + right.size(self), src.layout().size);
896+
false
897+
}
898+
BackendRepr::ScalarPair(left, right) => {
899+
let left_size = left.size(self);
900+
let right_size = right.size(self);
901+
// We have padding if the sizes don't add up to the total.
902+
left_size + right_size != src.layout().size
903+
}
904+
// Everything else can only exist in memory anyway, so it doesn't matter.
905+
BackendRepr::SimdVector { .. }
906+
| BackendRepr::ScalableVector { .. }
907+
| BackendRepr::Memory { .. } => true,
908+
};
887909

888-
// Let us see if the layout is simple so we take a shortcut,
889-
// avoid force_allocation.
890-
let src = match self.read_immediate_raw(src)? {
910+
let src_val = if src_has_padding {
911+
// Do our best to get an mplace. If there's no mplace, then this is stored as an
912+
// "optimized" local, so its padding is definitely uninitialized and we are fine.
913+
src.to_op(self)?.as_mplace_or_imm()
914+
} else {
915+
// Do our best to get an immediate, to avoid having to force_allocate the destination.
916+
self.read_immediate_raw(src)?
917+
};
918+
let src = match src_val {
891919
Right(src_val) => {
892920
assert!(!src.layout().is_unsized());
893921
assert!(!dest.layout().is_unsized());

compiler/rustc_const_eval/src/interpret/projection.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ pub trait Projectable<'tcx, Prov: Provenance>: Sized + std::fmt::Debug {
9797
}
9898

9999
/// Convert this to an `OpTy`. This might be an irreversible transformation, but is useful for
100-
/// reading from this thing.
100+
/// reading from this thing. This will never actually do a read from memory!
101101
fn to_op<M: Machine<'tcx, Provenance = Prov>>(
102102
&self,
103103
ecx: &InterpCx<'tcx, M>,

compiler/rustc_driver_impl/Cargo.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ rustc_feature = { path = "../rustc_feature" }
2323
rustc_hir_analysis = { path = "../rustc_hir_analysis" }
2424
rustc_hir_pretty = { path = "../rustc_hir_pretty" }
2525
rustc_hir_typeck = { path = "../rustc_hir_typeck" }
26-
rustc_incremental = { path = "../rustc_incremental" }
2726
rustc_index = { path = "../rustc_index" }
2827
rustc_interface = { path = "../rustc_interface" }
2928
rustc_lexer = { path = "../rustc_lexer" }
@@ -33,7 +32,6 @@ rustc_macros = { path = "../rustc_macros" }
3332
rustc_metadata = { path = "../rustc_metadata" }
3433
rustc_middle = { path = "../rustc_middle" }
3534
rustc_mir_build = { path = "../rustc_mir_build" }
36-
rustc_mir_dataflow = { path = "../rustc_mir_dataflow" }
3735
rustc_mir_transform = { path = "../rustc_mir_transform" }
3836
rustc_monomorphize = { path = "../rustc_monomorphize" }
3937
rustc_parse = { path = "../rustc_parse" }

compiler/rustc_driver_impl/src/lib.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,13 +124,11 @@ pub static DEFAULT_LOCALE_RESOURCES: &[&str] = &[
124124
rustc_expand::DEFAULT_LOCALE_RESOURCE,
125125
rustc_hir_analysis::DEFAULT_LOCALE_RESOURCE,
126126
rustc_hir_typeck::DEFAULT_LOCALE_RESOURCE,
127-
rustc_incremental::DEFAULT_LOCALE_RESOURCE,
128127
rustc_interface::DEFAULT_LOCALE_RESOURCE,
129128
rustc_lint::DEFAULT_LOCALE_RESOURCE,
130129
rustc_metadata::DEFAULT_LOCALE_RESOURCE,
131130
rustc_middle::DEFAULT_LOCALE_RESOURCE,
132131
rustc_mir_build::DEFAULT_LOCALE_RESOURCE,
133-
rustc_mir_dataflow::DEFAULT_LOCALE_RESOURCE,
134132
rustc_mir_transform::DEFAULT_LOCALE_RESOURCE,
135133
rustc_monomorphize::DEFAULT_LOCALE_RESOURCE,
136134
rustc_parse::DEFAULT_LOCALE_RESOURCE,

compiler/rustc_incremental/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ rand = "0.9.0"
99
rustc_ast = { path = "../rustc_ast" }
1010
rustc_data_structures = { path = "../rustc_data_structures" }
1111
rustc_errors = { path = "../rustc_errors" }
12-
rustc_fluent_macro = { path = "../rustc_fluent_macro" }
1312
rustc_fs_util = { path = "../rustc_fs_util" }
1413
rustc_graphviz = { path = "../rustc_graphviz" }
1514
rustc_hashes = { path = "../rustc_hashes" }

compiler/rustc_incremental/messages.ftl

Lines changed: 0 additions & 102 deletions
This file was deleted.

0 commit comments

Comments
 (0)