Yes, the deadstore pass needs to be upgraded to handle cases like this. It's been on the back burner for a while.
I think there are 2 things that are needed to make this work:
Instead of just recording the size of shadowed memory at each pointer, record an offset+size. Then we can fold OffPtr arguments into the analysis easily.
Handle LocalAddr ops somehow - these are currently treated as reads and mess up the analysis. The code conservatively assumes taking the address makes the zeroed temp visible, when in fact that address is only used for storing.