The way we detected if limit had spilled a variable
was incorrect. This is because two consecutive calls
to limit could require a spill of the same variable.
Instead, we now use a return value from limit.
Note that this is still not so ideal. Indeed, it works
properly only when limit spills one value only, if not,
we should return a bitset. In the current use scheme
of limit, this invariant is true but ideally we would
like to call limit with *all arguments added at once*,
not one after the other.