This is a followup to D109844 (and alternative to D109907), which integrates the new "earliest escape" tracking into AliasAnalysis. This is done by replacing the pre-existing context-free capture cache in AAQueryInfo with a replaceable (virtual) object with two implementations: The SimpleCaptureInfo implements the previous behavior (check whether object is captured at all), while EarliestEscapeInfo implements the new behavior from DSE.
This combines the "earliest escape" analysis with the full power of BasicAA: It subsumes the call handling from D109907, considers a wider range of escape sources, a wider context, and works with AA recursion.
It does come at a slightly higher compile-time cost: http://llvm-compile-time-tracker.com/compare.php?from=1e3c6fc7cb9d2ee6a5328881f95d6643afeadbff&to=23296d5394689e40a0b4376f080cfab18c43442c&stat=instructions (The comparison point would be https://llvm-compile-time-tracker.com/compare.php?from=7faf1285f2c416494aacf7ee13e70e330b2f0540&to=a4964cf36bb0f777d82d6a1025435bbd9f67bc4f&stat=instructions for D109907).
clang-tidy: warning: 'llvm::CaptureInfo' has virtual functions but non-virtual destructor [clang-diagnostic-non-virtual-dtor]
not useful