diff options
| author | Ömer Sinan Ağacan <omeragacan@gmail.com> | 2021-02-21 11:15:37 +0300 |
|---|---|---|
| committer | Ömer Sinan Ağacan <omeragacan@gmail.com> | 2021-02-22 17:36:30 +0300 |
| commit | 2145a8770c941f79e28cfdabd524ca2aea8ab2b4 (patch) | |
| tree | 464f1ef871af69349f4b32a06e3f1722c8747812 | |
| parent | 8a9f7862bcfa5870a34bb54f77a03c73d1db5c37 (diff) | |
| download | rust-2145a8770c941f79e28cfdabd524ca2aea8ab2b4.tar.gz rust-2145a8770c941f79e28cfdabd524ca2aea8ab2b4.zip | |
Fix mir-cfg dumps
Fixes #81918 Fixes #82326 (duplicate) Fixes #82325
| -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 == "" {} +} |
