//! returns: 0
//! Regression test: address-of inside an if branch.
//!
//! When `&mut var` appears in only one branch of an if/else, the merge
//! block's phi merges the original integer value with a stack pointer.

unsafe fn store(ptr: *mut u32, val: u32) {
    set *ptr = val;
}

unsafe fn testIfBranch(cond: bool) -> u32 {
    let mut val: u32 = 42;
    if cond {
        store(&mut val, 99);
    }
    return val;
}

@default unsafe fn main() -> i32 {
    assert testIfBranch(false) == 42;
    assert testIfBranch(true) == 99;
    return 0;
}
