From: Dan Gohman Date: Tue, 23 Dec 2008 17:24:50 +0000 (+0000) Subject: Avoid an unnecessary call to allnodes_size(), which is linear. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=e1dfc7da8991270db5094aa736fde273bfab6061;p=oota-llvm.git Avoid an unnecessary call to allnodes_size(), which is linear. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61372 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp b/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp index 4b6469b5d06..4a7920acedb 100644 --- a/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp +++ b/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp @@ -68,20 +68,23 @@ static void CheckForPhysRegDependency(SDNode *Def, SDNode *User, unsigned Op, /// This SUnit graph is similar to the SelectionDAG, but represents flagged /// together nodes with a single SUnit. void ScheduleDAGSDNodes::BuildSchedUnits() { - // Reserve entries in the vector for each of the SUnits we are creating. This - // ensure that reallocation of the vector won't happen, so SUnit*'s won't get - // invalidated. - // FIXME: Multiply by 2 because we may clone nodes during scheduling. - // This is a temporary workaround. - SUnits.reserve(DAG->allnodes_size() * 2); - // During scheduling, the NodeId field of SDNode is used to map SDNodes // 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) + E = DAG->allnodes_end(); NI != E; ++NI) { NI->setNodeId(-1); + ++NumNodes; + } + // Reserve entries in the vector for each of the SUnits we are creating. This + // ensure that reallocation of the vector won't happen, so SUnit*'s won't get + // invalidated. + // FIXME: Multiply by 2 because we may clone nodes during scheduling. + // This is a temporary workaround. + SUnits.reserve(NumNodes * 2); + // Check to see if the scheduler cares about latencies. bool UnitLatencies = ForceUnitLatencies();