mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-02 16:54:58 +00:00
Add allnodes() iterator range to SelectionDAG. NFC.
SelectionDAG already had begin/end methods for iterating over all the nodes, but didn't define an iterator_range for us in foreach loops. This adds such a method and uses it in some of the eligible places throughout the backends. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242212 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4362ca6c77
commit
ba77f37392
@ -323,6 +323,14 @@ public:
|
||||
return AllNodes.size();
|
||||
}
|
||||
|
||||
iterator_range<allnodes_iterator> allnodes() {
|
||||
return iterator_range<allnodes_iterator>(allnodes_begin(), allnodes_end());
|
||||
}
|
||||
iterator_range<allnodes_const_iterator> allnodes() const {
|
||||
return iterator_range<allnodes_const_iterator>(allnodes_begin(),
|
||||
allnodes_end());
|
||||
}
|
||||
|
||||
/// Return the root tag of the SelectionDAG.
|
||||
const SDValue &getRoot() const { return Root; }
|
||||
|
||||
|
@ -725,9 +725,8 @@ void ScheduleDAGLinearize::Schedule() {
|
||||
|
||||
SmallVector<SDNode*, 8> Glues;
|
||||
unsigned DAGSize = 0;
|
||||
for (SelectionDAG::allnodes_iterator I = DAG->allnodes_begin(),
|
||||
E = DAG->allnodes_end(); I != E; ++I) {
|
||||
SDNode *N = I;
|
||||
for (SDNode &Node : DAG->allnodes()) {
|
||||
SDNode *N = &Node;
|
||||
|
||||
// Use node id to record degree.
|
||||
unsigned Degree = N->use_size();
|
||||
|
@ -289,9 +289,8 @@ void ScheduleDAGSDNodes::ClusterNeighboringLoads(SDNode *Node) {
|
||||
/// ClusterNodes - Cluster certain nodes which should be scheduled together.
|
||||
///
|
||||
void ScheduleDAGSDNodes::ClusterNodes() {
|
||||
for (SelectionDAG::allnodes_iterator NI = DAG->allnodes_begin(),
|
||||
E = DAG->allnodes_end(); NI != E; ++NI) {
|
||||
SDNode *Node = &*NI;
|
||||
for (SDNode &NI : DAG->allnodes()) {
|
||||
SDNode *Node = &NI;
|
||||
if (!Node || !Node->isMachineOpcode())
|
||||
continue;
|
||||
|
||||
@ -308,9 +307,8 @@ void ScheduleDAGSDNodes::BuildSchedUnits() {
|
||||
// to their associated SUnits by holding SUnits table indices. A value
|
||||
// of -1 means the SDNode does not yet have an associated SUnit.
|
||||
unsigned NumNodes = 0;
|
||||
for (SelectionDAG::allnodes_iterator NI = DAG->allnodes_begin(),
|
||||
E = DAG->allnodes_end(); NI != E; ++NI) {
|
||||
NI->setNodeId(-1);
|
||||
for (SDNode &NI : DAG->allnodes()) {
|
||||
NI.setNodeId(-1);
|
||||
++NumNodes;
|
||||
}
|
||||
|
||||
|
@ -1371,18 +1371,14 @@ void AMDGPUDAGToDAGISel::PostprocessISelDAG() {
|
||||
do {
|
||||
IsModified = false;
|
||||
// Go over all selected nodes and try to fold them a bit more
|
||||
for (SelectionDAG::allnodes_iterator I = CurDAG->allnodes_begin(),
|
||||
E = CurDAG->allnodes_end(); I != E; ++I) {
|
||||
|
||||
SDNode *Node = I;
|
||||
|
||||
MachineSDNode *MachineNode = dyn_cast<MachineSDNode>(I);
|
||||
for (SDNode &Node : CurDAG->allnodes()) {
|
||||
MachineSDNode *MachineNode = dyn_cast<MachineSDNode>(&Node);
|
||||
if (!MachineNode)
|
||||
continue;
|
||||
|
||||
SDNode *ResNode = Lowering.PostISelFolding(MachineNode, *CurDAG);
|
||||
if (ResNode != Node) {
|
||||
ReplaceUses(Node, ResNode);
|
||||
if (ResNode != &Node) {
|
||||
ReplaceUses(&Node, ResNode);
|
||||
IsModified = true;
|
||||
}
|
||||
}
|
||||
|
@ -3406,9 +3406,8 @@ void PPCDAGToDAGISel::PeepholeCROps() {
|
||||
bool IsModified;
|
||||
do {
|
||||
IsModified = false;
|
||||
for (SelectionDAG::allnodes_iterator I = CurDAG->allnodes_begin(),
|
||||
E = CurDAG->allnodes_end(); I != E; ++I) {
|
||||
MachineSDNode *MachineNode = dyn_cast<MachineSDNode>(I);
|
||||
for (SDNode &Node : CurDAG->allnodes()) {
|
||||
MachineSDNode *MachineNode = dyn_cast<MachineSDNode>(&Node);
|
||||
if (!MachineNode || MachineNode->use_empty())
|
||||
continue;
|
||||
SDNode *ResNode = MachineNode;
|
||||
|
Loading…
x
Reference in New Issue
Block a user