summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2014-04-24 09:22:31 +0000
committerChandler Carruth <chandlerc@gmail.com>2014-04-24 09:22:31 +0000
commitbcb39a444bd8dfdd872d7d3b23aa871e8a29b103 (patch)
tree34099d9986dc4ad63ac44490134ff299325f102e /include
parent9e65c463453fa777efadba252c212076686fabba (diff)
downloadllvm-bcb39a444bd8dfdd872d7d3b23aa871e8a29b103.tar.gz
llvm-bcb39a444bd8dfdd872d7d3b23aa871e8a29b103.tar.bz2
llvm-bcb39a444bd8dfdd872d7d3b23aa871e8a29b103.tar.xz
[LCG] Switch the parent SCC tracking from a SmallSetVector to
a SmallPtrSet. Currently, there is no need for stable iteration in this dimension, and I now thing there won't need to be going forward. If this is ever re-introduced in any form, it needs to not be a SetVector based solution because removal cannot be linear. There will be many SCCs with large numbers of parents. When encountering these, the incremental SCC update for intra-SCC edge removal was quadratic due to linear removal (kind of). I'm really hoping we can avoid having an ordering property here at all though... git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207091 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/llvm/Analysis/LazyCallGraph.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/include/llvm/Analysis/LazyCallGraph.h b/include/llvm/Analysis/LazyCallGraph.h
index ea65cbac1d..b53e77b4f7 100644
--- a/include/llvm/Analysis/LazyCallGraph.h
+++ b/include/llvm/Analysis/LazyCallGraph.h
@@ -215,7 +215,7 @@ public:
friend class LazyCallGraph;
friend class LazyCallGraph::Node;
- SmallSetVector<SCC *, 1> ParentSCCs;
+ SmallPtrSet<SCC *, 1> ParentSCCs;
SmallVector<Node *, 1> Nodes;
SCC() {}
@@ -228,7 +228,7 @@ public:
public:
typedef SmallVectorImpl<Node *>::const_iterator iterator;
- typedef pointee_iterator<SmallSetVector<SCC *, 1>::const_iterator> parent_iterator;
+ typedef pointee_iterator<SmallPtrSet<SCC *, 1>::const_iterator> parent_iterator;
iterator begin() const { return Nodes.begin(); }
iterator end() const { return Nodes.end(); }