refactored
This commit is contained in:
@@ -313,7 +313,7 @@ static void CheckVariable(SgStatement* st, SgExpression* exp, unordered_map<stri
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ArrayConstantPropagation(SgProject& project)
|
void arrayConstantPropagation(SgProject& project)
|
||||||
{
|
{
|
||||||
unordered_map<string, SgExpression*> arrayToVariable;
|
unordered_map<string, SgExpression*> arrayToVariable;
|
||||||
int variableNumber = 0;
|
int variableNumber = 0;
|
||||||
|
|||||||
@@ -17,4 +17,4 @@ struct ExprRestoreEntry
|
|||||||
SgExpression* savedCopy;
|
SgExpression* savedCopy;
|
||||||
};
|
};
|
||||||
|
|
||||||
void ArrayConstantPropagation(SgProject& project);
|
void arrayConstantPropagation(SgProject& project);
|
||||||
@@ -419,7 +419,7 @@ static void AddPrivateArraysToLoop(LoopGraph* loop, const ArrayAccessingIndexes&
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FindPrivateArrays(map<string, vector<LoopGraph*>>& loopGraph, map<FuncInfo*, vector<SAPFOR::BasicBlock*>>& FullIR, set<SgStatement*>& insertedPrivates)
|
void findPrivateArrays(map<string, vector<LoopGraph*>>& loopGraph, map<FuncInfo*, vector<SAPFOR::BasicBlock*>>& FullIR, set<SgStatement*>& insertedPrivates)
|
||||||
{
|
{
|
||||||
map<LoopGraph*, ArrayAccessingIndexes> result;
|
map<LoopGraph*, ArrayAccessingIndexes> result;
|
||||||
for (const auto& [fileName, loops] : loopGraph)
|
for (const auto& [fileName, loops] : loopGraph)
|
||||||
|
|||||||
@@ -9,5 +9,4 @@
|
|||||||
#include "graph_loops.h"
|
#include "graph_loops.h"
|
||||||
#include "CFGraph/CFGraph.h"
|
#include "CFGraph/CFGraph.h"
|
||||||
|
|
||||||
void FindPrivateArrays(std::map<std::string, std::vector<LoopGraph*>>& loopGraph, std::map<FuncInfo*, std::vector<SAPFOR::BasicBlock*>>& FullIR, std::set<SgStatement*>& insertedPrivates);
|
void findPrivateArrays(std::map<std::string, std::vector<LoopGraph*>>& loopGraph, std::map<FuncInfo*, std::vector<SAPFOR::BasicBlock*>>& FullIR, std::set<SgStatement*>& insertedPrivates);
|
||||||
std::pair<SAPFOR::BasicBlock*, std::unordered_set<SAPFOR::BasicBlock*>> GetBasicBlocksForLoop(const LoopGraph* loop, const std::vector<SAPFOR::BasicBlock*> blocks);
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ static bool isParentStmt(SgStatement* stmt, SgStatement* parent)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*returns head block and loop*/
|
/*returns head block and loop*/
|
||||||
pair<SAPFOR::BasicBlock*, unordered_set<SAPFOR::BasicBlock*>> GetBasicBlocksForLoop(const LoopGraph* loop, const vector<SAPFOR::BasicBlock*> blocks)
|
static pair<SAPFOR::BasicBlock*, unordered_set<SAPFOR::BasicBlock*>> GetBasicBlocksForLoop(const LoopGraph* loop, const vector<SAPFOR::BasicBlock*> blocks)
|
||||||
{
|
{
|
||||||
unordered_set<SAPFOR::BasicBlock*> block_loop;
|
unordered_set<SAPFOR::BasicBlock*> block_loop;
|
||||||
SAPFOR::BasicBlock* head_block = nullptr;
|
SAPFOR::BasicBlock* head_block = nullptr;
|
||||||
|
|||||||
@@ -1905,14 +1905,11 @@ static bool runAnalysis(SgProject &project, const int curr_regime, const bool ne
|
|||||||
else if (curr_regime == TRANSFORM_ASSUMED_SIZE_PARAMETERS)
|
else if (curr_regime == TRANSFORM_ASSUMED_SIZE_PARAMETERS)
|
||||||
transformAssumedSizeParameters(allFuncInfo);
|
transformAssumedSizeParameters(allFuncInfo);
|
||||||
else if (curr_regime == FIND_PRIVATE_ARRAYS_ANALYSIS)
|
else if (curr_regime == FIND_PRIVATE_ARRAYS_ANALYSIS)
|
||||||
FindPrivateArrays(loopGraph, fullIR, insertedPrivates);
|
findPrivateArrays(loopGraph, fullIR, insertedPrivates);
|
||||||
else if (curr_regime == MERGE_REGIONS)
|
else if (curr_regime == MERGE_REGIONS)
|
||||||
{
|
|
||||||
mergeRegions(parallelRegions, allFuncInfo);
|
mergeRegions(parallelRegions, allFuncInfo);
|
||||||
}
|
|
||||||
|
|
||||||
else if (curr_regime == ARRAY_PROPAGATION)
|
else if (curr_regime == ARRAY_PROPAGATION)
|
||||||
ArrayConstantPropagation(project);
|
arrayConstantPropagation(project);
|
||||||
|
|
||||||
const float elapsed = duration_cast<milliseconds>(high_resolution_clock::now() - timeForPass).count() / 1000.;
|
const float elapsed = duration_cast<milliseconds>(high_resolution_clock::now() - timeForPass).count() / 1000.;
|
||||||
const float elapsedGlobal = duration_cast<milliseconds>(high_resolution_clock::now() - globalTime).count() / 1000.;
|
const float elapsedGlobal = duration_cast<milliseconds>(high_resolution_clock::now() - globalTime).count() / 1000.;
|
||||||
|
|||||||
Reference in New Issue
Block a user