Closed leissa closed 5 years ago
I suggest you try the following code, it's quite funny:
extern "C" { fn printf(&[u8]) -> (); }
fn main() -> () {
if !true { printf("If this is executed, all is lost\n"); }
}
More seriously, the allset
function is broken for booleans. That was the bug. The transformation from xor
to or
performed by LLVM is actually correct (only the highest bit is changed in fact).
Ah, i see. That was a tough one. A miracle that this problem didn't pop up earlier :)
Can you give the dead_load_opt
another shot on your code?
Everything seems to work but there are still moderate/severe performance regressions for GPU code. I am looking into this.
Merged.
removes SSA construction stuff and just relies on the
resolve_loads
.