Skip to content

Commit 29fd958

Browse files
authored
Merge branch 'master' into patch-1
2 parents 43217fe + 9a27044 commit 29fd958

File tree

175 files changed

+1907
-1165
lines changed

Some content is hidden

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

175 files changed

+1907
-1165
lines changed

Cargo.lock

+13-46
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ dependencies = [
398398
"jobserver",
399399
"libc",
400400
"log",
401-
"miow 0.3.6",
401+
"miow 0.3.7",
402402
"same-file",
403403
"shell-escape",
404404
"tempfile",
@@ -418,17 +418,6 @@ dependencies = [
418418
"serde_json",
419419
]
420420

421-
[[package]]
422-
name = "cargo_metadata"
423-
version = "0.11.1"
424-
source = "registry+https://github.com/rust-lang/crates.io-index"
425-
checksum = "89fec17b16f1ac67908af82e47d0a90a7afd0e1827b181cd77504323d3263d35"
426-
dependencies = [
427-
"semver 0.10.0",
428-
"serde",
429-
"serde_json",
430-
]
431-
432421
[[package]]
433422
name = "cargo_metadata"
434423
version = "0.12.0"
@@ -675,7 +664,7 @@ dependencies = [
675664
"glob",
676665
"lazy_static",
677666
"libc",
678-
"miow 0.3.6",
667+
"miow 0.3.7",
679668
"regex",
680669
"rustfix 0.6.0",
681670
"serde",
@@ -699,7 +688,7 @@ dependencies = [
699688
"lazy_static",
700689
"libc",
701690
"log",
702-
"miow 0.3.6",
691+
"miow 0.3.7",
703692
"regex",
704693
"rustfix 0.5.1",
705694
"serde",
@@ -867,24 +856,24 @@ dependencies = [
867856

868857
[[package]]
869858
name = "curl"
870-
version = "0.4.36"
859+
version = "0.4.38"
871860
source = "registry+https://github.com/rust-lang/crates.io-index"
872-
checksum = "d0bac9f84ca0977c4d9b8db998689de55b9e976656a6bc87fada2ca710d504c7"
861+
checksum = "003cb79c1c6d1c93344c7e1201bb51c2148f24ec2bd9c253709d6b2efb796515"
873862
dependencies = [
874863
"curl-sys",
875864
"libc",
876865
"openssl-probe",
877866
"openssl-sys",
878867
"schannel",
879-
"socket2 0.4.0",
868+
"socket2",
880869
"winapi 0.3.9",
881870
]
882871

883872
[[package]]
884873
name = "curl-sys"
885-
version = "0.4.42+curl-7.76.0"
874+
version = "0.4.44+curl-7.77.0"
886875
source = "registry+https://github.com/rust-lang/crates.io-index"
887-
checksum = "4636d8d6109c842707018a104051436bffb8991ea20b2d1293db70b6e0ee4c7c"
876+
checksum = "4b6d85e9322b193f117c966e79c2d6929ec08c02f339f950044aba12e20bbaf1"
888877
dependencies = [
889878
"cc",
890879
"libc",
@@ -2263,7 +2252,7 @@ checksum = "0840c1c50fd55e521b247f949c241c9997709f23bd7f023b9762cd561e935656"
22632252
dependencies = [
22642253
"log",
22652254
"mio",
2266-
"miow 0.3.6",
2255+
"miow 0.3.7",
22672256
"winapi 0.3.9",
22682257
]
22692258

@@ -2292,11 +2281,10 @@ dependencies = [
22922281

22932282
[[package]]
22942283
name = "miow"
2295-
version = "0.3.6"
2284+
version = "0.3.7"
22962285
source = "registry+https://github.com/rust-lang/crates.io-index"
2297-
checksum = "5a33c1b55807fbed163481b5ba66db4b2fa6cde694a5027be10fb724206c5897"
2286+
checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21"
22982287
dependencies = [
2299-
"socket2 0.3.19",
23002288
"winapi 0.3.9",
23012289
]
23022290

@@ -2525,7 +2513,7 @@ dependencies = [
25252513
"libc",
25262514
"log",
25272515
"mio-named-pipes",
2528-
"miow 0.3.6",
2516+
"miow 0.3.7",
25292517
"rand 0.7.3",
25302518
"tokio",
25312519
"winapi 0.3.9",
@@ -4681,16 +4669,6 @@ dependencies = [
46814669
"serde",
46824670
]
46834671

4684-
[[package]]
4685-
name = "semver"
4686-
version = "0.10.0"
4687-
source = "registry+https://github.com/rust-lang/crates.io-index"
4688-
checksum = "394cec28fa623e00903caf7ba4fa6fb9a0e260280bb8cdbbba029611108a0190"
4689-
dependencies = [
4690-
"semver-parser 0.7.0",
4691-
"serde",
4692-
]
4693-
46944672
[[package]]
46954673
name = "semver"
46964674
version = "0.11.0"
@@ -4879,17 +4857,6 @@ version = "1.0.1"
48794857
source = "registry+https://github.com/rust-lang/crates.io-index"
48804858
checksum = "da73c8f77aebc0e40c300b93f0a5f1bece7a248a36eee287d4e095f35c7b7d6e"
48814859

4882-
[[package]]
4883-
name = "socket2"
4884-
version = "0.3.19"
4885-
source = "registry+https://github.com/rust-lang/crates.io-index"
4886-
checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e"
4887-
dependencies = [
4888-
"cfg-if 1.0.0",
4889-
"libc",
4890-
"winapi 0.3.9",
4891-
]
4892-
48934860
[[package]]
48944861
name = "socket2"
48954862
version = "0.4.0"
@@ -5230,7 +5197,7 @@ dependencies = [
52305197
name = "tidy"
52315198
version = "0.1.0"
52325199
dependencies = [
5233-
"cargo_metadata 0.11.1",
5200+
"cargo_metadata 0.12.0",
52345201
"crossbeam-utils 0.8.3",
52355202
"lazy_static",
52365203
"regex",

compiler/rustc_ast_pretty/src/pprust/state.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -136,11 +136,11 @@ pub fn print_crate<'a>(
136136
s.s.eof()
137137
}
138138

139-
// This makes printed token streams look slightly nicer,
140-
// and also addresses some specific regressions described in #63896 and #73345.
139+
/// This makes printed token streams look slightly nicer,
140+
/// and also addresses some specific regressions described in #63896 and #73345.
141141
fn tt_prepend_space(tt: &TokenTree, prev: &TokenTree) -> bool {
142142
if let TokenTree::Token(token) = prev {
143-
if matches!(token.kind, token::Dot) {
143+
if matches!(token.kind, token::Dot | token::Dollar) {
144144
return false;
145145
}
146146
if let token::DocComment(comment_kind, ..) = token.kind {

compiler/rustc_codegen_cranelift/src/driver/jit.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ fn load_imported_symbols_for_jit(tcx: TyCtxt<'_>) -> Vec<(String, *const u8)> {
185185
.find(|(crate_type, _data)| *crate_type == rustc_session::config::CrateType::Executable)
186186
.unwrap()
187187
.1;
188-
for &(cnum, _) in &crate_info.used_crates_dynamic {
188+
for &cnum in &crate_info.used_crates {
189189
let src = &crate_info.used_crate_source[&cnum];
190190
match data[cnum.as_usize() - 1] {
191191
Linkage::NotLinked | Linkage::IncludedFromDylib => {}

compiler/rustc_codegen_ssa/src/back/link.rs

+30-18
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use rustc_data_structures::temp_dir::MaybeTempDir;
33
use rustc_errors::Handler;
44
use rustc_fs_util::fix_windows_verbatim_for_gcc;
55
use rustc_hir::def_id::CrateNum;
6-
use rustc_middle::middle::cstore::{DllImport, LibSource};
6+
use rustc_middle::middle::cstore::DllImport;
77
use rustc_middle::middle::dependency_format::Linkage;
88
use rustc_session::config::{self, CFGuard, CrateType, DebugInfo, LdImpl, Strip};
99
use rustc_session::config::{OutputFilenames, OutputType, PrintRequest};
@@ -238,7 +238,7 @@ pub fn each_linked_rlib(
238238
info: &CrateInfo,
239239
f: &mut dyn FnMut(CrateNum, &Path),
240240
) -> Result<(), String> {
241-
let crates = info.used_crates_static.iter();
241+
let crates = info.used_crates.iter();
242242
let mut fmts = None;
243243
for (ty, list) in info.dependency_formats.iter() {
244244
match ty {
@@ -256,22 +256,23 @@ pub fn each_linked_rlib(
256256
Some(f) => f,
257257
None => return Err("could not find formats for rlibs".to_string()),
258258
};
259-
for &(cnum, ref path) in crates {
259+
for &cnum in crates {
260260
match fmts.get(cnum.as_usize() - 1) {
261261
Some(&Linkage::NotLinked | &Linkage::IncludedFromDylib) => continue,
262262
Some(_) => {}
263263
None => return Err("could not find formats for rlibs".to_string()),
264264
}
265265
let name = &info.crate_name[&cnum];
266-
let path = match *path {
267-
LibSource::Some(ref p) => p,
268-
LibSource::MetadataOnly => {
269-
return Err(format!(
270-
"could not find rlib for: `{}`, found rmeta (metadata) file",
271-
name
272-
));
273-
}
274-
LibSource::None => return Err(format!("could not find rlib for: `{}`", name)),
266+
let used_crate_source = &info.used_crate_source[&cnum];
267+
let path = if let Some((path, _)) = &used_crate_source.rlib {
268+
path
269+
} else if used_crate_source.rmeta.is_some() {
270+
return Err(format!(
271+
"could not find rlib for: `{}`, found rmeta (metadata) file",
272+
name
273+
));
274+
} else {
275+
return Err(format!("could not find rlib for: `{}`", name));
275276
};
276277
f(cnum, &path);
277278
}
@@ -1759,8 +1760,19 @@ fn add_rpath_args(
17591760
// where extern libraries might live, based on the
17601761
// add_lib_search_paths
17611762
if sess.opts.cg.rpath {
1763+
let libs = codegen_results
1764+
.crate_info
1765+
.used_crates
1766+
.iter()
1767+
.filter_map(|cnum| {
1768+
codegen_results.crate_info.used_crate_source[cnum]
1769+
.dylib
1770+
.as_ref()
1771+
.map(|(path, _)| &**path)
1772+
})
1773+
.collect::<Vec<_>>();
17621774
let mut rpath_config = RPathConfig {
1763-
used_crates: &codegen_results.crate_info.used_crates_dynamic,
1775+
libs: &*libs,
17641776
out_filename: out_filename.to_path_buf(),
17651777
has_rpath: sess.target.has_rpath,
17661778
is_like_osx: sess.target.is_like_osx,
@@ -2121,7 +2133,7 @@ fn add_upstream_rust_crates<'a, B: ArchiveBuilder<'a>>(
21212133

21222134
// Invoke get_used_crates to ensure that we get a topological sorting of
21232135
// crates.
2124-
let deps = &codegen_results.crate_info.used_crates_dynamic;
2136+
let deps = &codegen_results.crate_info.used_crates;
21252137

21262138
// There's a few internal crates in the standard library (aka libcore and
21272139
// libstd) which actually have a circular dependence upon one another. This
@@ -2149,7 +2161,7 @@ fn add_upstream_rust_crates<'a, B: ArchiveBuilder<'a>>(
21492161
let mut required = FxHashSet::default();
21502162

21512163
let info = &codegen_results.crate_info;
2152-
for &(cnum, _) in deps.iter().rev() {
2164+
for &cnum in deps.iter().rev() {
21532165
if let Some(missing) = info.missing_lang_items.get(&cnum) {
21542166
let missing_crates = missing.iter().map(|i| info.lang_item_to_crate.get(i).copied());
21552167
required.extend(missing_crates);
@@ -2176,7 +2188,7 @@ fn add_upstream_rust_crates<'a, B: ArchiveBuilder<'a>>(
21762188

21772189
let mut compiler_builtins = None;
21782190

2179-
for &(cnum, _) in deps.iter() {
2191+
for &cnum in deps.iter() {
21802192
if group_start == Some(cnum) {
21812193
cmd.group_start();
21822194
}
@@ -2388,9 +2400,9 @@ fn add_upstream_native_libraries(
23882400
.find(|(ty, _)| *ty == crate_type)
23892401
.expect("failed to find crate type in dependency format list");
23902402

2391-
let crates = &codegen_results.crate_info.used_crates_static;
2403+
let crates = &codegen_results.crate_info.used_crates;
23922404
let mut last = (NativeLibKind::Unspecified, None);
2393-
for &(cnum, _) in crates {
2405+
for &cnum in crates {
23942406
for lib in codegen_results.crate_info.native_libraries[&cnum].iter() {
23952407
let name = match lib.name {
23962408
Some(l) => l,

compiler/rustc_codegen_ssa/src/back/rpath.rs

+7-12
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,8 @@ use std::env;
44
use std::fs;
55
use std::path::{Path, PathBuf};
66

7-
use rustc_hir::def_id::CrateNum;
8-
use rustc_middle::middle::cstore::LibSource;
9-
107
pub struct RPathConfig<'a> {
11-
pub used_crates: &'a [(CrateNum, LibSource)],
8+
pub libs: &'a [&'a Path],
129
pub out_filename: PathBuf,
1310
pub is_like_osx: bool,
1411
pub has_rpath: bool,
@@ -23,9 +20,7 @@ pub fn get_rpath_flags(config: &mut RPathConfig<'_>) -> Vec<String> {
2320

2421
debug!("preparing the RPATH!");
2522

26-
let libs = config.used_crates;
27-
let libs = libs.iter().filter_map(|&(_, ref l)| l.option()).collect::<Vec<_>>();
28-
let rpaths = get_rpaths(config, &libs);
23+
let rpaths = get_rpaths(config);
2924
let mut flags = rpaths_to_flags(&rpaths);
3025

3126
// Use DT_RUNPATH instead of DT_RPATH if available
@@ -52,17 +47,17 @@ fn rpaths_to_flags(rpaths: &[String]) -> Vec<String> {
5247
ret
5348
}
5449

55-
fn get_rpaths(config: &mut RPathConfig<'_>, libs: &[PathBuf]) -> Vec<String> {
50+
fn get_rpaths(config: &mut RPathConfig<'_>) -> Vec<String> {
5651
debug!("output: {:?}", config.out_filename.display());
5752
debug!("libs:");
58-
for libpath in libs {
53+
for libpath in config.libs {
5954
debug!(" {:?}", libpath.display());
6055
}
6156

6257
// Use relative paths to the libraries. Binaries can be moved
6358
// as long as they maintain the relative relationship to the
6459
// crates they depend on.
65-
let rpaths = get_rpaths_relative_to_output(config, libs);
60+
let rpaths = get_rpaths_relative_to_output(config);
6661

6762
debug!("rpaths:");
6863
for rpath in &rpaths {
@@ -73,8 +68,8 @@ fn get_rpaths(config: &mut RPathConfig<'_>, libs: &[PathBuf]) -> Vec<String> {
7368
minimize_rpaths(&rpaths)
7469
}
7570

76-
fn get_rpaths_relative_to_output(config: &mut RPathConfig<'_>, libs: &[PathBuf]) -> Vec<String> {
77-
libs.iter().map(|a| get_rpath_relative_to_output(config, a)).collect()
71+
fn get_rpaths_relative_to_output(config: &mut RPathConfig<'_>) -> Vec<String> {
72+
config.libs.iter().map(|a| get_rpath_relative_to_output(config, a)).collect()
7873
}
7974

8075
fn get_rpath_relative_to_output(config: &mut RPathConfig<'_>, lib: &Path) -> String {

compiler/rustc_codegen_ssa/src/back/rpath/tests.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ fn test_minimize2() {
3535
fn test_rpath_relative() {
3636
if cfg!(target_os = "macos") {
3737
let config = &mut RPathConfig {
38-
used_crates: &[],
38+
libs: &[],
3939
has_rpath: true,
4040
is_like_osx: true,
4141
linker_is_gnu: false,
@@ -45,7 +45,7 @@ fn test_rpath_relative() {
4545
assert_eq!(res, "@loader_path/../lib");
4646
} else {
4747
let config = &mut RPathConfig {
48-
used_crates: &[],
48+
libs: &[],
4949
out_filename: PathBuf::from("bin/rustc"),
5050
has_rpath: true,
5151
is_like_osx: false,

compiler/rustc_codegen_ssa/src/base.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@ use rustc_hir::def_id::{DefId, LOCAL_CRATE};
1919
use rustc_hir::lang_items::LangItem;
2020
use rustc_index::vec::Idx;
2121
use rustc_middle::middle::codegen_fn_attrs::CodegenFnAttrs;
22-
use rustc_middle::middle::cstore::EncodedMetadata;
23-
use rustc_middle::middle::cstore::{self, LinkagePreference};
22+
use rustc_middle::middle::cstore::{self, EncodedMetadata};
2423
use rustc_middle::middle::lang_items;
2524
use rustc_middle::mir::mono::{CodegenUnit, CodegenUnitNameBuilder, MonoItem};
2625
use rustc_middle::ty::layout::{HasTyCtxt, TyAndLayout};
@@ -779,8 +778,7 @@ impl CrateInfo {
779778
native_libraries: Default::default(),
780779
used_libraries: tcx.native_libraries(LOCAL_CRATE).iter().map(Into::into).collect(),
781780
crate_name: Default::default(),
782-
used_crates_dynamic: cstore::used_crates(tcx, LinkagePreference::RequireDynamic),
783-
used_crates_static: cstore::used_crates(tcx, LinkagePreference::RequireStatic),
781+
used_crates: cstore::used_crates(tcx),
784782
used_crate_source: Default::default(),
785783
lang_item_to_crate: Default::default(),
786784
missing_lang_items: Default::default(),

compiler/rustc_codegen_ssa/src/lib.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use rustc_data_structures::sync::Lrc;
2424
use rustc_hir::def_id::CrateNum;
2525
use rustc_hir::LangItem;
2626
use rustc_middle::dep_graph::WorkProduct;
27-
use rustc_middle::middle::cstore::{self, CrateSource, LibSource};
27+
use rustc_middle::middle::cstore::{self, CrateSource};
2828
use rustc_middle::middle::dependency_format::Dependencies;
2929
use rustc_middle::ty::query::Providers;
3030
use rustc_session::config::{OutputFilenames, OutputType, RUST_CGU_EXT};
@@ -144,8 +144,7 @@ pub struct CrateInfo {
144144
pub crate_name: FxHashMap<CrateNum, String>,
145145
pub used_libraries: Vec<NativeLib>,
146146
pub used_crate_source: FxHashMap<CrateNum, Lrc<CrateSource>>,
147-
pub used_crates_static: Vec<(CrateNum, LibSource)>,
148-
pub used_crates_dynamic: Vec<(CrateNum, LibSource)>,
147+
pub used_crates: Vec<CrateNum>,
149148
pub lang_item_to_crate: FxHashMap<LangItem, CrateNum>,
150149
pub missing_lang_items: FxHashMap<CrateNum, Vec<LangItem>>,
151150
pub dependency_formats: Lrc<Dependencies>,

0 commit comments

Comments
 (0)