This commit is contained in:
2025-03-12 12:37:19 +03:00
committed by Dudarenko
parent 0c9f0664fd
commit d4fb323f86
428 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,30 @@
#pragma once
#include "../GraphLoop/graph_loops_func.h"
#include "../GraphCall/graph_calls_func.h"
#include <vector>
#include <string>
#include <map>
struct LoopCheckResults
{
bool usesIO;
bool hasImpureCalls;
std::vector<int> linesOfIO;
LoopCheckResults() : usesIO(false), hasImpureCalls(false) { }
LoopCheckResults(bool io, bool calls) : usesIO(io), hasImpureCalls(calls) { }
};
class LoopChecker
{
std::vector<LoopGraph*> &loopGraph;
LoopCheckResults checkLoopForPurenessAndIO(const LoopGraph *loopNode, const std::map<std::string, FuncInfo*> &allFuncs) const;
LoopCheckResults updateLoopNode(LoopGraph *loop, const std::map<std::string, FuncInfo*> &allFuncs);
public:
explicit LoopChecker(std::vector<LoopGraph*> &graph) : loopGraph(graph) { }
void updateLoopGraph(const std::map<std::string, FuncInfo*> &allFuncs);
};