Skip to content

Commit ed0573f

Browse files
committed
Merge from rustc
2 parents 0331912 + 3ea9ad5 commit ed0573f

File tree

275 files changed

+7679
-2660
lines changed

Some content is hidden

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

275 files changed

+7679
-2660
lines changed

Cargo.lock

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -854,7 +854,7 @@ dependencies = [
854854
"autocfg",
855855
"cfg-if",
856856
"crossbeam-utils",
857-
"memoffset",
857+
"memoffset 0.7.1",
858858
"scopeguard",
859859
]
860860

@@ -1241,6 +1241,16 @@ dependencies = [
12411241
"instant",
12421242
]
12431243

1244+
[[package]]
1245+
name = "field-offset"
1246+
version = "0.3.5"
1247+
source = "registry+https://github.com/rust-lang/crates.io-index"
1248+
checksum = "a3cf3a800ff6e860c863ca6d4b16fd999db8b752819c1606884047b73e468535"
1249+
dependencies = [
1250+
"memoffset 0.8.0",
1251+
"rustc_version",
1252+
]
1253+
12441254
[[package]]
12451255
name = "filetime"
12461256
version = "0.2.20"
@@ -2188,6 +2198,15 @@ dependencies = [
21882198
"libc",
21892199
]
21902200

2201+
[[package]]
2202+
name = "memoffset"
2203+
version = "0.6.5"
2204+
source = "registry+https://github.com/rust-lang/crates.io-index"
2205+
checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
2206+
dependencies = [
2207+
"autocfg",
2208+
]
2209+
21912210
[[package]]
21922211
name = "memoffset"
21932212
version = "0.7.1"
@@ -2197,6 +2216,15 @@ dependencies = [
21972216
"autocfg",
21982217
]
21992218

2219+
[[package]]
2220+
name = "memoffset"
2221+
version = "0.8.0"
2222+
source = "registry+https://github.com/rust-lang/crates.io-index"
2223+
checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
2224+
dependencies = [
2225+
"autocfg",
2226+
]
2227+
22002228
[[package]]
22012229
name = "mime"
22022230
version = "0.3.16"
@@ -3306,6 +3334,7 @@ dependencies = [
33063334
"rustc-hash",
33073335
"rustc-rayon",
33083336
"rustc-rayon-core",
3337+
"rustc_arena",
33093338
"rustc_graphviz",
33103339
"rustc_index",
33113340
"rustc_macros",
@@ -3781,6 +3810,7 @@ dependencies = [
37813810
"chalk-ir",
37823811
"derive_more",
37833812
"either",
3813+
"field-offset",
37843814
"gsgdt",
37853815
"measureme",
37863816
"polonius-engine",
@@ -3995,7 +4025,9 @@ dependencies = [
39954025
name = "rustc_query_impl"
39964026
version = "0.0.0"
39974027
dependencies = [
4028+
"field-offset",
39984029
"measureme",
4030+
"memoffset 0.6.5",
39994031
"rustc-rayon-core",
40004032
"rustc_ast",
40014033
"rustc_data_structures",

compiler/rustc_ast/src/tokenstream.rs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,15 @@ pub enum TokenTree {
4848
Delimited(DelimSpan, Delimiter, TokenStream),
4949
}
5050

51-
// Ensure all fields of `TokenTree` is `Send` and `Sync`.
51+
// Ensure all fields of `TokenTree` are `DynSend` and `DynSync`.
5252
#[cfg(parallel_compiler)]
5353
fn _dummy()
5454
where
55-
Token: Send + Sync,
56-
DelimSpan: Send + Sync,
57-
Delimiter: Send + Sync,
58-
TokenStream: Send + Sync,
55+
Token: sync::DynSend + sync::DynSync,
56+
Spacing: sync::DynSend + sync::DynSync,
57+
DelimSpan: sync::DynSend + sync::DynSync,
58+
Delimiter: sync::DynSend + sync::DynSync,
59+
TokenStream: sync::DynSend + sync::DynSync,
5960
{
6061
}
6162

@@ -118,7 +119,7 @@ where
118119
}
119120
}
120121

121-
pub trait ToAttrTokenStream: sync::Send + sync::Sync {
122+
pub trait ToAttrTokenStream: sync::DynSend + sync::DynSync {
122123
fn to_attr_token_stream(&self) -> AttrTokenStream;
123124
}
124125

@@ -550,6 +551,10 @@ impl TokenStream {
550551
vec_mut.extend(stream_iter);
551552
}
552553
}
554+
555+
pub fn chunks(&self, chunk_size: usize) -> core::slice::Chunks<'_, TokenTree> {
556+
self.0.chunks(chunk_size)
557+
}
553558
}
554559

555560
/// By-reference iterator over a [`TokenStream`], that produces `&TokenTree`

