[llvm] r269345 - SDAG: Clean up dangling nodes in AArch64ISelDAGToDAG::SelectImpl
Justin Bogner via llvm-commits
llvm-commits at lists.llvm.org
Thu May 12 13:54:27 PDT 2016
Author: bogner
Date: Thu May 12 15:54:27 2016
New Revision: 269345
URL: http://llvm.org/viewvc/llvm-project?rev=269345&view=rev
Log:
SDAG: Clean up dangling nodes in AArch64ISelDAGToDAG::SelectImpl
When we convert to the void Select interface, leaving unreferenced
nodes around won't be allowed anymore.
Part of llvm.org/pr26808.
Modified:
llvm/trunk/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
Modified: llvm/trunk/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp?rev=269345&r1=269344&r2=269345&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp (original)
+++ llvm/trunk/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp Thu May 12 15:54:27 2016
@@ -1125,7 +1125,7 @@ SDNode *AArch64DAGToDAGISel::SelectIndex
ReplaceUses(SDValue(N, 0), LoadedVal);
ReplaceUses(SDValue(N, 1), SDValue(Res, 0));
ReplaceUses(SDValue(N, 2), SDValue(Res, 2));
-
+ CurDAG->RemoveDeadNode(N);
return nullptr;
}
@@ -1147,6 +1147,7 @@ SDNode *AArch64DAGToDAGISel::SelectLoad(
CurDAG->getTargetExtractSubreg(SubRegIdx + i, dl, VT, SuperReg));
ReplaceUses(SDValue(N, NumVecs), SDValue(Ld, 1));
+ CurDAG->RemoveDeadNode(N);
return nullptr;
}
@@ -1179,6 +1180,7 @@ SDNode *AArch64DAGToDAGISel::SelectPostL
// Update the chain
ReplaceUses(SDValue(N, NumVecs + 1), SDValue(Ld, 2));
+ CurDAG->RemoveDeadNode(N);
return nullptr;
}
@@ -1290,8 +1292,8 @@ SDNode *AArch64DAGToDAGISel::SelectLoadL
}
ReplaceUses(SDValue(N, NumVecs), SDValue(Ld, 1));
-
- return Ld;
+ CurDAG->RemoveDeadNode(N);
+ return nullptr;
}
SDNode *AArch64DAGToDAGISel::SelectPostLoadLane(SDNode *N, unsigned NumVecs,
@@ -1346,8 +1348,8 @@ SDNode *AArch64DAGToDAGISel::SelectPostL
// Update the Chain
ReplaceUses(SDValue(N, NumVecs + 1), SDValue(Ld, 2));
-
- return Ld;
+ CurDAG->RemoveDeadNode(N);
+ return nullptr;
}
SDNode *AArch64DAGToDAGISel::SelectStoreLane(SDNode *N, unsigned NumVecs,
@@ -2328,6 +2330,7 @@ void AArch64DAGToDAGISel::SelectCMP_SWAP
ReplaceUses(SDValue(N, 0), SDValue(CmpSwap, 0));
ReplaceUses(SDValue(N, 1), SDValue(CmpSwap, 2));
+ CurDAG->RemoveDeadNode(N);
}
SDNode *AArch64DAGToDAGISel::SelectImpl(SDNode *Node) {
More information about the llvm-commits
mailing list