Skip to content

Commit 1ca39d8

Browse files
committed
Iterate through localdecls properly
Add liveness flag where missing
1 parent 7c5c346 commit 1ca39d8

File tree

6 files changed

+63
-21
lines changed

6 files changed

+63
-21
lines changed

Cargo.lock

+55-12
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ dependencies = [
307307
"cargo-test-macro",
308308
"cargo-test-support",
309309
"cargo-util",
310-
"clap",
310+
"clap 3.2.5",
311311
"crates-io",
312312
"crossbeam-utils",
313313
"curl",
@@ -572,6 +572,22 @@ dependencies = [
572572
"winapi",
573573
]
574574

575+
[[package]]
576+
name = "clap"
577+
version = "2.34.0"
578+
source = "registry+https://github.com/rust-lang/crates.io-index"
579+
checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
580+
dependencies = [
581+
"ansi_term",
582+
"atty",
583+
"bitflags",
584+
"strsim 0.8.0",
585+
"textwrap 0.11.0",
586+
"unicode-width",
587+
"vec_map",
588+
"yaml-rust 0.3.5",
589+
]
590+
575591
[[package]]
576592
name = "clap"
577593
version = "3.2.5"
@@ -584,9 +600,9 @@ dependencies = [
584600
"clap_lex",
585601
"indexmap",
586602
"once_cell",
587-
"strsim",
603+
"strsim 0.10.0",
588604
"termcolor",
589-
"textwrap",
605+
"textwrap 0.15.0",
590606
]
591607

592608
[[package]]
@@ -595,7 +611,7 @@ version = "3.1.1"
595611
source = "registry+https://github.com/rust-lang/crates.io-index"
596612
checksum = "df6f3613c0a3cddfd78b41b10203eb322cb29b600cbdf808a7d3db95691b8e25"
597613
dependencies = [
598-
"clap",
614+
"clap 3.2.5",
599615
]
600616

601617
[[package]]
@@ -653,7 +669,7 @@ name = "clippy_dev"
653669
version = "0.0.1"
654670
dependencies = [
655671
"aho-corasick",
656-
"clap",
672+
"clap 3.2.5",
657673
"indoc",
658674
"itertools",
659675
"opener",
@@ -1226,7 +1242,7 @@ name = "expand-yaml-anchors"
12261242
version = "0.1.0"
12271243
dependencies = [
12281244
"yaml-merge-keys",
1229-
"yaml-rust",
1245+
"yaml-rust 0.4.4",
12301246
]
12311247

12321248
[[package]]
@@ -1846,7 +1862,7 @@ name = "installer"
18461862
version = "0.0.0"
18471863
dependencies = [
18481864
"anyhow",
1849-
"clap",
1865+
"clap 2.34.0",
18501866
"flate2",
18511867
"lazy_static",
18521868
"num_cpus",
@@ -2294,7 +2310,7 @@ dependencies = [
22942310
"ammonia",
22952311
"anyhow",
22962312
"chrono",
2297-
"clap",
2313+
"clap 3.2.5",
22982314
"clap_complete",
22992315
"elasticlunr-rs",
23002316
"env_logger 0.7.1",
@@ -3369,7 +3385,7 @@ dependencies = [
33693385
name = "rustbook"
33703386
version = "0.1.0"
33713387
dependencies = [
3372-
"clap",
3388+
"clap 3.2.5",
33733389
"env_logger 0.7.1",
33743390
"mdbook",
33753391
]
@@ -3457,7 +3473,7 @@ version = "1.0.0"
34573473
dependencies = [
34583474
"bstr",
34593475
"byteorder",
3460-
"clap",
3476+
"clap 3.2.5",
34613477
"crossbeam-utils",
34623478
"libc",
34633479
"libz-sys",
@@ -4646,7 +4662,7 @@ dependencies = [
46464662
"anyhow",
46474663
"bytecount",
46484664
"cargo_metadata",
4649-
"clap",
4665+
"clap 3.2.5",
46504666
"derive-new",
46514667
"diff",
46524668
"dirs",
@@ -5037,6 +5053,12 @@ dependencies = [
50375053
"vte",
50385054
]
50395055

5056+
[[package]]
5057+
name = "strsim"
5058+
version = "0.8.0"
5059+
source = "registry+https://github.com/rust-lang/crates.io-index"
5060+
checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
5061+
50405062
[[package]]
50415063
name = "strsim"
50425064
version = "0.10.0"
@@ -5177,6 +5199,15 @@ dependencies = [
51775199
"term",
51785200
]
51795201

5202+
[[package]]
5203+
name = "textwrap"
5204+
version = "0.11.0"
5205+
source = "registry+https://github.com/rust-lang/crates.io-index"
5206+
checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
5207+
dependencies = [
5208+
"unicode-width",
5209+
]
5210+
51805211
[[package]]
51815212
name = "textwrap"
51825213
version = "0.15.0"
@@ -5697,6 +5728,12 @@ version = "0.2.10"
56975728
source = "registry+https://github.com/rust-lang/crates.io-index"
56985729
checksum = "6454029bf181f092ad1b853286f23e2c507d8e8194d01d92da4a55c274a5508c"
56995730

5731+
[[package]]
5732+
name = "vec_map"
5733+
version = "0.8.2"
5734+
source = "registry+https://github.com/rust-lang/crates.io-index"
5735+
checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
5736+
57005737
[[package]]
57015738
name = "vergen"
57025739
version = "5.1.0"
@@ -5855,9 +5892,15 @@ checksum = "fd236a7dc9bb598f349fe4a8754f49181fee50284daa15cd1ba652d722280004"
58555892
dependencies = [
58565893
"lazy_static",
58575894
"thiserror",
5858-
"yaml-rust",
5895+
"yaml-rust 0.4.4",
58595896
]
58605897

5898+
[[package]]
5899+
name = "yaml-rust"
5900+
version = "0.3.5"
5901+
source = "registry+https://github.com/rust-lang/crates.io-index"
5902+
checksum = "e66366e18dc58b46801afbf2ca7661a9f59cc8c5962c29892b6039b4f86fa992"
5903+
58615904
[[package]]
58625905
name = "yaml-rust"
58635906
version = "0.4.4"

compiler/rustc_mir_build/src/build/matches/mod.rs

+2
Original file line numberDiff line numberDiff line change
@@ -2241,6 +2241,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
22412241
pat_span,
22422242
},
22432243
))))),
2244+
always_storage_live: false,
22442245
};
22452246
let for_arm_body = self.local_decls.push(local);
22462247
self.var_debug_info.push(VarDebugInfo {
@@ -2261,6 +2262,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
22612262
local_info: Some(Box::new(LocalInfo::User(ClearCrossCrate::Set(
22622263
BindingForm::RefForGuard,
22632264
)))),
2265+
always_storage_live: false,
22642266
});
22652267
self.var_debug_info.push(VarDebugInfo {
22662268
name,

compiler/rustc_mir_dataflow/src/storage.rs

+3-6
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,11 @@ use rustc_middle::mir::{self, HasLocalDecls, Local};
44
/// The set of locals in a MIR body that do not have `StorageLive`/`StorageDead` annotations.
55
///
66
/// These locals have fixed storage for the duration of the body.
7-
//
8-
// FIXME: Currently, we need to traverse the entire MIR to compute this. We should instead store it
9-
// as a field in the `LocalDecl` for each `Local`.
10-
pub fn always_storage_live_locals(body: &mir::Body<'_>) -> BitSet<Local> {
7+
pub fn always_live_locals(body: &mir::Body<'_>) -> BitSet<Local> {
118
let mut always_live_locals = BitSet::new_filled(body.local_decls.len());
129

13-
for local in body.local_decls() {
14-
if !local.always_storage_live {
10+
for (local, local_decl) in body.local_decls().iter_enumerated() {
11+
if !local_decl.always_storage_live {
1512
always_live_locals.remove(local);
1613
}
1714
}

src/tools/miri

Submodule miri updated 100 files

0 commit comments

Comments
 (0)