findlocaldata #20
Reference in New Issue
Block a user
Delete Branch "CP"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
@AntonMilienkov
@@ -832,7 +851,7 @@ void createCheckpoints(SgFile* file, const map<string, CommonBlock*>& commonBlocvector<SgExpression*> local;map<string, SgStatement*> localParams;set<string> addedToList;findLocalData(func->lexNext(), firstExec, local, localParams, addedToList);и тут
была немного изменена сигнатура функции и теперь она принимает не первый statement из объявления, а функцию (или название модуля). это нужно для того чтобы получить название функции и после - структуру FuncInfo
@@ -740,7 +759,7 @@ static void processModules(SgFile* file)vector<SgExpression*> local;map<string, SgStatement*> localParams;set<string> addedToList;findLocalData(mod->lexNext(), hasContains ? st : mod->lastNodeOfStmt(), local, localParams, addedToList);а зачем тут удаляется lexNext ?
@@ -3,6 +3,7 @@#include <vector>#include <string>#include <set>#include <iostream>этот заголовок для отладки использовлася?
да, впредь буду удалять
@@ -39,3 +40,3 @@static void findDecls(SgExpression* ex, vector<SgExpression*>& local, const map<string, SgStatement*>& localParams,set<string>& added)set<string>& added, std::set<std::string>& IntentInadded)std:: лишнее, так как сверху есть using namespace std;
ок
@@ -76,0 +90,4 @@{SgStatement* start = func->lexNext();FuncInfo* funcI = findFileInfoByName(func, allFuncInfo);зачем искать эту функцию заново, если она уже ищется до вызова ? ее нужно передать просто, и не передавать вектор
не понял про "заново", кажется, что не ищется. Эта функция взята из функции processFunctionCallChain (написанной студенткой) и этот код (если его раскомментить) выполняется позже. До вывзова findlocatedata ищется тоьлко название функции, в которой есть create checkpoint.
Так как подобный код есть в processFunctionCallChain, я решил выделить его в отдельную функцию
@@ -76,0 +93,4 @@FuncInfo* funcI = findFileInfoByName(func, allFuncInfo);std::set<std::string> IntentInadded;for (int i = 0; i < funcI->funcParams.countOfPars; ++i)if (funcI->funcParams.isArgIn(i) && !funcI->funcParams.isArgOut(i))есть еще isArgInOut, надо просто посмотреть доступные функции
isArgInOut реализован следующим образом:
bool isArgInOut(const int num) const
{
if (num >= countOfPars)
return false;
else
return isArgIn(num) && isArgOut(num);
}
Поэтому, если переменная не out, то она и не inout
@AntonMilienkov получается, что тут надо поправить std:: , удалить лишний инклуд и я бы еще переименовал IntentInadded -> IntentInParams