diff options
Diffstat (limited to 'llvm/utils')
| -rw-r--r-- | llvm/utils/TableGen/StringToOffsetTable.h | 13 | 
1 files changed, 7 insertions, 6 deletions
diff --git a/llvm/utils/TableGen/StringToOffsetTable.h b/llvm/utils/TableGen/StringToOffsetTable.h index ac9422c5d72..803f5bd5cf0 100644 --- a/llvm/utils/TableGen/StringToOffsetTable.h +++ b/llvm/utils/TableGen/StringToOffsetTable.h @@ -26,16 +26,17 @@ class StringToOffsetTable {    std::string AggregateString;  public: -  unsigned GetOrAddStringOffset(StringRef Str) { -    unsigned &Entry = StringOffset[Str]; -    if (Entry == 0) { +  unsigned GetOrAddStringOffset(StringRef Str, bool appendZero = true) { +    StringMapEntry<unsigned> &Entry = StringOffset.GetOrCreateValue(Str, -1U); +    if (Entry.getValue() == -1U) {        // Add the string to the aggregate if this is the first time found. -      Entry = AggregateString.size(); +      Entry.setValue(AggregateString.size());        AggregateString.append(Str.begin(), Str.end()); -      AggregateString += '\0'; +      if (appendZero) +        AggregateString += '\0';      } -    return Entry; +    return Entry.getValue();    }    void EmitString(raw_ostream &O) {  | 

