Found this with the local dead code pass, which never saw variable dereferences occurring.
This is pretty basic. Right now it only handles pure assignments -- same type on each side, no swizzling, and only within basic blocks.