In preparation for adding mark_dependence support. Required to support addressors (unsafeAddress) in places other than UnsafePointer.pointee.
This is a literal refactor. It formally separates the load optimizations and dead allocation optimizations, which are actually different algorithms. This obvious refactor will allow each optimization, which is fundamentally different to be naturally extended to handle other kinds of uses, like mark_dependence.
I made no attempt to update the code style. That's not the goal of this PR.
In preparation for adding mark_dependence support. Required to support addressors (unsafeAddress) in places other than UnsafePointer.pointee.
This is a literal refactor. It formally separates the load optimizations and dead allocation optimizations, which are actually different algorithms. This obvious refactor will allow each optimization, which is fundamentally different to be naturally extended to handle other kinds of uses, like mark_dependence.
I made no attempt to update the code style. That's not the goal of this PR.