summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/SystemZ
diff options
context:
space:
mode:
authorNirav Dave <niravd@google.com>2018-03-10 02:16:15 +0000
committerNirav Dave <niravd@google.com>2018-03-10 02:16:15 +0000
commit042678bd555dcd3231c363cbc77fee6082b0a0ba (patch)
treee26dd887af285949c0990ef1eb58103f86750aef /llvm/lib/Target/SystemZ
parent0b013e041ddb09e4bbb366bc0be247b39872ae0c (diff)
downloadbcm5719-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.cpp15
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();
}
+
OpenPOWER on IntegriCloud