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,
101 EncodeFree(const rvsdg::SimpleNode & freeNode);
104 EncodeCall(const rvsdg::SimpleNode & callNode);
122 EncodePhi(const rvsdg::PhiNode & phiNode);
139 std::vector<rvsdg::Output *>
144 rvsdg::ThetaNode & thetaNode,
145 const std::vector<rvsdg::Output *> & thetaStateOutputs);
156 [[nodiscard]] static rvsdg::SimpleNode &
158 const rvsdg::SimpleNode & node,
159 const std::vector<rvsdg::Output *> & memoryStates);
170 [[nodiscard]] static rvsdg::SimpleNode &
172 const rvsdg::SimpleNode & node,
173 const std::vector<rvsdg::Output *> & memoryStates);
185 [[nodiscard]] static std::vector<rvsdg::Output *>
187 const rvsdg::SimpleNode & memcpyNode,
188 const std::vector<rvsdg::Output *> & memoryStates);
200 [[nodiscard]] static std::vector<rvsdg::Output *>
202 const rvsdg::SimpleNode & memsetNode,
203 const std::vector<rvsdg::Output *> & memoryStates);
static jlm::util::StatisticsCollector statisticsCollector
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)
static std::vector< rvsdg::Output * > ReplaceMemsetNode(const rvsdg::SimpleNode &memsetNode, const std::vector< rvsdg::Output * > &memoryStates)
void EncodeMemcpy(const rvsdg::SimpleNode &memcpyNode)
void EncodeGamma(rvsdg::GammaNode &gammaNode)
void EncodeFree(const rvsdg::SimpleNode &freeNode)
void EncodeMemset(const rvsdg::SimpleNode &memsetNode)
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.