* Discover deferrable allocas in a separate pass before applying changes
in order to avoid double work.
* Defer allocas to just before the first user or the terminator, if no
user exists in the target block.
* Move allocas when the target block is the same as the original block.