Compare commits
23 Commits
dcef894692
...
7bca67b75c
| Author | SHA1 | Date | |
|---|---|---|---|
| 7bca67b75c | |||
| 8632dfbf31 | |||
| 97e60e16be | |||
|
|
39abbafb3a | ||
| a1e12f5c1c | |||
|
|
cad8c0913d | ||
|
|
bde804cff6 | ||
|
|
589680a78b | ||
|
|
88bac54901 | ||
|
|
0d4d2b78d8 | ||
|
|
bbac07202d | ||
|
|
9325723e69 | ||
|
|
18ac53f342 | ||
|
|
0bec2c6527 | ||
| aa56778be1 | |||
|
|
0a484e77de | ||
|
|
4818884d48 | ||
|
|
e172678e1b | ||
|
|
0a977146a7 | ||
|
|
0b50e0630a | ||
|
|
980ddeeac7 | ||
| 788eeda22e | |||
|
|
4a9cba7b96 |
Submodule projects/dvm updated: 13d113d343...ab99430aee
Submodule projects/libpredictor updated: d08cb25cc6...7e57477dfa
@@ -17,7 +17,7 @@ using std::fstream;
|
|||||||
static long int getNextTag()
|
static long int getNextTag()
|
||||||
{
|
{
|
||||||
static long int INTERVAL_TAG = 0;
|
static long int INTERVAL_TAG = 0;
|
||||||
return INTERVAL_TAG++;
|
return -(INTERVAL_TAG++);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Debug funcs
|
//Debug funcs
|
||||||
@@ -413,7 +413,7 @@ static void findIntervals(SpfInterval *interval, map<int, int> &labelsRef, map<i
|
|||||||
inter->lineFile = std::make_pair(currentSt->lineNumber(), currentSt->fileName());
|
inter->lineFile = std::make_pair(currentSt->lineNumber(), currentSt->fileName());
|
||||||
inter->parent = interval;
|
inter->parent = interval;
|
||||||
inter->exit_levels.push_back(0);
|
inter->exit_levels.push_back(0);
|
||||||
inter->tag = getNextTag();
|
inter->tag = currentSt->lineNumber();//getNextTag();
|
||||||
interval->nested.push_back(inter);
|
interval->nested.push_back(inter);
|
||||||
|
|
||||||
findIntervals(inter, labelsRef, gotoStmts, currentSt);
|
findIntervals(inter, labelsRef, gotoStmts, currentSt);
|
||||||
|
|||||||
@@ -800,29 +800,58 @@ static void fillInOut(FuncInfo *currF, SgStatement *start, SgStatement *last, co
|
|||||||
|
|
||||||
static map<string, vector<int>> supportedKeyWordArg = { {"system_clock", { OUT_BIT, OUT_BIT, OUT_BIT } } };
|
static map<string, vector<int>> supportedKeyWordArg = { {"system_clock", { OUT_BIT, OUT_BIT, OUT_BIT } } };
|
||||||
|
|
||||||
map<string, int> parNames;
|
map<string, int> parNamesMain;
|
||||||
|
map<string, int> parNamesContains;
|
||||||
|
|
||||||
for (int i = 0; i < currF->funcParams.identificators.size(); ++i)
|
for (int i = 0; i < currF->funcParams.identificators.size(); ++i)
|
||||||
parNames[currF->funcParams.identificators[i]] = i;
|
parNamesMain[currF->funcParams.identificators[i]] = i;
|
||||||
|
|
||||||
|
map<string, int>& parNames = parNamesMain;
|
||||||
|
|
||||||
|
bool isContainsFunctions = false;
|
||||||
for (auto st = start; st != last; st = st->lexNext())
|
for (auto st = start; st != last; st = st->lexNext())
|
||||||
{
|
{
|
||||||
if (st->variant() == CONTAINS_STMT)
|
if (st->variant() == CONTAINS_STMT) {
|
||||||
break;
|
isContainsFunctions = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isContainsFunctions) {
|
||||||
|
if (st->variant() == PROC_HEDR || st->variant() == FUNC_HEDR) {
|
||||||
|
parNamesContains = parNamesMain;
|
||||||
|
|
||||||
|
SgProgHedrStmt* hedr = (SgProgHedrStmt*)st;
|
||||||
|
|
||||||
|
int numOfParams = hedr->numberOfParameters();
|
||||||
|
if (numOfParams > 0)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < numOfParams; ++i)
|
||||||
|
{
|
||||||
|
auto it = parNamesContains.find(hedr->parameter(i)->identifier());
|
||||||
|
if (it != parNamesContains.end())
|
||||||
|
parNamesContains.erase(it);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
parNames = parNamesContains;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (st->variant() == ENTRY_STAT)
|
if (st->variant() == ENTRY_STAT)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (isSgExecutableStatement(st) == NULL) {
|
if (isSgExecutableStatement(st) == NULL) {
|
||||||
checkInTypeDescription(st->expr(0), currF, parNames);
|
if (!isContainsFunctions)
|
||||||
|
checkInTypeDescription(st->expr(0), currF, parNames);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (st->lineNumber() <= 0)
|
if (st->lineNumber() <= 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (activeOps.size() && activeOps.find(st) == activeOps.end())
|
//XXX: use parameters removing in block ... isContainsFunctions ...
|
||||||
continue;
|
//TODO need to use IR for parameters checking
|
||||||
|
/*if (activeOps.size() && activeOps.find(st) == activeOps.end())
|
||||||
|
continue; */
|
||||||
|
|
||||||
if (st->variant() == ASSIGN_STAT)
|
if (st->variant() == ASSIGN_STAT)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -9,8 +9,6 @@
|
|||||||
|
|
||||||
#include "range_structures.h"
|
#include "range_structures.h"
|
||||||
#include "region.h"
|
#include "region.h"
|
||||||
|
|
||||||
#include "..\Transformations\ExpressionSubstitution\expr_transform.h"
|
|
||||||
#include "SgUtils.h"
|
#include "SgUtils.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "Utils/leak_detector.h"
|
#include "Utils/leak_detector.h"
|
||||||
|
|
||||||
#pragma comment(linker, "/STACK:536870912") // 512 МБ
|
#pragma comment(linker, "/STACK:536870912") // 512 МБ
|
||||||
|
|
||||||
@@ -943,7 +943,7 @@ static bool runAnalysis(SgProject &project, const int curr_regime, const bool ne
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (curr_regime == MOVE_OPERATORS)
|
else if (curr_regime == MOVE_OPERATORS)
|
||||||
moveOperators(file, loopGraph, fullIR, countOfTransform);
|
moveOperators(file, fullIR, countOfTransform);
|
||||||
else if (curr_regime == PRIVATE_REMOVING_ANALYSIS)
|
else if (curr_regime == PRIVATE_REMOVING_ANALYSIS)
|
||||||
{
|
{
|
||||||
auto itFound = loopGraph.find(file->filename());
|
auto itFound = loopGraph.find(file->filename());
|
||||||
|
|||||||
@@ -1089,6 +1089,8 @@ static int clean(const string& funcName, SgStatement* funcSt, const map<string,
|
|||||||
}
|
}
|
||||||
|
|
||||||
SgGotoStmt* gotoSt = new SgGotoStmt(*contLab);
|
SgGotoStmt* gotoSt = new SgGotoStmt(*contLab);
|
||||||
|
if (st->label())
|
||||||
|
gotoSt->setLabel(*st->label());
|
||||||
st->insertStmtBefore(*gotoSt, *st->controlParent());
|
st->insertStmtBefore(*gotoSt, *st->controlParent());
|
||||||
|
|
||||||
toDelete.push_back(st);
|
toDelete.push_back(st);
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -3,4 +3,4 @@
|
|||||||
#include "../../GraphLoop/graph_loops.h"
|
#include "../../GraphLoop/graph_loops.h"
|
||||||
#include "../../CFGraph/CFGraph.h"
|
#include "../../CFGraph/CFGraph.h"
|
||||||
|
|
||||||
void moveOperators(SgFile *file, std::map<std::string, std::vector<LoopGraph*>>& loopGraph, const std::map<FuncInfo*, std::vector<SAPFOR::BasicBlock*>>& FullIR, int& countOfTransform);
|
void moveOperators(SgFile* file, const std::map<FuncInfo*, std::vector<SAPFOR::BasicBlock*>>& FullIR, int& countOfTransform);
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define VERSION_SPF "2467"
|
#define VERSION_SPF "2473"
|
||||||
|
|||||||
Reference in New Issue
Block a user