Closed nqpz closed 9 months ago
An interesting but in retrospect obvious bug, and the most surprising thing is that we have not seen it before.
The issue arises when we have more specific aliasing information available than is truly needed; in this case because we combine specific aliasing information from a tuple with more generic aliasing information from a type variable. We can shrink the program to this:
entry main (x: i32): (i32, bool) =
let localid x = x
in if true
then localid (x, false)
else localid (x, false)
Oh, actually we do handle that, but I just forgot to make the relationship symmetric...
The program
results in this error message when run with
futhark c
from git: