Backports from backend

The most important bit is fix for erasure, that was emitting such code:

```
def tailRec(x: Int): Unit = {
  if scala.Int.unbox(x).<(0) then {
    x
    ()
  } else {
    println(scala.Int.box(x))
    C.tailRec(scala.Int.unbox(x).-(1))
  }
}
```