-;;; We cannot combine with a successor block if:
-;;; 1. The successor has more than one predecessor.
-;;; 2. The last node's CONT is also used somewhere else.
-;;; 3. The successor is the current block (infinite loop).
-;;; 4. The next block has a different cleanup, and thus we may want
-;;; to insert cleanup code between the two blocks at some point.
-;;; 5. The next block has a different home lambda, and thus the
-;;; control transfer is a non-local exit.
-;;;
-;;; If we succeed, we return true, otherwise false.
-;;;
-;;; Joining is easy when the successor's Start continuation is the
-;;; same from our Last's Cont. If they differ, then we can still join
-;;; when the last continuation has no next and the next continuation
-;;; has no uses. In this case, we replace the next continuation with
-;;; the last before joining the blocks.