diff options
| author | Justin Bogner <mail@justinbogner.com> | 2016-05-12 00:20:19 +0000 |
|---|---|---|
| committer | Justin Bogner <mail@justinbogner.com> | 2016-05-12 00:20:19 +0000 |
| commit | ed4f37850eaa5ce04fcd3dae1d5a3d5f3ebb5091 (patch) | |
| tree | 86765fd97b4545d6cec023aeee9e14d985b21e5a | |
| parent | f51af6c9cd5b3ffb3cce3dc3a5d60e500669d063 (diff) | |
| download | bcm5719-llvm-ed4f37850eaa5ce04fcd3dae1d5a3d5f3ebb5091.tar.gz bcm5719-llvm-ed4f37850eaa5ce04fcd3dae1d5a3d5f3ebb5091.zip | |
SDAG: Clean up dangling nodes in ARMISelDAGToDAG::SelectImpl
When we convert to the void Select interface, leaving unreferenced
nodes around won't be allowed anymore.
Part of llvm.org/pr26808.
llvm-svn: 269256
| -rw-r--r-- | llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp b/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp index e915085309a..8948a6716c6 100644 --- a/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp +++ b/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp @@ -1941,6 +1941,7 @@ SDNode *ARMDAGToDAGISel::SelectVLD(SDNode *N, bool isUpdating, unsigned NumVecs, ReplaceUses(SDValue(N, NumVecs), SDValue(VLd, 1)); if (isUpdating) ReplaceUses(SDValue(N, NumVecs + 1), SDValue(VLd, 2)); + CurDAG->RemoveDeadNode(N); return nullptr; } @@ -2207,6 +2208,7 @@ SDNode *ARMDAGToDAGISel::SelectVLDSTLane(SDNode *N, bool IsLoad, ReplaceUses(SDValue(N, NumVecs), SDValue(VLdLn, 1)); if (isUpdating) ReplaceUses(SDValue(N, NumVecs + 1), SDValue(VLdLn, 2)); + CurDAG->RemoveDeadNode(N); return nullptr; } @@ -2290,6 +2292,7 @@ SDNode *ARMDAGToDAGISel::SelectVLDDup(SDNode *N, bool isUpdating, ReplaceUses(SDValue(N, NumVecs), SDValue(VLdDup, 1)); if (isUpdating) ReplaceUses(SDValue(N, NumVecs + 1), SDValue(VLdDup, 2)); + CurDAG->RemoveDeadNode(N); return nullptr; } @@ -2621,6 +2624,7 @@ SDNode *ARMDAGToDAGISel::SelectCMP_SWAP(SDNode *N) { ReplaceUses(SDValue(N, 0), SDValue(CmpSwap, 0)); ReplaceUses(SDValue(N, 1), SDValue(CmpSwap, 2)); + CurDAG->RemoveDeadNode(N); return nullptr; } @@ -2702,7 +2706,7 @@ SDNode *ARMDAGToDAGISel::SelectImpl(SDNode *N) { ResNode=CurDAG->getMachineNode(ARM::LDRcp, dl, MVT::i32, MVT::Other, Ops); } - ReplaceUses(SDValue(N, 0), SDValue(ResNode, 0)); + ReplaceNode(N, ResNode); return nullptr; } @@ -2939,6 +2943,7 @@ SDNode *ARMDAGToDAGISel::SelectImpl(SDNode *N) { } ReplaceUses(SDValue(N, 0), SDValue(Chain.getNode(), Chain.getResNo())); + CurDAG->RemoveDeadNode(N); return nullptr; } case ARMISD::VZIP: { @@ -3281,6 +3286,7 @@ SDNode *ARMDAGToDAGISel::SelectImpl(SDNode *N) { ReplaceUses(SDValue(N, 1), Result); } ReplaceUses(SDValue(N, 2), OutChain); + CurDAG->RemoveDeadNode(N); return nullptr; } case Intrinsic::arm_stlexd: |

