[Analyzer][solver][NFC] Add explanatory comments to trivial eq classes

Differential Revision: https://reviews.llvm.org/D106370
This commit is contained in:
Gabor Marton 2021-07-20 17:34:02 +02:00
parent 21401a7262
commit 732a8a9dfb
1 changed files with 12 additions and 0 deletions
clang/lib/StaticAnalyzer/Core

View File

@ -559,8 +559,20 @@ public:
/// Return a set of class members for the given state.
LLVM_NODISCARD inline SymbolSet getClassMembers(ProgramStateRef State) const;
/// Return true if the current class is trivial in the given state.
/// A class is trivial if and only if there is not any member relations stored
/// to it in State/ClassMembers.
/// An equivalence class with one member might seem as it does not hold any
/// meaningful information, i.e. that is a tautology. However, during the
/// removal of dead symbols we do not remove classes with one member for
/// resource and performance reasons. Consequently, a class with one member is
/// not necessarily trivial. It could happen that we have a class with two
/// members and then during the removal of dead symbols we remove one of its
/// members. In this case, the class is still non-trivial (it still has the
/// mappings in ClassMembers), even though it has only one member.
LLVM_NODISCARD inline bool isTrivial(ProgramStateRef State) const;
/// Return true if the current class is trivial and its only member is dead.
LLVM_NODISCARD inline bool isTriviallyDead(ProgramStateRef State,
SymbolReaper &Reaper) const;