1#include <featureTests.h>
2#ifdef ROSE_ENABLE_SOURCE_ANALYSIS
7#include "DataflowCFG.h"
25bool isNonMutatingOperator(
SgNode* n);
28bool isNonMutatingSubTree(
SgNode* n);
46 std::string getFileInfoString(
SgNode* n);
48 std::string getFileInfoString(
CFGNode n);
80 void createTmpVarInit(
SgType* varType, std::string newName,
bool byReference,
104typedef void (*CFGTransform)(
SgNode *target,
SgNode* newNode,
void* data);
108 typedef enum {insBef, insAft, callback} modType;
124 std::string str() {
return ""; }
127 class insertRequest:
public modRequest{
135 this->type = type_arg;
136 this->newNode = newNode;
137 this->origNode = origNode;
140 SgNode* getTgtNode() {
return origNode; }
146 class transformRequest:
public modRequest{
147 CFGTransform callbackFunc;
153 transformRequest(CFGTransform callbackFunc,
SgNode *&target,
SgNode* newNode,
void* data)
155 this->type = callback;
156 this->target = target;
157 this->newNode = newNode;
158 this->callbackFunc = callbackFunc;
167 std::list<modRequest*> requests;
173 void beginTransaction();
181 void transform(CFGTransform callbackFunc,
SgNode* n,
SgNode* newNode,
void* data);
186 void commitTransaction();
200void prependToScopeStmt(
SgNode *target,
SgNode *newNode,
void* data);
203void appendToScopeStmt(
SgNode *target,
SgNode *newNode,
void* data);
This class represents the notion of an expression. Expressions are derived from SgLocatedNodes,...
This class represents the concept of a function declaration statement.
This class represents the notion of a declared variable.
This class represents strings within the IR nodes.
This class represents the base class for all IR nodes within Sage III.
This class represents a source project, with a list of SgFile objects and global information about th...
This class represents the notion of a statement.
This class represents the base class for all types.
This class represents the variable refernece in expressions.
This class represents the concept of a C or C++ variable declaration.
This class represents the concept of a variable name within the compiler (a shared container for the ...
This class represents the location of the code associated with the IR node in the original source cod...
A node in the control flow graph.
ROSE_DLL_API void replaceStatement(SgStatement *oldStmt, SgStatement *newStmt, bool movePreprocessinInfo=false)
Replace a statement with another. Move preprocessing information from oldStmt to newStmt if requested...