1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 11:02:59 +02:00

Switch ComputeTopDownOrdering over to using a densemap. This speeds up

isel as a whole by 3.3%.

llvm-svn: 33809
This commit is contained in:
Chris Lattner 2007-02-03 01:12:36 +00:00
parent accef1b6a3
commit f1b9b2068c

View File

@ -25,6 +25,7 @@
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Compiler.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallVector.h"
#include <map>
using namespace llvm;
@ -290,7 +291,7 @@ SelectionDAGLegalize::SelectionDAGLegalize(SelectionDAG &dag)
/// ComputeTopDownOrdering - Add the specified node to the Order list if it has
/// not been visited yet and if all of its operands have already been visited.
static void ComputeTopDownOrdering(SDNode *N, std::vector<SDNode*> &Order,
std::map<SDNode*, unsigned> &Visited) {
DenseMap<SDNode*, unsigned> &Visited) {
if (++Visited[N] != N->getNumOperands())
return; // Haven't visited all operands yet
@ -318,7 +319,7 @@ void SelectionDAGLegalize::LegalizeDAG() {
// practice however, this causes us to run out of stack space on large basic
// blocks. To avoid this problem, compute an ordering of the nodes where each
// node is only legalized after all of its operands are legalized.
std::map<SDNode*, unsigned> Visited;
DenseMap<SDNode*, unsigned> Visited;
std::vector<SDNode*> Order;
// Compute ordering from all of the leaves in the graphs, those (like the