# tests that %b and %a0 do not end up in # the same register at the start of @loop export function l $f(l %a) { @start @loop %b =l phi @start 42, @loop0 %a1, @loop1 %a1 %a0 =l phi @start %a, @loop0 %a1, @loop1 %a1 %a1 =l sub %a0, 1 jnz %b, @loop0, @loop1 @loop0 jnz %a1, @loop, @end @loop1 jnz %a1, @loop, @end @end ret %b } # >>> driver # extern long long f(long long); # int main() { # return !(f(1) == 42 && f(2) == 1 && f(42) == 1); # } # <<<