Files
SAPFOR/Sapfor/_src/VerificationCode/verifications.h

53 lines
2.8 KiB
C
Raw Normal View History

2023-09-14 19:43:13 +03:00
#pragma once
#include <vector>
#include <string>
#include <map>
#include "dvm.h"
#include "../Utils/errors.h"
#include "../ParallelizationRegions/ParRegions.h"
#include "../ParallelizationRegions/ParRegions_func.h"
#include "../Utils/CommonBlock.h"
struct Function
{
std::string name;
std::string file;
int line;
SgStatement* point = NULL;
int parametersCount;
int type; // 0 - module, 1 - global, 2 - internal, 3 - internal in module
std::string parentName;
std::string globalName;
std::map<SgFile*, SgSymbol*> resolved;
};
bool EquivalenceChecker(SgFile *file, const std::string &fileName, const std::vector<ParallelRegion*> &regions, std::map<std::string, std::vector<Messages>> &currM);
bool CommonBlockChecker(SgFile *file, const std::string &fileName, const std::map<std::string, CommonBlock*> &commonBlocks, std::map<std::string, std::vector<Messages>> &messages);
bool EndDoLoopChecker(SgFile *file, std::vector<Messages> &currM);
bool IncludeChecker(SgFile *file, const std::string &fileName, std::vector<Messages> &currM);
void VarDeclCorrecter(SgFile *file);
bool DvmDirectiveChecker(SgFile *file, std::map<std::string, std::vector<int>> &errors, const int, const int);
bool FunctionsChecker(SgFile *file, std::map<std::string, std::pair<std::string, int>> &funcNames, std::map<std::string, std::vector<Messages>> &currMessages);
bool OperatorChecker(SgFile* file, std::map<std::string, std::vector<Messages>>& currMessages);
void fillFunctionInfo(SgFile* file, std::map<std::string, std::vector<Function>>& funcInfo);
void resolveFunctionCalls(SgFile* file, const std::set<std::string>& toResolve, const std::map<std::string, std::vector<Function>>& funcInfo);
bool checkAndMoveFormatOperators(SgFile* file, std::vector<Messages> &currMessage, bool withError = true);
int VerifyFile(SgFile *file);
void correctModuleProcNames(SgFile *file, const std::set<std::string>& globalF);
void correctModuleSymbols(SgFile *file);
void replaceStructuresToSimpleTypes(SgFile* file);
void restoreCorrectedModuleProcNames(SgFile *file);
bool checkArgumentsDeclaration(SgProject *project, const std::map<std::string, std::vector<FuncInfo*>> &allFuncInfo, const std::vector<ParallelRegion*> &regions, std::map<std::string, std::vector<Messages>> &SPF_messages);
void replaceDerivedAssigns(SgFile *file, SgStatement *stToCopy, SgStatement *insertB, const std::map<std::string, SgStatement*> &derivedTypesDecl);
bool isDerivedAssign(SgStatement *st);
std::map<std::string, SgStatement*> createDerivedTypeDeclMap(SgStatement *forS);
2023-11-05 18:20:31 +03:00
void removeExecutableFromModuleDeclaration(SgFile* current, const std::set<std::string>& filesInProj, std::vector<SgStatement*>& hiddenData);
2023-09-14 19:43:13 +03:00
bool needToReplaceInterfaceName(SgStatement* interf);
std::string getOrigName(const std::string& file, const std::string& s);