6 #ifndef JLM_LLVM_OPT_ALIAS_ANALYSES_LAZYCYCLEDETECTION_HPP
7 #define JLM_LLVM_OPT_ALIAS_ANALYSES_LAZYCYCLEDETECTION_HPP
26 template<
typename GetSuccessorsFunctor,
typename UnifyPo
interObjectsFunctor>
33 const GetSuccessorsFunctor & GetSuccessors,
34 const UnifyPointerObjectsFunctor & unifyPointerObjects)
63 std::optional<PointerObjectIndex>
94 if (successorRoot == subset)
112 if (successorRoot == subset)
129 if (subset == superset)
const UnifyPointerObjectsFunctor & UnifyPointerObjects_
size_t NumCycleUnifications() const noexcept
size_t NumCycleDetectAttempts_
static constexpr uint8_t NodeStateNotVisited
size_t NumCyclesDetected() const noexcept
static constexpr uint8_t NodeStateVisited
util::HashSet< std::pair< PointerObjectIndex, PointerObjectIndex > > CheckedEdges_
size_t NumCycleDetectionAttempts() const noexcept
size_t NumCycleUnifications_
std::stack< PointerObjectIndex > DfsStack_
const GetSuccessorsFunctor & GetSuccessors_
LazyCycleDetector(PointerObjectSet &set, const GetSuccessorsFunctor &GetSuccessors, const UnifyPointerObjectsFunctor &unifyPointerObjects)
bool IsInitialized() const noexcept
std::vector< uint8_t > NodeStates_
size_t NumCyclesDetected_
static constexpr uint8_t NodeStatePopped
std::optional< PointerObjectIndex > OnPropagatedNothing(PointerObjectIndex subset, PointerObjectIndex superset)
PointerObjectIndex GetUnificationRoot(PointerObjectIndex index) const noexcept
bool IsUnificationRoot(PointerObjectIndex index) const noexcept
size_t NumPointerObjects() const noexcept
bool insert(ItemType item)
uint32_t PointerObjectIndex