6 #ifndef JLM_LLVM_OPT_ALIAS_ANALYSES_MEMORYSTATEENCODER_HPP
7 #define JLM_LLVM_OPT_ALIAS_ANALYSES_MEMORYSTATEENCODER_HPP
28 class StatisticsCollector;
74 rvsdg::RvsdgModule & rvsdgModule,
76 util::StatisticsCollector & statisticsCollector);
101 EncodeFree(const rvsdg::SimpleNode & freeNode);
104 EncodeCall(const rvsdg::SimpleNode & callNode);
119 EncodePhi(const rvsdg::PhiNode & phiNode);
136 std::vector<rvsdg::Output *>
141 rvsdg::ThetaNode & thetaNode,
142 const std::vector<rvsdg::Output *> & thetaStateOutputs);
153 [[nodiscard]] static rvsdg::SimpleNode &
155 const rvsdg::SimpleNode & node,
156 const std::vector<rvsdg::Output *> & memoryStates);
167 [[nodiscard]] static rvsdg::SimpleNode &
169 const rvsdg::SimpleNode & node,
170 const std::vector<rvsdg::Output *> & memoryStates);
182 [[nodiscard]] static std::vector<rvsdg::Output *>
184 const rvsdg::SimpleNode & memcpyNode,
185 const std::vector<rvsdg::Output *> & memoryStates);
Context for the memory state encoder.
static std::vector< rvsdg::Output * > ReplaceMemcpyNode(const rvsdg::SimpleNode &memcpyNode, const std::vector< rvsdg::Output * > &memoryStates)
void EncodeMalloc(const rvsdg::SimpleNode &mallocNode)
void Encode(rvsdg::RvsdgModule &rvsdgModule, const ModRefSummary &modRefSummary, util::StatisticsCollector &statisticsCollector)
void EncodeCall(const rvsdg::SimpleNode &callNode)
void EncodeLambdaEntry(const rvsdg::LambdaNode &lambdaNode)
void EncodeAlloca(const rvsdg::SimpleNode &allocaNode)
static rvsdg::SimpleNode & ReplaceStoreNode(const rvsdg::SimpleNode &node, const std::vector< rvsdg::Output * > &memoryStates)
void EncodeStructuralNode(rvsdg::StructuralNode &structuralNode)
void EncodeDelta(const rvsdg::DeltaNode &deltaNode)
void EncodeLambda(const rvsdg::LambdaNode &lambda)
void EncodeLoad(const rvsdg::SimpleNode &node)
void EncodeGammaExit(rvsdg::GammaNode &gammaNode)
void EncodeStore(const rvsdg::SimpleNode &node)
std::unique_ptr< Context > Context_
void EncodeGammaEntry(rvsdg::GammaNode &gammaNode)
void EncodeRegion(rvsdg::Region ®ion)
static rvsdg::SimpleNode & ReplaceLoadNode(const rvsdg::SimpleNode &node, const std::vector< rvsdg::Output * > &memoryStates)
~MemoryStateEncoder() noexcept
void EncodeSimpleNode(const rvsdg::SimpleNode &simpleNode)
std::vector< rvsdg::Output * > EncodeThetaEntry(rvsdg::ThetaNode &thetaNode)
void EncodePhi(const rvsdg::PhiNode &phiNode)
void EncodeMemcpy(const rvsdg::SimpleNode &memcpyNode)
void EncodeGamma(rvsdg::GammaNode &gammaNode)
void EncodeFree(const rvsdg::SimpleNode &freeNode)
void EncodeLambdaExit(const rvsdg::LambdaNode &lambdaNode)
void EncodeThetaExit(rvsdg::ThetaNode &thetaNode, const std::vector< rvsdg::Output * > &thetaStateOutputs)
void EncodeTheta(rvsdg::ThetaNode &thetaNode)
Global memory state passed between functions.