[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