[llvm] r185852 - StringRef: add DenseMapInfo for StringRef.

Manman Ren mren at apple.com
Mon Jul 8 12:47:06 PDT 2013


On Jul 8, 2013, at 12:43 PM, Eric Christopher <echristo at gmail.com> wrote:

>> Remove the implementation in include/llvm/Support/YAMLTraits.h.
>> Added a DenseMap type DITypeHashMap in DebugInfo.h:
>>  DenseMap<std::pair<StringRef, unsigned>, MDNode*>
>> 
> 
> I imagine you have a follow-on patch for this, but I'd rather see it
> as part of the next patch.

Yes there will be follow-on patches that use DITypeHashMap.
Yes YAML code is using a DenseMap of StringRef.

Manman

> 
> I assume, also, that the YAML code is exercising it?
> 
> -eric
> 
>> Modified:
>>    llvm/trunk/include/llvm/ADT/StringRef.h
>>    llvm/trunk/include/llvm/DebugInfo.h
>>    llvm/trunk/include/llvm/Support/YAMLTraits.h
>>    llvm/trunk/lib/Support/StringRef.cpp
>> 
>> Modified: llvm/trunk/include/llvm/ADT/StringRef.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/StringRef.h?rev=185852&r1=185851&r2=185852&view=diff
>> ==============================================================================
>> --- llvm/trunk/include/llvm/ADT/StringRef.h (original)
>> +++ llvm/trunk/include/llvm/ADT/StringRef.h Mon Jul  8 14:17:48 2013
>> @@ -548,6 +548,14 @@ namespace llvm {
>>   template <typename T> struct isPodLike;
>>   template <> struct isPodLike<StringRef> { static const bool value = true; };
>> 
>> +  template <typename T> struct DenseMapInfo;
>> +  template<> struct DenseMapInfo<StringRef> {
>> +    static StringRef getEmptyKey() { return StringRef(); }
>> +    static StringRef getTombstoneKey() { return StringRef(" ", 0); }
>> +    static unsigned getHashValue(StringRef const val);
>> +    static bool isEqual(StringRef const lhs,
>> +                        StringRef const rhs) { return lhs.equals(rhs); }
>> +  };
>> }
>> 
>> #endif
>> 
>> Modified: llvm/trunk/include/llvm/DebugInfo.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo.h?rev=185852&r1=185851&r2=185852&view=diff
>> ==============================================================================
>> --- llvm/trunk/include/llvm/DebugInfo.h (original)
>> +++ llvm/trunk/include/llvm/DebugInfo.h Mon Jul  8 14:17:48 2013
>> @@ -17,6 +17,7 @@
>> #ifndef LLVM_DEBUGINFO_H
>> #define LLVM_DEBUGINFO_H
>> 
>> +#include "llvm/ADT/DenseMap.h"
>> #include "llvm/ADT/SmallPtrSet.h"
>> #include "llvm/ADT/SmallVector.h"
>> #include "llvm/ADT/StringRef.h"
>> @@ -45,6 +46,9 @@ namespace llvm {
>>   class DIType;
>>   class DIObjCProperty;
>> 
>> +  /// Map from a pair <unique type name, an unsigned flag> to MDNode.
>> +  typedef DenseMap<std::pair<StringRef, unsigned>, MDNode*> DITypeHashMap;
>> +
>>   /// DIDescriptor - A thin wraper around MDNode to access encoded debug info.
>>   /// This should not be stored in a container, because the underlying MDNode
>>   /// may change in certain situations.
>> 
>> Modified: llvm/trunk/include/llvm/Support/YAMLTraits.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/YAMLTraits.h?rev=185852&r1=185851&r2=185852&view=diff
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Support/YAMLTraits.h (original)
>> +++ llvm/trunk/include/llvm/Support/YAMLTraits.h Mon Jul  8 14:17:48 2013
>> @@ -760,15 +760,7 @@ private:
>>     }
>>     static inline bool classof(const MapHNode *) { return true; }
>> 
>> -    struct StrMappingInfo {
>> -      static StringRef getEmptyKey() { return StringRef(); }
>> -      static StringRef getTombstoneKey() { return StringRef(" ", 0); }
>> -      static unsigned getHashValue(StringRef const val) {
>> -                                                return llvm::HashString(val); }
>> -      static bool isEqual(StringRef const lhs,
>> -                          StringRef const rhs) { return lhs.equals(rhs); }
>> -    };
>> -    typedef llvm::DenseMap<StringRef, HNode*, StrMappingInfo> NameToNode;
>> +    typedef llvm::DenseMap<StringRef, HNode*> NameToNode;
>> 
>>     bool isValidKey(StringRef key);
>> 
>> 
>> Modified: llvm/trunk/lib/Support/StringRef.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/StringRef.cpp?rev=185852&r1=185851&r2=185852&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Support/StringRef.cpp (original)
>> +++ llvm/trunk/lib/Support/StringRef.cpp Mon Jul  8 14:17:48 2013
>> @@ -11,6 +11,7 @@
>> #include "llvm/ADT/APInt.h"
>> #include "llvm/ADT/Hashing.h"
>> #include "llvm/ADT/OwningPtr.h"
>> +#include "llvm/ADT/StringExtras.h"
>> #include "llvm/ADT/edit_distance.h"
>> #include <bitset>
>> 
>> @@ -465,3 +466,7 @@ bool StringRef::getAsInteger(unsigned Ra
>> hash_code llvm::hash_value(StringRef S) {
>>   return hash_combine_range(S.begin(), S.end());
>> }
>> +
>> +unsigned DenseMapInfo<StringRef>::getHashValue(StringRef const val) {
>> +  return llvm::HashString(val);
>> +}
>> 
>> 
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130708/34443ef8/attachment.html>


More information about the llvm-commits mailing list