7 #ifndef JLM_LLVM_OPT_ALIAS_ANALYSES_REGIONAWAREMODREFSUMMARIZER_HPP
8 #define JLM_LLVM_OPT_ALIAS_ANALYSES_REGIONAWAREMODREFSUMMARIZER_HPP
16 class RegionAwareModRefSummary;
72 const rvsdg::RvsdgModule & rvsdgModule,
74 util::StatisticsCollector & statisticsCollector) override;
87 const rvsdg::RvsdgModule & rvsdgModule,
89 util::StatisticsCollector & statisticsCollector);
202 AnnotateRegion(const rvsdg::Region & region, const rvsdg::LambdaNode & lambda);
206 const rvsdg::StructuralNode & structuralNode,
207 const rvsdg::LambdaNode & lambda);
210 AnnotateSimpleNode(const rvsdg::SimpleNode & simpleNode, const rvsdg::LambdaNode & lambda);
222 const rvsdg::Output & origin,
223 std::optional<
size_t> minTargetSize,
224 const rvsdg::LambdaNode & lambda);
227 AnnotateLoad(const rvsdg::SimpleNode & loadNode, const rvsdg::LambdaNode & lambda);
230 AnnotateStore(const rvsdg::SimpleNode & storeNode, const rvsdg::LambdaNode & lambda);
239 AnnotateFree(const rvsdg::SimpleNode & freeNode, const rvsdg::LambdaNode & lambda);
242 AnnotateMemcpy(const rvsdg::SimpleNode & memcpyNode, const rvsdg::LambdaNode & lambda);
245 AnnotateCall(const rvsdg::SimpleNode & callNode, const rvsdg::LambdaNode & lambda);
Region-aware mod/ref summarizer statistics.
Region-aware mod/ref summarizer.
ModRefSetIndex AnnotateStore(const rvsdg::SimpleNode &storeNode, const rvsdg::LambdaNode &lambda)
void SolveModRefSetConstraintGraph()
static util::HashSet< PointsToGraph::NodeIndex > CreateSimpleAllocaSet(const PointsToGraph &pointsToGraph)
void FindAllocasDeadInSccs()
ModRefSetIndex AnnotateLoad(const rvsdg::SimpleNode &loadNode, const rvsdg::LambdaNode &lambda)
void AddPointerOriginTargets(ModRefSetIndex modRefSetIndex, const rvsdg::Output &origin, std::optional< size_t > minTargetSize, const rvsdg::LambdaNode &lambda)
ModRefSetIndex AnnotateMemcpy(const rvsdg::SimpleNode &memcpyNode, const rvsdg::LambdaNode &lambda)
static std::unique_ptr< ModRefSummary > Create(const rvsdg::RvsdgModule &rvsdgModule, const PointsToGraph &pointsToGraph, util::StatisticsCollector &statisticsCollector)
void AddModRefSetBlocklist(ModRefSetIndex index, const util::HashSet< PointsToGraph::NodeIndex > &blocklist)
~RegionAwareModRefSummarizer() noexcept override
std::optional< ModRefSetIndex > AnnotateSimpleNode(const rvsdg::SimpleNode &simpleNode, const rvsdg::LambdaNode &lambda)
std::unique_ptr< RegionAwareModRefSummary > ModRefSummary_
ModRefSetIndex AnnotateMalloc(const rvsdg::SimpleNode &mallocNode)
void AddModRefSimpleConstraint(ModRefSetIndex from, ModRefSetIndex to)
bool IsRecursionPossible(const rvsdg::LambdaNode &lambda) const
static std::string CallGraphSCCsToString(const RegionAwareModRefSummarizer &summarizer)
std::unique_ptr< ModRefSummary > SummarizeModRefs(const rvsdg::RvsdgModule &rvsdgModule, const PointsToGraph &pointsToGraph, util::StatisticsCollector &statisticsCollector) override
void createCallGraph(const rvsdg::RvsdgModule &rvsdgModule)
bool VerifyBlocklists() const
static std::string ToRegionTree(const rvsdg::Graph &rvsdg, const RegionAwareModRefSummary &modRefSummary)
size_t CreateNonReentrantAllocaSets()
ModRefSetIndex AnnotateRegion(const rvsdg::Region ®ion, const rvsdg::LambdaNode &lambda)
void CreateExternalModRefSet()
std::unique_ptr< Context > Context_
util::HashSet< PointsToGraph::NodeIndex > GetSimpleAllocasReachableFromRegionArguments(const rvsdg::Region ®ion)
void AnnotateFunction(const rvsdg::LambdaNode &lambda)
ModRefSetIndex AnnotateFree(const rvsdg::SimpleNode &freeNode, const rvsdg::LambdaNode &lambda)
ModRefSetIndex AnnotateStructuralNode(const rvsdg::StructuralNode &structuralNode, const rvsdg::LambdaNode &lambda)
ModRefSetIndex AnnotateCall(const rvsdg::SimpleNode &callNode, const rvsdg::LambdaNode &lambda)
ModRefSetIndex AnnotateAlloca(const rvsdg::SimpleNode &allocaNode)
Mod/Ref summary of region-aware mod/ref summarizer.