[llvm] r266835 - IR: Use std::vector instead of SmallPtrSet for distinct nodes, NFC

Duncan P. N. Exon Smith via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 19 18:25:49 PDT 2016


Right.  I figure this will either be large or empty.

> On 2016-Apr-19, at 18:23, David Blaikie <dblaikie at gmail.com> wrote:
> 
> SmallVector? (or I guess std::vector allows this to not impact the size of LLVMContext very much & there's no small size that'd practically fit all the nodes in the small space when used anyway?)
> 
> On Tue, Apr 19, 2016 at 4:59 PM, Duncan P. N. Exon Smith via llvm-commits <llvm-commits at lists.llvm.org> wrote:
> Author: dexonsmith
> Date: Tue Apr 19 18:59:13 2016
> New Revision: 266835
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=266835&view=rev
> Log:
> IR: Use std::vector instead of SmallPtrSet for distinct nodes, NFC
> 
> We never use the set-ness of SmallPtrSet for distinct nodes.  Eventually
> we may start garbage-collecting or reference-counting nodes (in which
> cases we'd want to remove things from this collection, and a fast erase
> would be valuable), but in the meantime a vector is sufficient.
> 
> Modified:
>     llvm/trunk/lib/IR/LLVMContextImpl.h
>     llvm/trunk/lib/IR/Metadata.cpp
> 
> Modified: llvm/trunk/lib/IR/LLVMContextImpl.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/LLVMContextImpl.h?rev=266835&r1=266834&r2=266835&view=diff
> ==============================================================================
> --- llvm/trunk/lib/IR/LLVMContextImpl.h (original)
> +++ llvm/trunk/lib/IR/LLVMContextImpl.h Tue Apr 19 18:59:13 2016
> @@ -33,6 +33,7 @@
>  #include "llvm/IR/Metadata.h"
>  #include "llvm/IR/ValueHandle.h"
>  #include "llvm/Support/Dwarf.h"
> +#include <vector>
> 
>  namespace llvm {
> 
> @@ -1026,9 +1027,9 @@ public:
> 
>    // MDNodes may be uniqued or not uniqued.  When they're not uniqued, they
>    // aren't in the MDNodeSet, but they're still shared between objects, so no
> -  // one object can destroy them.  This set allows us to at least destroy them
> -  // on Context destruction.
> -  SmallPtrSet<MDNode *, 1> DistinctMDNodes;
> +  // one object can destroy them.  Keep track of them here so we can delete
> +  // them on context teardown.
> +  std::vector<MDNode *> DistinctMDNodes;
> 
>    DenseMap<Type*, ConstantAggregateZero*> CAZConstants;
> 
> 
> Modified: llvm/trunk/lib/IR/Metadata.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Metadata.cpp?rev=266835&r1=266834&r2=266835&view=diff
> ==============================================================================
> --- llvm/trunk/lib/IR/Metadata.cpp (original)
> +++ llvm/trunk/lib/IR/Metadata.cpp Tue Apr 19 18:59:13 2016
> @@ -806,7 +806,7 @@ void MDNode::storeDistinctInContext() {
>  #include "llvm/IR/Metadata.def"
>    }
> 
> -  getContext().pImpl->DistinctMDNodes.insert(this);
> +  getContext().pImpl->DistinctMDNodes.push_back(this);
>  }
> 
>  void MDNode::replaceOperandWith(unsigned I, Metadata *New) {
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
> 



More information about the llvm-commits mailing list