diff options
| author | Nirav Dave <niravd@google.com> | 2018-03-10 02:16:15 +0000 |
|---|---|---|
| committer | Nirav Dave <niravd@google.com> | 2018-03-10 02:16:15 +0000 |
| commit | 042678bd555dcd3231c363cbc77fee6082b0a0ba (patch) | |
| tree | e26dd887af285949c0990ef1eb58103f86750aef /llvm/lib/Target/SystemZ | |
| parent | 0b013e041ddb09e4bbb366bc0be247b39872ae0c (diff) | |
| download | bcm5719-llvm-042678bd555dcd3231c363cbc77fee6082b0a0ba.tar.gz bcm5719-llvm-042678bd555dcd3231c363cbc77fee6082b0a0ba.zip | |
Revert: r327172 "Correct load-op-store cycle detection analysis"
r327171 "Improve Dependency analysis when doing multi-node Instruction Selection"
r328170 "[DAG] Enforce stricter NodeId invariant during Instruction selection"
Reverting patch as NodeId invariant change is causing pathological
increases in compile time on PPC
llvm-svn: 327197
Diffstat (limited to 'llvm/lib/Target/SystemZ')
| -rw-r--r-- | llvm/lib/Target/SystemZ/SystemZISelDAGToDAG.cpp | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/llvm/lib/Target/SystemZ/SystemZISelDAGToDAG.cpp b/llvm/lib/Target/SystemZ/SystemZISelDAGToDAG.cpp index 6e2130828bb..9bf2474915c 100644 --- a/llvm/lib/Target/SystemZ/SystemZISelDAGToDAG.cpp +++ b/llvm/lib/Target/SystemZ/SystemZISelDAGToDAG.cpp @@ -596,13 +596,7 @@ static void insertDAGNode(SelectionDAG *DAG, SDNode *Pos, SDValue N) { if (N.getNode()->getNodeId() == -1 || N.getNode()->getNodeId() > Pos->getNodeId()) { DAG->RepositionNode(Pos->getIterator(), N.getNode()); - // Mark Node as invalid for pruning as after this it may be a successor to a - // selected node but otherwise be in the same position of Pos. - // Conservatively mark it with the same -abs(Id) to assure node id - // invariant is preserved. - int PId = Pos->getNodeId(); - int InvalidatedPId = -(PId + 1); - N->setNodeId((PId > 0) ? InvalidatedPId : PId); + N.getNode()->setNodeId(Pos->getNodeId()); } } @@ -1033,7 +1027,8 @@ bool SystemZDAGToDAGISel::tryRISBGZero(SDNode *N) { }; SDValue New = convertTo( DL, VT, SDValue(CurDAG->getMachineNode(Opcode, DL, OpcodeVT, Ops), 0)); - ReplaceNode(N, New.getNode()); + ReplaceUses(N, New.getNode()); + CurDAG->RemoveDeadNode(N); return true; } @@ -1124,7 +1119,8 @@ void SystemZDAGToDAGISel::splitLargeImmediate(unsigned Opcode, SDNode *Node, SDValue Lower = CurDAG->getConstant(LowerVal, DL, VT); SDValue Or = CurDAG->getNode(Opcode, DL, VT, Upper, Lower); - ReplaceNode(Node, Or.getNode()); + ReplaceUses(Node, Or.getNode()); + CurDAG->RemoveDeadNode(Node); SelectCode(Or.getNode()); } @@ -1622,3 +1618,4 @@ void SystemZDAGToDAGISel::PreprocessISelDAG() { if (MadeChange) CurDAG->RemoveDeadNodes(); } + |

