|  | // skip-filecheck | 
|  | //@ test-mir-pass: CopyProp | 
|  |  | 
|  | #![feature(custom_mir, core_intrinsics)] | 
|  | #![allow(unused_assignments)] | 
|  | extern crate core; | 
|  | use core::intrinsics::mir::*; | 
|  |  | 
|  | #[custom_mir(dialect = "analysis", phase = "post-cleanup")] | 
|  | fn f(c: bool) -> bool { | 
|  | mir! { | 
|  | let a: bool; | 
|  | let b: bool; | 
|  | { | 
|  | Goto(bb1) | 
|  | } | 
|  | bb1 = { | 
|  | b = c; | 
|  | match b { false => bb3, _ => bb2 } | 
|  | } | 
|  | // This assignment to `a` does not dominate the use in `bb3`. | 
|  | // It should not be replaced by `b`. | 
|  | bb2 = { | 
|  | a = b; | 
|  | c = false; | 
|  | Goto(bb1) | 
|  | } | 
|  | bb3 = { | 
|  | RET = a; | 
|  | Return() | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | fn main() { | 
|  | assert_eq!(true, f(true)); | 
|  | } | 
|  |  | 
|  | // EMIT_MIR non_dominate.f.CopyProp.diff |