#pragma once #include #include #include "graph_loops.h" #include "../Distribution/DvmhDirective.h" struct SpfInterval; void loopGraphAnalyzer(SgFile *file, std::vector &loopGraph, const std::vector &statisticTimes, std::vector &messages, int sharedMemoryParallelization); void findAllRefsToLables(SgStatement *st, std::map> &labelsRef, bool includeWrite = true); std::map findAllDirectives(SgFile *file, const std::vector &loops, const uint64_t regId); std::vector, std::pair>> findAllSingleRemotes(SgFile *file, const uint64_t regId, std::vector ®ions); std::map> fillRemoteInParallel(Statement *st); bool hasThisIds(SgStatement *loop, std::set &lines, const std::set &IDs, const std::set* activeOps = NULL); bool checkRegionEntries(SgStatement *begin, SgStatement *end, const std::map &funcMap, const std::vector ¶llelRegions, std::map> &SPF_messages); bool recSymbolFind(SgExpression *ex, const std::string &symb, const int var); void completeFillOfArrayUsageBetweenProc(const std::map>& loopGraph, const std::map>& allFuncInfo); bool detectMpiCalls(SgProject* proj, std::map>& SPF_messages); int calculateLoopIters(SgExpression* start, SgExpression* end, SgExpression* step, std::tuple& result);