1414#ifndef LLVM_ANALYSIS_SCALAREVOLUTIONEXPANDER_H
1515#define LLVM_ANALYSIS_SCALAREVOLUTIONEXPANDER_H
1616
17+ #include " llvm/ADT/DenseMap.h"
18+ #include " llvm/ADT/DenseSet.h"
1719#include " llvm/ADT/Optional.h"
1820#include " llvm/Analysis/ScalarEvolutionExpressions.h"
1921#include " llvm/Analysis/ScalarEvolutionNormalization.h"
2022#include " llvm/Analysis/TargetFolder.h"
2123#include " llvm/IR/IRBuilder.h"
2224#include " llvm/IR/ValueHandle.h"
23- #include < set>
2425
2526namespace llvm {
2627 class TargetTransformInfo ;
@@ -43,11 +44,12 @@ namespace llvm {
4344 const char * IVName;
4445
4546 // InsertedExpressions caches Values for reuse, so must track RAUW.
46- std::map<std::pair<const SCEV *, Instruction *>, TrackingVH<Value> >
47- InsertedExpressions;
47+ DenseMap<std::pair<const SCEV *, Instruction *>, TrackingVH<Value>>
48+ InsertedExpressions;
49+
4850 // InsertedValues only flags inserted instructions so needs no RAUW.
49- std::set <AssertingVH<Value> > InsertedValues;
50- std::set <AssertingVH<Value> > InsertedPostIncValues;
51+ DenseSet <AssertingVH<Value>> InsertedValues;
52+ DenseSet <AssertingVH<Value>> InsertedPostIncValues;
5153
5254 // / A memoization of the "relevant" loop for a given SCEV.
5355 DenseMap<const SCEV *, const Loop *> RelevantLoops;
@@ -68,7 +70,7 @@ namespace llvm {
6870 Instruction *IVIncInsertPos;
6971
7072 // / \brief Phis that complete an IV chain. Reuse
71- std::set <AssertingVH<PHINode> > ChainedPhis;
73+ DenseSet <AssertingVH<PHINode>> ChainedPhis;
7274
7375 // / \brief When true, expressions are expanded in "canonical" form. In
7476 // / particular, addrecs are expanded as arithmetic based on a canonical
0 commit comments