Go to the documentation of this file.
50 bool sourceIsRegToItselfCopy =
false;
52 if (src !=
nullptr && dst !=
nullptr &&
53 ddg().rootGraph()->hasNode(*dst) &
54 ddg().rootGraph()->hasNode(*src)) {
55 bool removedRawEdge =
false;
59 removedRawEdge =
true;
64 if (!removedRawEdge) {
113 ->exclusingGuards(*dst, target) &&
120 sched_, *dst, target, newEdge), pre);
128 if (dst !=
nullptr &&
ddg().rootGraph()->hasNode(*dst)) {
136 if (!sourceIsRegToItselfCopy) {
140 ddg().rootGraph()->headNode(edge), edge), pre);
179 if (prologMove !=
nullptr) {
186 sched_, *prologSrcMove.first, *prologMove));
189 prologSrcMove.first, prologMove, loopBypass,
false);
bool isLoopBypass(MoveNode &sourceNode, MoveNode &userNode)
virtual Node & tailNode(const Edge &edge) const
MoveNodeDuplicator & duplicator() const
virtual Node & headNode(const Edge &edge) const
virtual int rootGraphInDegree(const Node &node) const
Terminal & destination() const
virtual Edge & rootGraphOutEdge(const Node &node, const int index) const
virtual int rootGraphOutDegree(const Node &node) const
DependenceType dependenceType() const
std::pair< MoveNode *, bool > duplicateMoveNode(MoveNode &mn, bool addToDDG, bool ignoreSameBBBackEdges)
virtual Edge & rootGraphInEdge(const Node &node, const int index) const
virtual Edge & inEdge(const Node &node, const int index) const
void disposeMoveNode(MoveNode *newMN)
DataDependenceGraph & ddg()
bool updateEdges(MoveNode *src, MoveNode *dst, bool loopBypass, bool pre)
virtual int inDegree(const Node &node) const
const TCEString data() const
void undoOnlyMe() override
EdgeSet connectingEdges(const Node &nTail, const Node &nHead) const
MoveNode * getMoveNode(MoveNode &mn)
bool isSourceVariable() const
TTAProgram::Move & move()
bool runChild(std::stack< Reversible * > &children, Reversible *child)
bool runPreChild(Reversible *preChild)
virtual bool equals(const Terminal &other) const =0
Terminal & source() const
bool runPostChild(Reversible *preChild)
EdgeReason edgeReason() const
bool operator()() override