diff options
| author | Dylan DPC <dylan.dpc@gmail.com> | 2021-02-23 16:10:29 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-02-23 16:10:29 +0100 |
| commit | aa1405fff7f3856ab1e2cb2ea84d73c5a6017c28 (patch) | |
| tree | fdbc855c0a9eec5ace437656eccc102c7b2810c6 | |
| parent | 619e47b8866ee84b4ddd23e04a486922f5921c11 (diff) | |
| parent | 2145a8770c941f79e28cfdabd524ca2aea8ab2b4 (diff) | |
| download | rust-aa1405fff7f3856ab1e2cb2ea84d73c5a6017c28.tar.gz rust-aa1405fff7f3856ab1e2cb2ea84d73c5a6017c28.zip | |
Rollup merge of #82362 - osa1:issue81918, r=oli-obk
Fix mir-cfg dumps Fixes #81918 Fixes #82326 (duplicate) Fixes #82325 --- r? ``@oli-obk``
| -rw-r--r-- | compiler/rustc_mir/src/util/graphviz.rs | 23 | ||||
| -rw-r--r-- | src/test/ui/issues/issue-81918.rs | 11 |
2 files changed, 29 insertions, 5 deletions
diff --git a/compiler/rustc_mir/src/util/graphviz.rs b/compiler/rustc_mir/src/util/graphviz.rs index 37498e50c0e..92c7a358c0a 100644 --- a/compiler/rustc_mir/src/util/graphviz.rs +++ b/compiler/rustc_mir/src/util/graphviz.rs @@ -2,7 +2,7 @@ use gsgdt::GraphvizSettings; use rustc_graphviz as dot; use rustc_hir::def_id::DefId; use rustc_middle::mir::*; -use rustc_middle::ty::TyCtxt; +use rustc_middle::ty::{self, TyCtxt}; use std::fmt::Debug; use std::io::{self, Write}; @@ -16,14 +16,27 @@ where { let def_ids = dump_mir_def_ids(tcx, single); - let use_subgraphs = def_ids.len() > 1; + let mirs = + def_ids + .iter() + .flat_map(|def_id| { + if tcx.is_const_fn_raw(*def_id) { + vec![tcx.optimized_mir(*def_id), tcx.mir_for_ctfe(*def_id)] + } else { + vec![tcx.instance_mir(ty::InstanceDef::Item(ty::WithOptConstParam::unknown( + *def_id, + )))] + } + }) + .collect::<Vec<_>>(); + + let use_subgraphs = mirs.len() > 1; if use_subgraphs { writeln!(w, "digraph __crate__ {{")?; } - for def_id in def_ids { - let body = &tcx.optimized_mir(def_id); - write_mir_fn_graphviz(tcx, body, use_subgraphs, w)?; + for mir in mirs { + write_mir_fn_graphviz(tcx, mir, use_subgraphs, w)?; } if use_subgraphs { diff --git a/src/test/ui/issues/issue-81918.rs b/src/test/ui/issues/issue-81918.rs new file mode 100644 index 00000000000..8938b8a6f2c --- /dev/null +++ b/src/test/ui/issues/issue-81918.rs @@ -0,0 +1,11 @@ +// check-pass +// dont-check-compiler-stdout +// compile-flags: -Z unpretty=mir-cfg + +// This checks that unpretty=mir-cfg does not panic. See #81918. + +const TAG: &'static str = "ABCD"; + +fn main() { + if TAG == "" {} +} |
