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 /llvm/lib/Target/ARM | |
| 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
Diffstat (limited to 'llvm/lib/Target/ARM')
| -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:  | 

