[llvm-commits] [PATCH] Make Inits FoldingSetNodes

Chris Lattner clattner at apple.com
Thu Jul 14 14:24:34 PDT 2011


On Jul 14, 2011, at 2:08 PM, David A. Greene wrote:

> Chris Lattner <clattner at apple.com> writes:
> 
>> On Jul 14, 2011, at 8:13 AM, David A. Greene wrote:
> 
>> What you're implementing here is a way to unique init's.  Folding set
>> is a map data structure that is useful when the "key" is very
>> expensive to represent.  As such, it makes sense for vectors of
>> arguments, but doesn't make sense for trivial things.  If you want to
>> unique a CodeInit, just use:
>> 
>> StringMap<CodeInit*> TheCodeInits;
>> 
>> See lib/VMCore/Type.cpp which uniques llvm IR types as an example.
> 
> Yes, this can be done.  I made the base Init a FoldingSet node so
> there would be one pool of Inits.  If you think multiple pools is
> better, I guess I can do that.

Yep, thanks Dave.  It might be best to just ignore FoldingSet all-together and just use map<std::vector<...>, RecInit*> or whatever.  This avoids the space overhead of the foldingsetnode base class.

-Chris



More information about the llvm-commits mailing list