The main thing to notice about these changes is that I always picked the debug
scope associated with the location we were using. They should always be in
sync.
Avoid emitting unnecessary basic block for cleanup chains. This is a
general approach that handles all cases while simplifying SILGen
emission and keeping the CFG in a valid state during SILGen.