This is a possible alternative to D153464. BasicAA currently assumes that an unescaped alloca cannot be read through non-nocapture arguments of a call, based on the argument that if the argument were based on the alloca, it would not be unescaped.
This currently fails in the case where the call is an ephemeral value and as such does not count as a capture. It could also happen if CaptureTracking were slightly smarter and continued following captures on call return values.
can you update this comment with your explanation so it's clearer?