Cache absence of lifetime dependencies during deserialization #77016
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes rdar://136769990
Absence of lifetime dependencies weren't cached which resulted in running
LifetimeDependence::infer
on deserialized decls.USRGenerationRequest::evaluate
can call toInterfaceTypeRequest::evaluate
which in turn callsLifetimeDependence::infer
which ends up callingUSRGenerationRequest::evaluate
due to a call togetLoc()
leading to circular reference errors in a previous revision of the compiler.This isn't an existing issue on main because the call to
getLoc()
inLifetimeDependence::infer
only happens when result is~Escapable
. Fixing this anyhow, to avoidLifetimeDependence::infer
on deserialized decls.