about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2017-06-19 08:45:00 +0000
committerbors <bors@rust-lang.org>2017-06-19 08:45:00 +0000
commit5ce5126199d0edf278ef0d9bb60534770d96f3f6 (patch)
tree5120864385a813ca8d605fbeaf3871a33a8d891d
parent8525eb820b2449569a7fa342ffcdd6633d4383bf (diff)
parent8723f287726073b43d3946838d930ce108d52988 (diff)
downloadrust-5ce5126199d0edf278ef0d9bb60534770d96f3f6.tar.gz
rust-5ce5126199d0edf278ef0d9bb60534770d96f3f6.zip
Auto merge of #42737 - fhahn:rust-log-crash, r=michaelwoerister
rustc: Check if def_path_hash_to_def_id is populated before accessing.

Without this patch, there is an ICE when running rustc with
RUST_LOG=debug. This patch updates extract_def_id to check if the map
has been populated before accessing it. This fixes the problem, but
maybe we do not need to compute the incremental hashes maps in the first
place when we are not in incremental mode?
-rw-r--r--src/librustc/dep_graph/dep_node.rs10
-rw-r--r--src/test/run-pass/rustc-rust-log.rs13
2 files changed, 18 insertions, 5 deletions
diff --git a/src/librustc/dep_graph/dep_node.rs b/src/librustc/dep_graph/dep_node.rs
index b061663148d..92efeb7fd86 100644
--- a/src/librustc/dep_graph/dep_node.rs
+++ b/src/librustc/dep_graph/dep_node.rs
@@ -257,11 +257,11 @@ macro_rules! define_dep_nodes {
             pub fn extract_def_id(&self, tcx: TyCtxt) -> Option<DefId> {
                 if self.kind.can_reconstruct_query_key() {
                     let def_path_hash = DefPathHash(self.hash);
-                    tcx.def_path_hash_to_def_id
-                       .as_ref()
-                       .unwrap()
-                       .get(&def_path_hash)
-                       .cloned()
+                    if let Some(ref def_path_map) = tcx.def_path_hash_to_def_id.as_ref() {
+                        def_path_map.get(&def_path_hash).cloned()
+                    } else {
+                       None
+                    }
                 } else {
                     None
                 }
diff --git a/src/test/run-pass/rustc-rust-log.rs b/src/test/run-pass/rustc-rust-log.rs
new file mode 100644
index 00000000000..629387d4cb1
--- /dev/null
+++ b/src/test/run-pass/rustc-rust-log.rs
@@ -0,0 +1,13 @@
+// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// rustc-env:RUST_LOG=debug
+
+fn main() {}