compiler/rustc_borrowck/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ use rustc_middle::mir::{
3535
use rustc_middle::mir::{AggregateKind, BasicBlock, BorrowCheckResult, BorrowKind};
3636
use rustc_middle::mir::{InlineAsmOperand, Terminator, TerminatorKind};
3737
use rustc_middle::mir::{ProjectionElem, Promoted, Rvalue, Statement, StatementKind};
38-
use rustc_middle::ty::query::Providers;
38+
use rustc_middle::query::Providers;
3939
use rustc_middle::ty::{self, CapturedPlace, ParamEnv, RegionVid, TyCtxt};
4040
use rustc_session::lint::builtin::UNUSED_MUT;
4141
use rustc_span::{Span, Symbol};

compiler/rustc_builtin_macros/src/env.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,15 +63,16 @@ pub fn expand_env<'cx>(
6363
Some(exprs) => exprs.into_iter(),
6464
};
6565

66-
let Some((var, _style)) = expr_to_string(cx, exprs.next().unwrap(), "expected string literal") else {
66+
let var_expr = exprs.next().unwrap();
67+
let Some((var, _)) = expr_to_string(cx, var_expr.clone(), "expected string literal") else {
6768
return DummyResult::any(sp);
6869
};
6970

7071
let custom_msg = match exprs.next() {
7172
None => None,
7273
Some(second) => match expr_to_string(cx, second, "expected string literal") {
7374
None => return DummyResult::any(sp),
74-
Some((s, _style)) => Some(s),
75+
Some((s, _)) => Some(s),
7576
},
7677
};
7778

@@ -80,10 +81,15 @@ pub fn expand_env<'cx>(
8081
cx.sess.parse_sess.env_depinfo.borrow_mut().insert((var, value));
8182
let e = match value {
8283
None => {
84+
// Use the string literal in the code in the diagnostic to avoid confusing diagnostics,
85+
// e.g. when the literal contains escape sequences.
86+
let ast::ExprKind::Lit(ast::token::Lit { kind: ast::token::LitKind::Str, symbol: original_var, ..}) = &var_expr.kind else {
87+
unreachable!("`expr_to_string` ensures this is a string lit")
88+
};
8389
cx.emit_err(errors::EnvNotDefined {
8490
span: sp,
8591
msg: custom_msg,
86-
var,
92+
var: *original_var,
8793
help: custom_msg.is_none().then(|| help_for_missing_env_var(var.as_str())),
8894
});
8995
return DummyResult::any(sp);

compiler/rustc_codegen_gcc/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ use rustc_errors::{DiagnosticMessage, ErrorGuaranteed, Handler, SubdiagnosticMes
8080
use rustc_fluent_macro::fluent_messages;
8181
use rustc_metadata::EncodedMetadata;
8282
use rustc_middle::dep_graph::{WorkProduct, WorkProductId};
83+
use rustc_middle::query::Providers;
8384
use rustc_middle::ty::TyCtxt;
84-
use rustc_middle::ty::query::Providers;
8585
use rustc_session::config::{Lto, OptLevel, OutputFilenames};
8686
use rustc_session::Session;
8787
use rustc_span::Symbol;

compiler/rustc_codegen_llvm/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ use rustc_errors::{DiagnosticMessage, ErrorGuaranteed, FatalError, Handler, Subd
3737
use rustc_fluent_macro::fluent_messages;
3838
use rustc_metadata::EncodedMetadata;
3939
use rustc_middle::dep_graph::{WorkProduct, WorkProductId};
40-
use rustc_middle::ty::query::Providers;
40+
use rustc_middle::query::Providers;
4141
use rustc_middle::ty::TyCtxt;
4242
use rustc_session::config::{OptLevel, OutputFilenames, PrintRequest};
4343
use rustc_session::Session;

compiler/rustc_codegen_llvm/src/llvm_util.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -155,12 +155,6 @@ pub fn to_llvm_features<'a>(sess: &Session, s: &'a str) -> SmallVec<[&'a str; 2]
155155
("x86", "rdrand") => smallvec!["rdrnd"],
156156
("x86", "bmi1") => smallvec!["bmi"],
157157
("x86", "cmpxchg16b") => smallvec!["cx16"],
158-
// FIXME: These aliases are misleading, and should be removed before avx512_target_feature is
159-
// stabilized. They must remain until std::arch switches off them.
160-
// rust#100752
161-
("x86", "avx512vaes") => smallvec!["vaes"],
162-
("x86", "avx512gfni") => smallvec!["gfni"],
163-
("x86", "avx512vpclmulqdq") => smallvec!["vpclmulqdq"],
164158
("aarch64", "rcpc2") => smallvec!["rcpc-immo"],
165159
("aarch64", "dpb") => smallvec!["ccpp"],
166160
("aarch64", "dpb2") => smallvec!["ccdp"],

compiler/rustc_codegen_ssa/src/back/symbol_export.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use rustc_middle::middle::exported_symbols::{
1111
metadata_symbol_name, ExportedSymbol, SymbolExportInfo, SymbolExportKind, SymbolExportLevel,
1212
};
1313
use rustc_middle::query::LocalCrate;
14-
use rustc_middle::ty::query::{ExternProviders, Providers};
14+
use rustc_middle::query::{ExternProviders, Providers};
1515
use rustc_middle::ty::subst::{GenericArgKind, SubstsRef};
1616
use rustc_middle::ty::Instance;
1717
use rustc_middle::ty::{self, SymbolName, TyCtxt};

compiler/rustc_codegen_ssa/src/base.rs

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,7 @@ use rustc_ast::expand::allocator::AllocatorKind;
1717
use rustc_attr as attr;
1818
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
1919
use rustc_data_structures::profiling::{get_resident_set_size, print_time_passes_entry};
20-
21-
use rustc_data_structures::sync::par_iter;
22-
#[cfg(parallel_compiler)]
23-
use rustc_data_structures::sync::ParallelIterator;
20+
use rustc_data_structures::sync::par_map;
2421
use rustc_hir as hir;
2522
use rustc_hir::def_id::{DefId, LOCAL_CRATE};
2623
use rustc_hir::lang_items::LangItem;
@@ -30,8 +27,8 @@ use rustc_middle::middle::exported_symbols;
3027
use rustc_middle::middle::exported_symbols::SymbolExportKind;
3128
use rustc_middle::middle::lang_items;
3229
use rustc_middle::mir::mono::{CodegenUnit, CodegenUnitNameBuilder, MonoItem};
30+
use rustc_middle::query::Providers;
3331
use rustc_middle::ty::layout::{HasTyCtxt, LayoutOf, TyAndLayout};
34-
use rustc_middle::ty::query::Providers;
3532
use rustc_middle::ty::{self, Instance, Ty, TyCtxt};
3633
use rustc_session::cgu_reuse_tracker::CguReuse;
3734
use rustc_session::config::{self, CrateType, EntryFnType, OutputType};
@@ -689,7 +686,7 @@ pub fn codegen_crate<B: ExtraBackendMethods>(
689686
// This likely is a temporary measure. Once we don't have to support the
690687
// non-parallel compiler anymore, we can compile CGUs end-to-end in
691688
// parallel and get rid of the complicated scheduling logic.
692-
let mut pre_compiled_cgus = if cfg!(parallel_compiler) {
689+
let mut pre_compiled_cgus = if tcx.sess.threads() > 1 {
693690
tcx.sess.time("compile_first_CGU_batch", || {
694691
// Try to find one CGU to compile per thread.
695692
let cgus: Vec<_> = cgu_reuse
@@ -702,12 +699,10 @@ pub fn codegen_crate<B: ExtraBackendMethods>(
702699
// Compile the found CGUs in parallel.
703700
let start_time = Instant::now();
704701

705-
let pre_compiled_cgus = par_iter(cgus)
706-
.map(|(i, _)| {
707-
let module = backend.compile_codegen_unit(tcx, codegen_units[i].name());
708-
(i, module)
709-
})
710-
.collect();
702+
let pre_compiled_cgus = par_map(cgus, |(i, _)| {
703+
let module = backend.compile_codegen_unit(tcx, codegen_units[i].name());
704+
(i, module)
705+
});
711706

712707
total_codegen_time += start_time.elapsed();
713708

compiler/rustc_codegen_ssa/src/codegen_attrs.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use rustc_hir::def_id::{DefId, LocalDefId, LOCAL_CRATE};
77
use rustc_hir::{lang_items, weak_lang_items::WEAK_LANG_ITEMS, LangItem};
88
use rustc_middle::middle::codegen_fn_attrs::{CodegenFnAttrFlags, CodegenFnAttrs};
99
use rustc_middle::mir::mono::Linkage;
10-
use rustc_middle::ty::query::Providers;
10+
use rustc_middle::query::Providers;
1111
use rustc_middle::ty::{self as ty, TyCtxt};
1212
use rustc_session::{lint, parse::feature_err};
1313
use rustc_span::symbol::Ident;

compiler/rustc_codegen_ssa/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ use rustc_hir::def_id::CrateNum;
3030
use rustc_middle::dep_graph::WorkProduct;
3131
use rustc_middle::middle::dependency_format::Dependencies;
3232
use rustc_middle::middle::exported_symbols::SymbolExportKind;
33-
use rustc_middle::ty::query::{ExternProviders, Providers};
33+
use rustc_middle::query::{ExternProviders, Providers};
3434
use rustc_serialize::opaque::{FileEncoder, MemDecoder};
3535
use rustc_serialize::{Decodable, Decoder, Encodable, Encoder};
3636
use rustc_session::config::{CrateType, OutputFilenames, OutputType, RUST_CGU_EXT};

0 commit comments

Comments
 (0)