rega1.ssa 457 B

123456789101112131415161718192021222324
  1. # tests that %b and %a0 do not end up in
  2. # the same register at the start of @loop
  3. export function l $f(l %a) {
  4. @start
  5. @loop
  6. %b =l phi @start 42, @loop0 %a1, @loop1 %a1
  7. %a0 =l phi @start %a, @loop0 %a1, @loop1 %a1
  8. %a1 =l sub %a0, 1
  9. jnz %b, @loop0, @loop1
  10. @loop0
  11. jnz %a1, @loop, @end
  12. @loop1
  13. jnz %a1, @loop, @end
  14. @end
  15. ret %b
  16. }
  17. # >>> driver
  18. # extern long long f(long long);
  19. # int main() {
  20. # return !(f(1) == 42 && f(2) == 1 && f(42) == 1);
  21. # }
  22. # <<<