Also, handle some other missing instructions in the AddressDefUseWalker, which are visited in the AddressUseDefWalker.
This enables various other optimizations, like copy elimination, in the presence of `drop_deinit`.
rdar://152307747
The `unchecked_ref_cast` is designed to be able to cast between
`Optional<ClassType>` and `ClassType`. We need to handle these cases by
checking if the type is optional and adjust the path accordingly.
We need to ignore such casts because otherwise the constructed walking path wouldn't contain the right `existential` field kind.
Fixes a miscompile caused by redundant load elimination.
rdar://132364917