1 #include <featureTests.h>
2 #ifdef ROSE_ENABLE_SOURCE_ANALYSIS
7 #include "genericDataflowCommon.h"
9 #include "VirtualCFGIterator.h"
10 #include "DataflowCFG.h"
21 void initCFGUtils(
SgProject* project_arg);
30 bool computeTermsOfIfCondition_LTEQ(
SgExpression *expr,
varID &x,
bool& negX,
varID &y,
bool& negY,
long &c);
36 bool computeTermsOfIfCondition_EQ(
SgExpression *expr,
varID &x,
bool& negX,
varID &y,
bool& negY,
long &c);
50 findArrayAccesses(
SgNode* ast_node,
51 m_varID2varID2quad &wrIndex, m_varID2varID2quad &rdIndex,
52 m_varID2bool &rdFromExp, m_varID2bool &wrFromExp,
53 varIDSet arrays, m_varID2str vars2Name);
66 bool parseArrayAccess(
SgNode* ast_node,
67 m_varID2varID2quad& wrIndexSimp, varIDlist& wrIndexCpx,
68 m_varID2varID2quad& rdIndexSimp, varIDlist& rdIndexCpx,
69 m_varID2str vars2Name);
74 bool isAssignment(
SgNode* n);
82 void getAssignmentRHS(
SgNode* n, std::set<SgNode*>& rhs);
86 const short subtract=2;
95 bool parseAssignment(
SgNode* expr,
short& op,
varID &i,
varID &j,
bool& negJ,
varID &k,
bool& negK,
long &c);
144 std::string genUniqueName();