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

David Blaikie via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 19 18:23:35 PDT 2016


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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160419/0af329f2/attachment.html>


More information about the llvm-commits mailing list