6 #ifndef JLM_LLVM_OPT_ALIAS_ANALYSES_ANDERSEN_HPP
7 #define JLM_LLVM_OPT_ALIAS_ANALYSES_ANDERSEN_HPP
220 [[nodiscard]] std::string
263 [[nodiscard]]
static std::vector<Configuration>
317 Analyze(const rvsdg::RvsdgModule & module, util::StatisticsCollector & statisticsCollector)
bool EnableOfflineConstraintNormalization_
bool EnableHybridCycleDetection_
void EnableOnlineCycleDetection(bool enable) noexcept
bool IsOfflineVariableSubstitutionEnabled() const noexcept
bool IsLazyCycleDetectionEnabled() const noexcept
bool EnableOnlineCycleDetection_
PointerObjectConstraintSet::WorklistSolverPolicy GetWorklistSoliverPolicy() const noexcept
void EnableDifferencePropagation(bool enable) noexcept
std::string ToString() const
bool EnableDifferencePropagation_
bool IsHybridCycleDetectionEnabled() const noexcept
void EnableHybridCycleDetection(bool enable) noexcept
bool IsPreferImplicitPointeesEnabled() const noexcept
bool IsDifferencePropagationEnabled() const noexcept
static Configuration NaiveSolverConfiguration() noexcept
void EnableOfflineConstraintNormalization(bool enable) noexcept
PointerObjectConstraintSet::WorklistSolverPolicy WorklistSolverPolicy_
void SetSolver(Solver solver) noexcept
bool IsOnlineCycleDetectionEnabled() const noexcept
static std::vector< Configuration > GetAllConfigurations()
bool EnablePreferImplicitPointees_
void EnablePreferImplicitPointees(bool enable) noexcept
bool EnableLazyCycleDetection_
static Configuration DefaultConfiguration()
void EnableOfflineVariableSubstitution(bool enable) noexcept
void SetWorklistSolverPolicy(PointerObjectConstraintSet::WorklistSolverPolicy policy) noexcept
bool IsOfflineConstraintNormalizationEnabled() const noexcept
void EnableLazyCycleDetection(bool enable) noexcept
Solver GetSolver() const noexcept
bool EnableOfflineVariableSubstitution_
void AnalyzeIOBarrier(const rvsdg::SimpleNode &node)
const Configuration & GetConfiguration() const
static void SolveConstraints(PointerObjectConstraintSet &constraints, const Configuration &config, Statistics &statistics)
void AnalyzeConstantPointerNull(const rvsdg::SimpleNode &node)
void SetConfiguration(Configuration config)
void AnalyzeValist(const rvsdg::SimpleNode &node)
void AnalyzePointerToFunction(const rvsdg::SimpleNode &node)
void AnalyzeStore(const rvsdg::SimpleNode &node)
static const char *const ENV_USE_EXACT_CONFIG
std::unique_ptr< PointerObjectSet > Set_
void AnalyzeUndef(const rvsdg::SimpleNode &node)
static std::unique_ptr< PointsToGraph > ConstructPointsToGraphFromPointerObjectSet(const PointerObjectSet &set, Statistics &statistics)
static const char *const ENV_DOUBLE_CHECK
void AnalyzeRegion(rvsdg::Region ®ion)
void AnalyzeGep(const rvsdg::SimpleNode &node)
~Andersen() noexcept override
void AnalyzeRvsdg(const rvsdg::Graph &graph)
void AnalyzeAlloca(const rvsdg::SimpleNode &node)
void AnalyzeModule(const rvsdg::RvsdgModule &module, Statistics &statistics)
void AnalyzePtrToInt(const rvsdg::SimpleNode &node)
std::unique_ptr< PointsToGraph > Analyze(const rvsdg::RvsdgModule &module, util::StatisticsCollector &statisticsCollector) override
void AnalyzeExtractValue(const rvsdg::SimpleNode &node)
void AnalyzeConstantArray(const rvsdg::SimpleNode &node)
void AnalyzeConstantAggregateZero(const rvsdg::SimpleNode &node)
void AnalyzeBitcast(const rvsdg::SimpleNode &node)
void AnalyzePhi(const rvsdg::PhiNode &node)
static const char *const ENV_DUMP_SUBSET_GRAPH
void AnalyzeMemcpy(const rvsdg::SimpleNode &node)
void AnalyzeCall(const rvsdg::SimpleNode &callNode)
void AnalyzeConstantStruct(const rvsdg::SimpleNode &node)
std::unique_ptr< PointerObjectConstraintSet > Constraints_
void AnalyzeTheta(const rvsdg::ThetaNode &node)
void AnalyzeMalloc(const rvsdg::SimpleNode &node)
void AnalyzeLambda(const rvsdg::LambdaNode &node)
void AnalyzeBits2ptr(const rvsdg::SimpleNode &node)
void AnalyzeLoad(const rvsdg::SimpleNode &node)
void AnalyzeSimpleNode(const rvsdg::SimpleNode &node)
void AnalyzeFunctionToPointer(const rvsdg::SimpleNode &node)
void AnalyzeGamma(const rvsdg::GammaNode &node)
void AnalyzeStructuralNode(const rvsdg::StructuralNode &node)
static const char *const ENV_TEST_ALL_CONFIGS
void AnalyzeDelta(const rvsdg::DeltaNode &node)
Points-to Analysis Interface.