diff --git a/llvm/lib/DebugInfo/GSYM/GsymCreator.cpp b/llvm/lib/DebugInfo/GSYM/GsymCreator.cpp --- a/llvm/lib/DebugInfo/GSYM/GsymCreator.cpp +++ b/llvm/lib/DebugInfo/GSYM/GsymCreator.cpp @@ -294,6 +294,7 @@ if (S.empty()) return 0; std::lock_guard Guard(Mutex); + CachedHashStringRef CHStr(S); if (Copy) { // We need to provide backing storage for the string if requested // since StringTableBuilder stores references to strings. Any string @@ -301,11 +302,11 @@ // copied, but any string created by code will need to be copied. // This allows GsymCreator to be really fast when parsing DWARF and // other object files as most strings don't need to be copied. - CachedHashStringRef CHStr(S); if (!StrTab.contains(CHStr)) - S = StringStorage.insert(S).first->getKey(); + CHStr = CachedHashStringRef{StringStorage.insert(S).first->getKey(), + CHStr.hash()}; } - return StrTab.add(S); + return StrTab.add(CHStr); } void GsymCreator::addFunctionInfo(FunctionInfo &&FI) {