Skip to content

Commit 9248428

Browse files
authored
[SandboxVec][DAG][NFC] Refactor setNextNode() and setPrevNode() (#122363)
This patch updates DAG's `setNextNode()` and `setPrevNode()` to update both nodes of the link.
1 parent 91892e8 commit 9248428

File tree

2 files changed

+15
-17
lines changed

2 files changed

+15
-17
lines changed

llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.h

+12-3
Original file line numberDiff line numberDiff line change
@@ -216,9 +216,18 @@ class MemDGNode final : public DGNode {
216216
/// Memory predecessors.
217217
DenseSet<MemDGNode *> MemPreds;
218218
friend class PredIterator; // For MemPreds.
219-
220-
void setNextNode(MemDGNode *N) { NextMemN = N; }
221-
void setPrevNode(MemDGNode *N) { PrevMemN = N; }
219+
/// Creates both edges: this<->N.
220+
void setNextNode(MemDGNode *N) {
221+
NextMemN = N;
222+
if (NextMemN != nullptr)
223+
NextMemN->PrevMemN = this;
224+
}
225+
/// Creates both edges: N<->this.
226+
void setPrevNode(MemDGNode *N) {
227+
PrevMemN = N;
228+
if (PrevMemN != nullptr)
229+
PrevMemN->NextMemN = this;
230+
}
222231
friend class DependencyGraph; // For setNextNode(), setPrevNode().
223232
void detachFromChain() {
224233
if (PrevMemN != nullptr)

llvm/lib/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.cpp

+3-14
Original file line numberDiff line numberDiff line change
@@ -283,8 +283,6 @@ void DependencyGraph::createNewNodes(const Interval<Instruction> &NewInterval) {
283283
// Build the Mem node chain.
284284
if (auto *MemN = dyn_cast<MemDGNode>(N)) {
285285
MemN->setPrevNode(LastMemN);
286-
if (LastMemN != nullptr)
287-
LastMemN->setNextNode(MemN);
288286
LastMemN = MemN;
289287
}
290288
}
@@ -302,7 +300,6 @@ void DependencyGraph::createNewNodes(const Interval<Instruction> &NewInterval) {
302300
"Wrong order!");
303301
if (LinkTopN != nullptr && LinkBotN != nullptr) {
304302
LinkTopN->setNextNode(LinkBotN);
305-
LinkBotN->setPrevNode(LinkTopN);
306303
}
307304
#ifndef NDEBUG
308305
// TODO: Remove this once we've done enough testing.
@@ -394,22 +391,14 @@ void DependencyGraph::notifyMoveInstr(Instruction *I, const BBIterator &To) {
394391
if (To != BB->end()) {
395392
DGNode *ToN = getNodeOrNull(&*To);
396393
if (ToN != nullptr) {
397-
MemDGNode *PrevMemN = getMemDGNodeBefore(ToN, /*IncludingN=*/false);
398-
MemDGNode *NextMemN = getMemDGNodeAfter(ToN, /*IncludingN=*/true);
399-
MemN->PrevMemN = PrevMemN;
400-
if (PrevMemN != nullptr)
401-
PrevMemN->NextMemN = MemN;
402-
MemN->NextMemN = NextMemN;
403-
if (NextMemN != nullptr)
404-
NextMemN->PrevMemN = MemN;
394+
MemN->setPrevNode(getMemDGNodeBefore(ToN, /*IncludingN=*/false));
395+
MemN->setNextNode(getMemDGNodeAfter(ToN, /*IncludingN=*/true));
405396
}
406397
} else {
407398
// MemN becomes the last instruction in the BB.
408399
auto *TermN = getNodeOrNull(BB->getTerminator());
409400
if (TermN != nullptr) {
410-
MemDGNode *PrevMemN = getMemDGNodeBefore(TermN, /*IncludingN=*/false);
411-
PrevMemN->NextMemN = MemN;
412-
MemN->PrevMemN = PrevMemN;
401+
MemN->setPrevNode(getMemDGNodeBefore(TermN, /*IncludingN=*/false));
413402
} else {
414403
// The terminator is outside the DAG interval so do nothing.
415404
}

0 commit comments

Comments
 (0)