forked from OSchip/llvm-project
[NFCI] Change the data structure of MaybeODRUseExprSet
In 1eddce41
, I fixed a non-deterministic result problem by switching a
SmallPtrSet to a SmallSetVector to ensure we iterated it
deterministically. Unfortunately, this seems to show a surprisingly
significant compiletime impact.
This patch does 2 things in an attempt to fix this:
First, it makes the 'small size' optimization 4 instead of 2. As these
are pointers, this only increases the size of Sema by 4
sizeof(pointer)s (2 for the set, 2 for the vector).
Second, instead of using SmallSetVector, which is a SmallVector +
SmallDenseSet, it uses a SetVector of SmallVector + SmallPtrSet. The
hope is that the pointer-specific optimizations of the SmallPtrSet will
minimize the impact on compile-time.
This commit is contained in:
parent
8c61f13a0f
commit
837ca47960
|
@ -627,7 +627,8 @@ public:
|
|||
/// we won't know until all lvalue-to-rvalue and discarded value conversions
|
||||
/// have been applied to all subexpressions of the enclosing full expression.
|
||||
/// This is cleared at the end of each full expression.
|
||||
using MaybeODRUseExprSet = llvm::SmallSetVector<Expr *, 2>;
|
||||
using MaybeODRUseExprSet = llvm::SetVector<Expr *, SmallVector<Expr *, 4>,
|
||||
llvm::SmallPtrSet<Expr *, 4>>;
|
||||
MaybeODRUseExprSet MaybeODRUseExprs;
|
||||
|
||||
std::unique_ptr<sema::FunctionScopeInfo> CachedFunctionScope;
|
||||
|
|
Loading…
Reference in New Issue