diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2021-11-06 23:12:06 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-11-06 23:12:06 +0100 |
| commit | ec471de865b6f93f384d1903cc53c39a6057a8aa (patch) | |
| tree | 0ecd233e105bb14a13334c70f0fa2102e40352b7 | |
| parent | 43fee0e0a9ffae276d5b0e92e3243a6eccaadcd7 (diff) | |
| parent | a3776d99ccdd60d3f880005e4fe4e9478768ea41 (diff) | |
| download | rust-ec471de865b6f93f384d1903cc53c39a6057a8aa.tar.gz rust-ec471de865b6f93f384d1903cc53c39a6057a8aa.zip | |
Rollup merge of #90649 - cjgillot:reveal-all-2, r=lcnr
Run reveal_all on MIR when inlining is activated. Fix logic error in https://github.com/rust-lang/rust/pull/85254 which prevented the pass from running when needed. Fixes https://github.com/rust-lang/rust/issues/78442 r? ``@lcnr``
| -rw-r--r-- | compiler/rustc_mir_transform/src/reveal_all.rs | 2 | ||||
| -rw-r--r-- | src/test/mir-opt/issue-78192.rs | 4 |
2 files changed, 4 insertions, 2 deletions
diff --git a/compiler/rustc_mir_transform/src/reveal_all.rs b/compiler/rustc_mir_transform/src/reveal_all.rs index 7b4eb4912cb..6c423a2bb57 100644 --- a/compiler/rustc_mir_transform/src/reveal_all.rs +++ b/compiler/rustc_mir_transform/src/reveal_all.rs @@ -11,7 +11,7 @@ impl<'tcx> MirPass<'tcx> for RevealAll { fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) { // This pass must run before inlining, since we insert callee bodies in RevealAll mode. // Do not apply this transformation to generators. - if (tcx.sess.mir_opt_level() >= 3 || !super::inline::is_enabled(tcx)) + if (tcx.sess.mir_opt_level() >= 3 || super::inline::is_enabled(tcx)) && body.generator.is_none() { let param_env = tcx.param_env_reveal_all_normalized(body.source.def_id()); diff --git a/src/test/mir-opt/issue-78192.rs b/src/test/mir-opt/issue-78192.rs index 906d094f72b..39f665402b0 100644 --- a/src/test/mir-opt/issue-78192.rs +++ b/src/test/mir-opt/issue-78192.rs @@ -1,4 +1,4 @@ -// EMIT_MIR issue_78192.f.InstCombine.diff +// compile-flags: -Zmir-opt-level=1 -Zinline-mir pub fn f<T>(a: &T) -> *const T { let b: &*const T = &(a as *const T); *b @@ -7,3 +7,5 @@ pub fn f<T>(a: &T) -> *const T { fn main() { f(&2); } + +// EMIT_MIR issue_78192.f.InstCombine.diff |
