- Notifications
You must be signed in to change notification settings - Fork 83
Open
Labels
bugSomething isn't workingSomething isn't working
Description
This program has a different result under GCC debug and GCC release.
2 1 //debug 2 -1 // release fn dump_var(var2: usize, val2: usize, var3: usize) { println!("val2:{val2}") } #[inline(never)] fn dump_var2(var2: usize, val2: usize, var3: usize) { println!("val2:{val2}") } fn fn6(arg: bool, arg2: usize) -> bool { dump_var(0, arg2, 0); dump_var2(0, !arg as usize, 0); true } fn main() { let mut _1 = false; let mut _3 = 2; let mut _4 = (&1, 1); loop { if _4.1 == 0 { if _4.1 == 1 { _1 = true; } else { _1 = false; } } else if fn6(_1, _3) { loop { _3 = _4.1; let mut _6 = 0; _6 = 0; let tmp2 = _6; if tmp2 == 1 { _4.0 = &_4.1 } else if tmp2 == 0 { return; } else { break; } } } } }It looks like the cast of val as i128 is nonsensical. Since val is a boolean value, one would expect it to be either 1 or 0, and not -1.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working