[LifetimeSafety] Implement a basic use-after-free diagnostic #149731
+525
−63
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.
Implement use-after-free detection in the lifetime safety analysis with two warning levels.
LifetimeSafetyReporter
interface for reporting lifetime safety issues-Wexperimental-lifetime-safety-permissive
)-Wexperimental-lifetime-safety-strict
)LifetimeChecker
class that analyzes loan propagation and expired loans to detect use-after-free issues.UseFact
class.ExpireFact
to track the expressions where objects are destroyed.The implementation now tracks pointer uses and can determine when a pointer is dereferenced after its loan has been expired, with appropriate diagnostics.
The two warning levels provide flexibility - definite errors for high-confidence issues and potential errors for cases that depend on control flow.