[llvm] 9248428 - [SandboxVec][DAG][NFC] Refactor setNextNode() and setPrevNode() (#122363)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 10 13:32:37 PST 2025
Author: vporpo
Date: 2025-01-10T13:32:33-08:00
New Revision: 9248428db78ebaa0af33c7b45285caf4ecb93174
URL: https://github.com/llvm/llvm-project/commit/9248428db78ebaa0af33c7b45285caf4ecb93174
DIFF: https://github.com/llvm/llvm-project/commit/9248428db78ebaa0af33c7b45285caf4ecb93174.diff
LOG: [SandboxVec][DAG][NFC] Refactor setNextNode() and setPrevNode() (#122363)
This patch updates DAG's `setNextNode()` and `setPrevNode()` to update
both nodes of the link.
Added:
Modified:
llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.h
llvm/lib/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.h b/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.h
index f423e1ee456cd1..00b53b42e2e572 100644
--- a/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.h
+++ b/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.h
@@ -216,9 +216,18 @@ class MemDGNode final : public DGNode {
/// Memory predecessors.
DenseSet<MemDGNode *> MemPreds;
friend class PredIterator; // For MemPreds.
-
- void setNextNode(MemDGNode *N) { NextMemN = N; }
- void setPrevNode(MemDGNode *N) { PrevMemN = N; }
+ /// Creates both edges: this<->N.
+ void setNextNode(MemDGNode *N) {
+ NextMemN = N;
+ if (NextMemN != nullptr)
+ NextMemN->PrevMemN = this;
+ }
+ /// Creates both edges: N<->this.
+ void setPrevNode(MemDGNode *N) {
+ PrevMemN = N;
+ if (PrevMemN != nullptr)
+ PrevMemN->NextMemN = this;
+ }
friend class DependencyGraph; // For setNextNode(), setPrevNode().
void detachFromChain() {
if (PrevMemN != nullptr)
diff --git a/llvm/lib/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.cpp b/llvm/lib/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.cpp
index ba62c45a4e704e..c1a046a157d3b2 100644
--- a/llvm/lib/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.cpp
+++ b/llvm/lib/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.cpp
@@ -283,8 +283,6 @@ void DependencyGraph::createNewNodes(const Interval<Instruction> &NewInterval) {
// Build the Mem node chain.
if (auto *MemN = dyn_cast<MemDGNode>(N)) {
MemN->setPrevNode(LastMemN);
- if (LastMemN != nullptr)
- LastMemN->setNextNode(MemN);
LastMemN = MemN;
}
}
@@ -302,7 +300,6 @@ void DependencyGraph::createNewNodes(const Interval<Instruction> &NewInterval) {
"Wrong order!");
if (LinkTopN != nullptr && LinkBotN != nullptr) {
LinkTopN->setNextNode(LinkBotN);
- LinkBotN->setPrevNode(LinkTopN);
}
#ifndef NDEBUG
// TODO: Remove this once we've done enough testing.
@@ -394,22 +391,14 @@ void DependencyGraph::notifyMoveInstr(Instruction *I, const BBIterator &To) {
if (To != BB->end()) {
DGNode *ToN = getNodeOrNull(&*To);
if (ToN != nullptr) {
- MemDGNode *PrevMemN = getMemDGNodeBefore(ToN, /*IncludingN=*/false);
- MemDGNode *NextMemN = getMemDGNodeAfter(ToN, /*IncludingN=*/true);
- MemN->PrevMemN = PrevMemN;
- if (PrevMemN != nullptr)
- PrevMemN->NextMemN = MemN;
- MemN->NextMemN = NextMemN;
- if (NextMemN != nullptr)
- NextMemN->PrevMemN = MemN;
+ MemN->setPrevNode(getMemDGNodeBefore(ToN, /*IncludingN=*/false));
+ MemN->setNextNode(getMemDGNodeAfter(ToN, /*IncludingN=*/true));
}
} else {
// MemN becomes the last instruction in the BB.
auto *TermN = getNodeOrNull(BB->getTerminator());
if (TermN != nullptr) {
- MemDGNode *PrevMemN = getMemDGNodeBefore(TermN, /*IncludingN=*/false);
- PrevMemN->NextMemN = MemN;
- MemN->PrevMemN = PrevMemN;
+ MemN->setPrevNode(getMemDGNodeBefore(TermN, /*IncludingN=*/false));
} else {
// The terminator is outside the DAG interval so do nothing.
}
More information about the llvm-commits
mailing list