Index: include/llvm/ADT/SmallString.h =================================================================== --- include/llvm/ADT/SmallString.h +++ include/llvm/ADT/SmallString.h @@ -97,29 +97,29 @@ /// Check for string equality. This is more efficient than compare() when /// the relative ordering of inequal strings isn't needed. bool equals(StringRef RHS) const { - return str().equals(RHS); + return StringRef().equals(RHS); } /// Check for string equality, ignoring case. bool equals_lower(StringRef RHS) const { - return str().equals_lower(RHS); + return StringRef().equals_lower(RHS); } /// Compare two strings; the result is -1, 0, or 1 if this string is /// lexicographically less than, equal to, or greater than the \p RHS. int compare(StringRef RHS) const { - return str().compare(RHS); + return StringRef().compare(RHS); } /// compare_lower - Compare two strings, ignoring case. int compare_lower(StringRef RHS) const { - return str().compare_lower(RHS); + return StringRef().compare_lower(RHS); } /// compare_numeric - Compare two strings, treating sequences of digits as /// numbers. int compare_numeric(StringRef RHS) const { - return str().compare_numeric(RHS); + return StringRef().compare_numeric(RHS); } /// @} @@ -128,12 +128,12 @@ /// startswith - Check if this string starts with the given \p Prefix. bool startswith(StringRef Prefix) const { - return str().startswith(Prefix); + return StringRef().startswith(Prefix); } /// endswith - Check if this string ends with the given \p Suffix. bool endswith(StringRef Suffix) const { - return str().endswith(Suffix); + return StringRef().endswith(Suffix); } /// @} @@ -145,7 +145,7 @@ /// \return - The index of the first occurrence of \p C, or npos if not /// found. size_t find(char C, size_t From = 0) const { - return str().find(C, From); + return StringRef().find(C, From); } /// Search for the first string \p Str in the string. @@ -153,7 +153,7 @@ /// \returns The index of the first occurrence of \p Str, or npos if not /// found. size_t find(StringRef Str, size_t From = 0) const { - return str().find(Str, From); + return StringRef().find(Str, From); } /// Search for the last character \p C in the string. @@ -161,7 +161,7 @@ /// \returns The index of the last occurrence of \p C, or npos if not /// found. size_t rfind(char C, size_t From = StringRef::npos) const { - return str().rfind(C, From); + return StringRef().rfind(C, From); } /// Search for the last string \p Str in the string. @@ -169,13 +169,13 @@ /// \returns The index of the last occurrence of \p Str, or npos if not /// found. size_t rfind(StringRef Str) const { - return str().rfind(Str); + return StringRef().rfind(Str); } /// Find the first character in the string that is \p C, or npos if not /// found. Same as find. size_t find_first_of(char C, size_t From = 0) const { - return str().find_first_of(C, From); + return StringRef().find_first_of(C, From); } /// Find the first character in the string that is in \p Chars, or npos if @@ -183,13 +183,13 @@ /// /// Complexity: O(size() + Chars.size()) size_t find_first_of(StringRef Chars, size_t From = 0) const { - return str().find_first_of(Chars, From); + return StringRef().find_first_of(Chars, From); } /// Find the first character in the string that is not \p C or npos if not /// found. size_t find_first_not_of(char C, size_t From = 0) const { - return str().find_first_not_of(C, From); + return StringRef().find_first_not_of(C, From); } /// Find the first character in the string that is not in the string @@ -197,13 +197,13 @@ /// /// Complexity: O(size() + Chars.size()) size_t find_first_not_of(StringRef Chars, size_t From = 0) const { - return str().find_first_not_of(Chars, From); + return StringRef().find_first_not_of(Chars, From); } /// Find the last character in the string that is \p C, or npos if not /// found. size_t find_last_of(char C, size_t From = StringRef::npos) const { - return str().find_last_of(C, From); + return StringRef().find_last_of(C, From); } /// Find the last character in the string that is in \p C, or npos if not @@ -212,7 +212,7 @@ /// Complexity: O(size() + Chars.size()) size_t find_last_of( StringRef Chars, size_t From = StringRef::npos) const { - return str().find_last_of(Chars, From); + return StringRef().find_last_of(Chars, From); } /// @} @@ -221,16 +221,26 @@ /// Return the number of occurrences of \p C in the string. size_t count(char C) const { - return str().count(C); + return StringRef().count(C); } /// Return the number of non-overlapped occurrences of \p Str in the /// string. size_t count(StringRef Str) const { - return str().count(Str); + return StringRef().count(Str); } /// @} + /// @name String Operations + /// @{ + + // Convert the given ASCII string to lowercase. + std::string lower() const { return StringRef().lower(); } + + /// Convert the given ASCII string to uppercase. + std::string upper() const { return StringRef().upper(); } + + /// @} /// @name Substring Operations /// @{ @@ -244,7 +254,7 @@ /// exceeds the number of characters remaining in the string, the string /// suffix (starting with \p Start) will be returned. StringRef substr(size_t Start, size_t N = StringRef::npos) const { - return str().substr(Start, N); + return StringRef().substr(Start, N); } /// Return a reference to the substring from [Start, End). @@ -258,13 +268,13 @@ /// number of characters remaining in the string, the string suffix /// (starting with \p Start) will be returned. StringRef slice(size_t Start, size_t End) const { - return str().slice(Start, End); + return StringRef().slice(Start, End); } // Extra methods. - /// Explicit conversion to StringRef. - StringRef str() const { return StringRef(this->begin(), this->size()); } + /// Explicit conversion to std::string. + std::string to_str() const { return std::string(begin(), size()); } // TODO: Make this const, if it's safe... const char* c_str() { @@ -274,7 +284,7 @@ } /// Implicit conversion to StringRef. - operator StringRef() const { return str(); } + operator StringRef() const { return StringRef(begin(), size()); } // Extra operators. const SmallString &operator=(StringRef RHS) { Index: include/llvm/ADT/Twine.h =================================================================== --- include/llvm/ADT/Twine.h +++ include/llvm/ADT/Twine.h @@ -10,6 +10,7 @@ #ifndef LLVM_ADT_TWINE_H #define LLVM_ADT_TWINE_H +#include "llvm/ADT/SmallVector.h" #include "llvm/ADT/StringRef.h" #include "llvm/Support/DataTypes.h" #include "llvm/Support/ErrorHandling.h" @@ -100,6 +101,9 @@ /// A pointer to a StringRef instance. StringRefKind, + /// A pointer to a SmallString instance. + SmallStringKind, + /// A char value reinterpreted as a pointer, to render as a character. CharKind, @@ -136,6 +140,7 @@ const char *cString; const std::string *stdString; const StringRef *stringRef; + const SmallVectorImpl *smallString; char character; unsigned int decUI; int decI; @@ -289,6 +294,13 @@ assert(isValid() && "Invalid twine!"); } + /// Construct from a SmallString. + /*implicit*/ Twine(const SmallVectorImpl &Str) + : LHSKind(SmallStringKind), RHSKind(EmptyKind) { + LHS.smallString = &Str; + assert(isValid() && "Invalid twine!"); + } + /// Construct from a char. explicit Twine(char Val) : LHSKind(CharKind), RHSKind(EmptyKind) { @@ -402,6 +414,7 @@ case CStringKind: case StdStringKind: case StringRefKind: + case SmallStringKind: return true; default: return false; @@ -435,6 +448,7 @@ case CStringKind: return StringRef(LHS.cString); case StdStringKind: return StringRef(*LHS.stdString); case StringRefKind: return *LHS.stringRef; + case SmallStringKind:return StringRef(LHS.smallString->data(),LHS.smallString->size()); } } Index: include/llvm/MC/MCContext.h =================================================================== --- include/llvm/MC/MCContext.h +++ include/llvm/MC/MCContext.h @@ -232,6 +232,9 @@ /// reference and return it. /// /// @param Name - The symbol name, which must be unique across all symbols. + MCSymbol *GetOrCreateSymbol(const SmallVectorImpl &Name) { + return GetOrCreateSymbol(StringRef(Name.data(), Name.size())); + } MCSymbol *GetOrCreateSymbol(StringRef Name); MCSymbol *GetOrCreateSymbol(const Twine &Name); Index: include/llvm/Option/ArgList.h =================================================================== --- include/llvm/Option/ArgList.h +++ include/llvm/Option/ArgList.h @@ -286,6 +286,9 @@ const char *MakeArgString(std::string Str) const { return MakeArgString(StringRef(Str)); } + const char *MakeArgString(const SmallVectorImpl &Str) const { + return MakeArgString(StringRef(Str.data(), Str.size())); + } const char *MakeArgString(const Twine &Str) const; /// \brief Create an arg string for (\p LHS + \p RHS), reusing the Index: include/llvm/Support/FileUtilities.h =================================================================== --- include/llvm/Support/FileUtilities.h +++ include/llvm/Support/FileUtilities.h @@ -51,7 +51,7 @@ ~FileRemover() { if (DeleteIt) { // Ignore problems deleting the file. - sys::fs::remove(Filename.str()); + sys::fs::remove(Filename); } } @@ -61,7 +61,7 @@ void setFile(const Twine& filename, bool deleteIt = true) { if (DeleteIt) { // Ignore problems deleting the file. - sys::fs::remove(Filename.str()); + sys::fs::remove(Filename); } Filename.clear(); Index: include/llvm/Support/raw_ostream.h =================================================================== --- include/llvm/Support/raw_ostream.h +++ include/llvm/Support/raw_ostream.h @@ -14,6 +14,7 @@ #ifndef LLVM_SUPPORT_RAW_OSTREAM_H #define LLVM_SUPPORT_RAW_OSTREAM_H +#include "llvm/ADT/SmallVector.h" #include "llvm/ADT/StringRef.h" #include "llvm/Support/Compiler.h" #include "llvm/Support/DataTypes.h" @@ -185,6 +186,10 @@ return write(Str.data(), Str.length()); } + raw_ostream &operator<<(const llvm::SmallVectorImpl &Str) { + return write(Str.data(), Str.size()); + } + raw_ostream &operator<<(unsigned long N); raw_ostream &operator<<(long N); raw_ostream &operator<<(unsigned long long N); Index: include/llvm/TableGen/StringToOffsetTable.h =================================================================== --- include/llvm/TableGen/StringToOffsetTable.h +++ include/llvm/TableGen/StringToOffsetTable.h @@ -44,7 +44,7 @@ // Escape the string. SmallString<256> Str; raw_svector_ostream(Str).write_escaped(AggregateString); - AggregateString = Str.str(); + AggregateString = Str.to_str(); O << " \""; unsigned CharsPrinted = 0; Index: lib/Bitcode/Reader/BitcodeReader.cpp =================================================================== --- lib/Bitcode/Reader/BitcodeReader.cpp +++ lib/Bitcode/Reader/BitcodeReader.cpp @@ -743,7 +743,7 @@ assert(Record[i] == 0 && "Value string not null terminated"); } - B.addAttribute(KindStr.str(), ValStr.str()); + B.addAttribute(KindStr, ValStr); } } @@ -1125,7 +1125,7 @@ unsigned Kind = Record[0]; SmallString<8> Name(Record.begin()+1, Record.end()); - unsigned NewKind = TheModule->getMDKindID(Name.str()); + unsigned NewKind = TheModule->getMDKindID(Name); if (!MDKindMap.insert(std::make_pair(Kind, NewKind)).second) return Error(BitcodeError::ConflictingMETADATA_KINDRecords); break; Index: lib/CodeGen/AsmPrinter/AsmPrinter.cpp =================================================================== --- lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -2071,7 +2071,7 @@ MCSymbol *AsmPrinter::GetExternalSymbolSymbol(StringRef Sym) const { SmallString<60> NameStr; Mang->getNameWithPrefix(NameStr, Sym); - return OutContext.GetOrCreateSymbol(NameStr.str()); + return OutContext.GetOrCreateSymbol(StringRef(NameStr)); } Index: lib/CodeGen/AsmPrinter/OcamlGCPrinter.cpp =================================================================== --- lib/CodeGen/AsmPrinter/OcamlGCPrinter.cpp +++ lib/CodeGen/AsmPrinter/OcamlGCPrinter.cpp @@ -61,7 +61,7 @@ SmallString<128> TmpStr; AP.Mang->getNameWithPrefix(TmpStr, SymName); - MCSymbol *Sym = AP.OutContext.GetOrCreateSymbol(TmpStr); + MCSymbol *Sym = AP.OutContext.GetOrCreateSymbol(StringRef(TmpStr)); AP.OutStreamer.EmitSymbolAttribute(Sym, MCSA_Global); AP.OutStreamer.EmitLabel(Sym); Index: lib/CodeGen/MachineFunction.cpp =================================================================== --- lib/CodeGen/MachineFunction.cpp +++ lib/CodeGen/MachineFunction.cpp @@ -471,7 +471,7 @@ SmallString<60> Name; raw_svector_ostream(Name) << Prefix << "JTI" << getFunctionNumber() << '_' << JTI; - return Ctx.GetOrCreateSymbol(Name.str()); + return Ctx.GetOrCreateSymbol(Name); } /// getPICBaseSymbol - Return a function-local symbol to represent the PIC Index: lib/CodeGen/TargetLoweringObjectFileImpl.cpp =================================================================== --- lib/CodeGen/TargetLoweringObjectFileImpl.cpp +++ lib/CodeGen/TargetLoweringObjectFileImpl.cpp @@ -62,7 +62,7 @@ const MCSymbol *Sym) const { SmallString<64> NameData("DW.ref."); NameData += Sym->getName(); - MCSymbol *Label = getContext().GetOrCreateSymbol(NameData); + MCSymbol *Label = getContext().GetOrCreateSymbol(StringRef(NameData)); Streamer.EmitSymbolAttribute(Label, MCSA_Hidden); Streamer.EmitSymbolAttribute(Label, MCSA_Weak); StringRef Prefix = ".data."; @@ -274,8 +274,8 @@ Flags |= ELF::SHF_GROUP; } - return getContext().getELFSection(Name.str(), - getELFSectionType(Name.str(), Kind), + return getContext().getELFSection(Name, + getELFSectionType(Name, Kind), Flags, Kind, 0, Group); } Index: lib/DebugInfo/DWARFDebugLine.cpp =================================================================== --- lib/DebugInfo/DWARFDebugLine.cpp +++ lib/DebugInfo/DWARFDebugLine.cpp @@ -675,7 +675,7 @@ // sys::path::append skips empty strings. sys::path::append(FilePath, IncludeDir, FileName); - Result = FilePath.str(); + Result = FilePath.to_str(); return true; } Index: lib/IR/AsmWriter.cpp =================================================================== --- lib/IR/AsmWriter.cpp +++ lib/IR/AsmWriter.cpp @@ -1013,7 +1013,7 @@ (StrVal[1] >= '0' && StrVal[1] <= '9'))) { // Reparse stringized version! if (APFloat(APFloat::IEEEdouble, StrVal).convertToDouble() == Val) { - Out << StrVal.str(); + Out << StrVal; return; } } Index: lib/IR/GCOV.cpp =================================================================== --- lib/IR/GCOV.cpp +++ lib/IR/GCOV.cpp @@ -493,7 +493,7 @@ if (S < I) Result.append(S, I); - return Result.str(); + return Result.to_str(); } std::string FileInfo::getCoveragePath(StringRef Filename, Index: lib/LineEditor/LineEditor.cpp =================================================================== --- lib/LineEditor/LineEditor.cpp +++ lib/LineEditor/LineEditor.cpp @@ -23,7 +23,7 @@ SmallString<32> Path; if (sys::path::home_directory(Path)) { sys::path::append(Path, "." + ProgName + "-history"); - return Path.str(); + return Path.to_str(); } return std::string(); } Index: lib/Linker/LinkModules.cpp =================================================================== --- lib/Linker/LinkModules.cpp +++ lib/Linker/LinkModules.cpp @@ -234,7 +234,7 @@ if (!DstSTy->hasName() || DstSTy->getName().size() > SrcName.size()) { TmpName.insert(TmpName.end(), SrcName.begin(), SrcName.end()); SrcSTy->setName(""); - DstSTy->setName(TmpName.str()); + DstSTy->setName(TmpName.to_str()); TmpName.clear(); } } Index: lib/MC/MCAsmStreamer.cpp =================================================================== --- lib/MC/MCAsmStreamer.cpp +++ lib/MC/MCAsmStreamer.cpp @@ -268,7 +268,7 @@ } CommentStream.flush(); - StringRef Comments = CommentToEmit.str(); + StringRef Comments = CommentToEmit; assert(Comments.back() == '\n' && "Comment array not newline terminated"); Index: lib/MC/MCAssembler.cpp =================================================================== --- lib/MC/MCAssembler.cpp +++ lib/MC/MCAssembler.cpp @@ -772,7 +772,7 @@ case MCFragment::FT_LEB: { const MCLEBFragment &LF = cast(F); - OW->WriteBytes(LF.getContents().str()); + OW->WriteBytes(LF.getContents()); break; } @@ -788,12 +788,12 @@ case MCFragment::FT_Dwarf: { const MCDwarfLineAddrFragment &OF = cast(F); - OW->WriteBytes(OF.getContents().str()); + OW->WriteBytes(OF.getContents()); break; } case MCFragment::FT_DwarfFrame: { const MCDwarfCallFrameFragment &CF = cast(F); - OW->WriteBytes(CF.getContents().str()); + OW->WriteBytes(CF.getContents()); break; } } Index: lib/MC/MCContext.cpp =================================================================== --- lib/MC/MCContext.cpp +++ lib/MC/MCContext.cpp @@ -216,7 +216,7 @@ MCSymbol *MCContext::LookupSymbol(const Twine &Name) const { SmallString<128> NameSV; Name.toVector(NameSV); - return LookupSymbol(NameSV.str()); + return LookupSymbol(StringRef(NameSV)); } //===----------------------------------------------------------------------===// @@ -239,7 +239,7 @@ Name += Section; // Do the lookup, if we have a hit, return it. - const MCSectionMachO *&Entry = MachOUniquingMap[Name.str()]; + const MCSectionMachO *&Entry = MachOUniquingMap[Name]; if (Entry) return Entry; // Otherwise, return a new section. Index: lib/MC/MCDisassembler/Disassembler.cpp =================================================================== --- lib/MC/MCDisassembler/Disassembler.cpp +++ lib/MC/MCDisassembler/Disassembler.cpp @@ -127,7 +127,7 @@ formatted_raw_ostream &FormattedOS) { // Flush the stream before taking its content. DC->CommentStream.flush(); - StringRef Comments = DC->CommentsToEmit.str(); + StringRef Comments = DC->CommentsToEmit; // Get the default information for printing a comment. const MCAsmInfo *MAI = DC->getAsmInfo(); const char *CommentBegin = MAI->getCommentString(); Index: lib/MC/MCDwarf.cpp =================================================================== --- lib/MC/MCDwarf.cpp +++ lib/MC/MCDwarf.cpp @@ -1276,7 +1276,7 @@ Augmentation += "R"; if (IsSignalFrame) Augmentation += "S"; - streamer.EmitBytes(Augmentation.str()); + streamer.EmitBytes(Augmentation); } streamer.EmitIntValue(0, 1); Index: lib/Object/MachOObjectFile.cpp =================================================================== --- lib/Object/MachOObjectFile.cpp +++ lib/Object/MachOObjectFile.cpp @@ -1513,7 +1513,7 @@ if (Stack.size() != Other.Stack.size()) return false; // Not equal if different cumulative strings. - if (!CumulativeString.str().equals(Other.CumulativeString.str())) + if (!CumulativeString.equals(Other.CumulativeString)) return false; // Equal if all nodes in both stacks match. for (unsigned i=0; i < Stack.size(); ++i) { @@ -1535,7 +1535,7 @@ } StringRef ExportEntry::name() const { - return CumulativeString.str(); + return CumulativeString; } uint64_t ExportEntry::flags() const { Index: lib/Support/APInt.cpp =================================================================== --- lib/Support/APInt.cpp +++ lib/Support/APInt.cpp @@ -2275,7 +2275,7 @@ std::string APInt::toString(unsigned Radix = 10, bool Signed = true) const { SmallString<40> S; toString(S, Radix, Signed, /* formatAsCLiteral = */false); - return S.str(); + return S.to_str(); } @@ -2284,13 +2284,13 @@ this->toStringUnsigned(U); this->toStringSigned(S); dbgs() << "APInt(" << BitWidth << "b, " - << U.str() << "u " << S.str() << "s)"; + << U << "u " << S << "s)"; } void APInt::print(raw_ostream &OS, bool isSigned) const { SmallString<40> S; this->toString(S, 10, isSigned, /* formatAsCLiteral = */false); - OS << S.str(); + OS << S.to_str(); } // This implements a variety of operations on a representation of Index: lib/Support/GraphWriter.cpp =================================================================== --- lib/Support/GraphWriter.cpp +++ lib/Support/GraphWriter.cpp @@ -75,7 +75,7 @@ } errs() << "Writing '" << Filename << "'... "; - return Filename.str(); + return Filename.to_str(); } // Execute the graph viewer. Return true if there were errors. Index: lib/Support/LockFileManager.cpp =================================================================== --- lib/Support/LockFileManager.cpp +++ lib/Support/LockFileManager.cpp @@ -91,7 +91,7 @@ UniqueLockFileName += "-%%%%%%%%"; int UniqueLockFileID; if (std::error_code EC = sys::fs::createUniqueFile( - UniqueLockFileName.str(), UniqueLockFileID, UniqueLockFileName)) { + UniqueLockFileName, UniqueLockFileID, UniqueLockFileName)) { Error = EC; return; } @@ -124,7 +124,7 @@ while (1) { // Create a link from the lock file name. If this succeeds, we're done. std::error_code EC = - sys::fs::create_link(UniqueLockFileName.str(), LockFileName.str()); + sys::fs::create_link(UniqueLockFileName, LockFileName); if (!EC) return; @@ -137,11 +137,11 @@ // from the lock file. if ((Owner = readLockFile(LockFileName))) { // Wipe out our unique lock file (it's useless now) - sys::fs::remove(UniqueLockFileName.str()); + sys::fs::remove(UniqueLockFileName); return; } - if (!sys::fs::exists(LockFileName.str())) { + if (!sys::fs::exists(LockFileName)) { // The previous owner released the lock file before we could read it. // Try to get ownership again. continue; @@ -149,7 +149,7 @@ // There is a lock file that nobody owns; try to clean it up and get // ownership. - if ((EC = sys::fs::remove(LockFileName.str()))) { + if ((EC = sys::fs::remove(LockFileName))) { Error = EC; return; } @@ -171,8 +171,8 @@ return; // Since we own the lock, remove the lock file and our own unique lock file. - sys::fs::remove(LockFileName.str()); - sys::fs::remove(UniqueLockFileName.str()); + sys::fs::remove(LockFileName); + sys::fs::remove(UniqueLockFileName); } LockFileManager::WaitForUnlockResult LockFileManager::waitForUnlock() { @@ -214,7 +214,7 @@ // If the lock file is no longer there, check if the original file is // available now. if (LockFileGone) { - if (sys::fs::exists(FileName.str())) { + if (sys::fs::exists(FileName)) { return Res_Success; } Index: lib/Support/Path.cpp =================================================================== --- lib/Support/Path.cpp +++ lib/Support/Path.cpp @@ -892,7 +892,7 @@ SmallString<128> path(Path.begin(), Path.end()); path::remove_filename(path); path::append(path, filename); - Path = path.str(); + Path = path.to_str(); Status = st; } Index: lib/Support/Process.cpp =================================================================== --- lib/Support/Process.cpp +++ lib/Support/Process.cpp @@ -88,7 +88,7 @@ SmallString<128> FilePath(Dir); path::append(FilePath, FileName); if (fs::exists(Twine(FilePath))) { - FoundPath = FilePath.str(); + FoundPath = FilePath.to_str(); break; } } Index: lib/Support/Triple.cpp =================================================================== --- lib/Support/Triple.cpp +++ lib/Support/Triple.cpp @@ -807,7 +807,7 @@ Triple += getVendorName(); Triple += "-"; Triple += getOSAndEnvironmentName(); - setTriple(Triple.str()); + setTriple(Triple); } void Triple::setVendorName(StringRef Str) { Index: lib/Support/Twine.cpp =================================================================== --- lib/Support/Twine.cpp +++ lib/Support/Twine.cpp @@ -72,6 +72,9 @@ case Twine::StringRefKind: OS << *Ptr.stringRef; break; + case Twine::SmallStringKind: + OS << *Ptr.smallString; + break; case Twine::CharKind: OS << Ptr.character; break; @@ -122,6 +125,10 @@ OS << "stringref:\"" << Ptr.stringRef << "\""; break; + case Twine::SmallStringKind: + OS << "smallstring:\"" + << Ptr.smallString << "\""; + break; case Twine::CharKind: OS << "char:\"" << Ptr.character << "\""; break; Index: lib/Support/Windows/Path.inc =================================================================== --- lib/Support/Windows/Path.inc +++ lib/Support/Windows/Path.inc @@ -708,8 +708,8 @@ it.IterationHandle = intptr_t(FindHandle.take()); SmallString<128> directory_entry_path(path); - path::append(directory_entry_path, directory_entry_name_utf8.str()); - it.CurrentEntry = directory_entry(directory_entry_path.str()); + path::append(directory_entry_path, directory_entry_name_utf8); + it.CurrentEntry = directory_entry(directory_entry_path); return std::error_code(); } Index: lib/Target/TargetLoweringObjectFile.cpp =================================================================== --- lib/Target/TargetLoweringObjectFile.cpp +++ lib/Target/TargetLoweringObjectFile.cpp @@ -110,7 +110,7 @@ NameStr += DL->getPrivateGlobalPrefix(); TM.getNameWithPrefix(NameStr, GV, Mang); NameStr.append(Suffix.begin(), Suffix.end()); - return Ctx->GetOrCreateSymbol(NameStr.str()); + return Ctx->GetOrCreateSymbol(NameStr); } MCSymbol *TargetLoweringObjectFile::getCFIPersonalitySymbol( Index: lib/Target/TargetMachine.cpp =================================================================== --- lib/Target/TargetMachine.cpp +++ lib/Target/TargetMachine.cpp @@ -191,5 +191,5 @@ getNameWithPrefix(NameStr, GV, Mang); const TargetLoweringObjectFile &TLOF = getSubtargetImpl()->getTargetLowering()->getObjFileLowering(); - return TLOF.getContext().GetOrCreateSymbol(NameStr.str()); + return TLOF.getContext().GetOrCreateSymbol(NameStr); } Index: lib/Target/X86/AsmParser/X86AsmParser.cpp =================================================================== --- lib/Target/X86/AsmParser/X86AsmParser.cpp +++ lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -2465,7 +2465,7 @@ SmallString<16> Tmp; Tmp += Base; Tmp += ' '; - Op.setTokenValue(Tmp.str()); + Op.setTokenValue(Tmp); // If this instruction starts with an 'f', then it is a floating point stack // instruction. These come in up to three forms for 32-bit, 64-bit, and Index: lib/Transforms/Instrumentation/GCOVProfiling.cpp =================================================================== --- lib/Transforms/Instrumentation/GCOVProfiling.cpp +++ lib/Transforms/Instrumentation/GCOVProfiling.cpp @@ -425,7 +425,7 @@ if (CompileUnit == CU) { SmallString<128> Filename = GCovFile->getString(); sys::path::replace_extension(Filename, NewStem); - return Filename.str(); + return Filename.to_str(); } } } @@ -436,7 +436,7 @@ SmallString<128> CurPath; if (sys::fs::current_path(CurPath)) return FName; sys::path::append(CurPath, FName.str()); - return CurPath.str(); + return CurPath.to_str(); } bool GCOVProfiler::runOnModule(Module &M) { Index: tools/bugpoint/ExecutionDriver.cpp =================================================================== --- tools/bugpoint/ExecutionDriver.cpp +++ tools/bugpoint/ExecutionDriver.cpp @@ -274,7 +274,7 @@ << "\n"; exit(1); } - if (writeProgramToFile(BitcodeFile.str(), BitcodeFD, M)) { + if (writeProgramToFile(BitcodeFile.to_str(), BitcodeFD, M)) { errs() << ToolName << ": Error emitting bitcode to file '" << BitcodeFile << "'!\n"; exit(1); @@ -281,10 +281,10 @@ } // Remove the temporary bitcode file when we are done. - FileRemover BitcodeFileRemover(BitcodeFile.str(), !SaveTemps); + FileRemover BitcodeFileRemover(BitcodeFile, !SaveTemps); // Actually compile the program! - Interpreter->compileProgram(BitcodeFile.str(), Error, Timeout, MemoryLimit); + Interpreter->compileProgram(BitcodeFile.to_str(), Error, Timeout, MemoryLimit); } @@ -312,7 +312,7 @@ << EC.message() << "!\n"; exit(1); } - BitcodeFile = UniqueFilename.str(); + BitcodeFile = UniqueFilename.to_str(); if (writeProgramToFile(BitcodeFile, UniqueFD, Program)) { errs() << ToolName << ": Error emitting bitcode to file '" @@ -337,7 +337,7 @@ << EC.message() << "\n"; exit(1); } - OutputFile = UniqueFile.str(); + OutputFile = UniqueFile.to_str(); // Figure out which shared objects to run, if any. std::vector SharedObjs(AdditionalSOs); Index: tools/bugpoint/ExtractFunction.cpp =================================================================== --- tools/bugpoint/ExtractFunction.cpp +++ tools/bugpoint/ExtractFunction.cpp @@ -379,7 +379,7 @@ BlocksToNotExtractFile.keep(); std::string uniqueFN = "--extract-blocks-file="; - uniqueFN += Filename.str(); + uniqueFN += Filename.to_str(); const char *ExtraArg = uniqueFN.c_str(); std::vector PI; Index: tools/bugpoint/Miscompilation.cpp =================================================================== --- tools/bugpoint/Miscompilation.cpp +++ tools/bugpoint/Miscompilation.cpp @@ -954,14 +954,14 @@ << EC.message() << "\n"; exit(1); } - if (BD.writeProgramToFile(TestModuleBC.str(), TestModuleFD, Test)) { - errs() << "Error writing bitcode to `" << TestModuleBC.str() + if (BD.writeProgramToFile(TestModuleBC.to_str(), TestModuleFD, Test)) { + errs() << "Error writing bitcode to `" << TestModuleBC << "'\nExiting."; exit(1); } delete Test; - FileRemover TestModuleBCRemover(TestModuleBC.str(), !SaveTemps); + FileRemover TestModuleBCRemover(TestModuleBC, !SaveTemps); // Make the shared library SmallString<128> SafeModuleBC; @@ -974,15 +974,16 @@ exit(1); } - if (BD.writeProgramToFile(SafeModuleBC.str(), SafeModuleFD, Safe)) { - errs() << "Error writing bitcode to `" << SafeModuleBC.str() + if (BD.writeProgramToFile(SafeModuleBC.to_str(), SafeModuleFD, Safe)) { + errs() << "Error writing bitcode to `" << SafeModuleBC << "'\nExiting."; exit(1); } - FileRemover SafeModuleBCRemover(SafeModuleBC.str(), !SaveTemps); + FileRemover SafeModuleBCRemover(SafeModuleBC, !SaveTemps); - std::string SharedObject = BD.compileSharedObject(SafeModuleBC.str(), Error); + std::string SharedObject = + BD.compileSharedObject(SafeModuleBC.to_str(), Error); if (!Error.empty()) return false; delete Safe; @@ -991,7 +992,7 @@ // Run the code generator on the `Test' code, loading the shared library. // The function returns whether or not the new output differs from reference. - bool Result = BD.diffProgram(BD.getProgram(), TestModuleBC.str(), + bool Result = BD.diffProgram(BD.getProgram(), TestModuleBC.to_str(), SharedObject, false, &Error); if (!Error.empty()) return false; @@ -1049,8 +1050,8 @@ exit(1); } - if (writeProgramToFile(TestModuleBC.str(), TestModuleFD, ToCodeGen)) { - errs() << "Error writing bitcode to `" << TestModuleBC.str() + if (writeProgramToFile(TestModuleBC.to_str(), TestModuleFD, ToCodeGen)) { + errs() << "Error writing bitcode to `" << TestModuleBC << "'\nExiting."; exit(1); } @@ -1067,12 +1068,12 @@ exit(1); } - if (writeProgramToFile(SafeModuleBC.str(), SafeModuleFD, ToNotCodeGen)) { - errs() << "Error writing bitcode to `" << SafeModuleBC.str() + if (writeProgramToFile(SafeModuleBC.to_str(), SafeModuleFD, ToNotCodeGen)) { + errs() << "Error writing bitcode to `" << SafeModuleBC << "'\nExiting."; exit(1); } - std::string SharedObject = compileSharedObject(SafeModuleBC.str(), *Error); + std::string SharedObject = compileSharedObject(SafeModuleBC.to_str(), *Error); if (!Error->empty()) return true; delete ToNotCodeGen; @@ -1079,23 +1080,23 @@ outs() << "You can reproduce the problem with the command line: \n"; if (isExecutingJIT()) { - outs() << " lli -load " << SharedObject << " " << TestModuleBC.str(); + outs() << " lli -load " << SharedObject << " " << TestModuleBC; } else { - outs() << " llc " << TestModuleBC.str() << " -o " << TestModuleBC.str() + outs() << " llc " << TestModuleBC << " -o " << TestModuleBC << ".s\n"; - outs() << " gcc " << SharedObject << " " << TestModuleBC.str() - << ".s -o " << TestModuleBC.str() << ".exe"; + outs() << " gcc " << SharedObject << " " << TestModuleBC + << ".s -o " << TestModuleBC << ".exe"; #if defined (HAVE_LINK_R) outs() << " -Wl,-R."; #endif outs() << "\n"; - outs() << " " << TestModuleBC.str() << ".exe"; + outs() << " " << TestModuleBC << ".exe"; } for (unsigned i = 0, e = InputArgv.size(); i != e; ++i) outs() << " " << InputArgv[i]; outs() << '\n'; outs() << "The shared object was created with:\n llc -march=c " - << SafeModuleBC.str() << " -o temporary.c\n" + << SafeModuleBC << " -o temporary.c\n" << " gcc -xc temporary.c -O2 -o " << SharedObject; if (TargetTriple.getArch() == Triple::sparc) outs() << " -G"; // Compile a shared library, `-G' for Sparc Index: tools/bugpoint/OptimizerDriver.cpp =================================================================== --- tools/bugpoint/OptimizerDriver.cpp +++ tools/bugpoint/OptimizerDriver.cpp @@ -136,7 +136,7 @@ << EC.message() << "\n"; return 1; } - OutputFilename = UniqueFilename.str(); + OutputFilename = UniqueFilename.to_str(); // set up the input file name SmallString<128> InputFilename; Index: tools/bugpoint/ToolRunner.cpp =================================================================== --- tools/bugpoint/ToolRunner.cpp +++ tools/bugpoint/ToolRunner.cpp @@ -148,8 +148,8 @@ exit(1); } - RunProgramWithTimeout(ProgPath, Args, "", ErrorFilename.str(), - ErrorFilename.str(), Timeout, MemoryLimit); + RunProgramWithTimeout(ProgPath, Args, "", ErrorFilename, + ErrorFilename, Timeout, MemoryLimit); // FIXME: check return code ? // Print out the error messages generated by GCC if possible... @@ -259,7 +259,7 @@ SmallString<128> Storage = Result; sys::path::append(Storage, ExeName); sys::path::replace_extension(Storage, EXESuffix); - return Storage.str(); + return Storage.to_str(); } return Result.str(); @@ -485,7 +485,7 @@ errs() << "Error making unique filename: " << EC.message() << "\n"; exit(1); } - OutputAsmFile = UniqueFile.str(); + OutputAsmFile = UniqueFile.to_str(); std::vector LLCArgs; LLCArgs.push_back(LLCPath.c_str()); @@ -797,11 +797,11 @@ errs() << "\n"; ); - FileRemover OutputBinaryRemover(OutputBinary.str(), !SaveTemps); + FileRemover OutputBinaryRemover(OutputBinary, !SaveTemps); if (RemoteClientPath.empty()) { DEBUG(errs() << ""); - int ExitCode = RunProgramWithTimeout(OutputBinary.str(), &ProgramArgs[0], + int ExitCode = RunProgramWithTimeout(OutputBinary, &ProgramArgs[0], InputFile, OutputFile, OutputFile, Timeout, MemoryLimit, Error); // Treat a signal (usually SIGSEGV) or timeout as part of the program output @@ -832,7 +832,7 @@ errs() << "Error making unique filename: " << EC.message() << "\n"; exit(1); } - OutputFile = UniqueFilename.str(); + OutputFile = UniqueFilename.to_str(); std::vector GCCArgs; Index: tools/clang/lib/ARCMigrate/ARCMT.cpp =================================================================== --- tools/clang/lib/ARCMigrate/ARCMT.cpp +++ tools/clang/lib/ARCMigrate/ARCMT.cpp @@ -602,7 +602,7 @@ StringRef(newText.data(), newText.size()), newFname)); SmallString<64> filePath(file->getName()); Unit->getFileManager().FixupRelativePath(filePath); - Remapper.remap(filePath.str(), std::move(memBuf)); + Remapper.remap(filePath, std::move(memBuf)); } return false; Index: tools/clang/lib/ARCMigrate/FileRemapper.cpp =================================================================== --- tools/clang/lib/ARCMigrate/FileRemapper.cpp +++ tools/clang/lib/ARCMigrate/FileRemapper.cpp @@ -44,7 +44,7 @@ assert(!outputDir.empty()); SmallString<128> InfoFile = outputDir; llvm::sys::path::append(InfoFile, "remap"); - return InfoFile.str(); + return InfoFile.to_str(); } bool FileRemapper::initFromDisk(StringRef outputDir, DiagnosticsEngine &Diag, @@ -146,7 +146,7 @@ if (fs::createTemporaryFile(path::filename(origFE->getName()), path::extension(origFE->getName()), fd, tempPath)) - return report("Could not create file: " + tempPath.str(), Diag); + return report("Could not create file: " + tempPath, Diag); llvm::raw_fd_ostream newOut(fd, /*shouldClose=*/true); llvm::MemoryBuffer *mem = I->second.get(); Index: tools/clang/lib/ARCMigrate/ObjCMT.cpp =================================================================== --- tools/clang/lib/ARCMigrate/ObjCMT.cpp +++ tools/clang/lib/ARCMigrate/ObjCMT.cpp @@ -1783,7 +1783,7 @@ StringRef(SourceMgr.getFileEntryForID(FID)->getName()); llvm::sys::fs::make_absolute(Path); OS << " \"file\": \""; - OS.write_escaped(Path.str()) << "\",\n"; + OS.write_escaped(Path) << "\",\n"; OS << " \"offset\": " << Offset << ",\n"; } @@ -1958,7 +1958,7 @@ StringRef(newText.data(), newText.size()), file->getName())); SmallString<64> filePath(file->getName()); FileMgr.FixupRelativePath(filePath); - Remapper.remap(filePath.str(), std::move(memBuf)); + Remapper.remap(filePath, std::move(memBuf)); } if (IsOutputFile) { @@ -2192,7 +2192,7 @@ if (fs::createTemporaryFile(path::filename(FE->getName()), path::extension(FE->getName()), FD, TempPath)) { - reportDiag("Could not create file: " + TempPath.str(), Diag); + reportDiag("Could not create file: " + TempPath, Diag); return std::string(); } @@ -2200,7 +2200,7 @@ TmpOut.write(NewText.data(), NewText.size()); TmpOut.close(); - return TempPath.str(); + return TempPath.to_str(); } bool arcmt::getFileRemappingsFromFileList( Index: tools/clang/lib/ARCMigrate/TransUnbridgedCasts.cpp =================================================================== --- tools/clang/lib/ARCMigrate/TransUnbridgedCasts.cpp +++ tools/clang/lib/ARCMigrate/TransUnbridgedCasts.cpp @@ -239,10 +239,10 @@ newCast += ')'; if (isa(E->getSubExpr())) { - TA.insert(insertLoc, newCast.str()); + TA.insert(insertLoc, newCast); } else { newCast += '('; - TA.insert(insertLoc, newCast.str()); + TA.insert(insertLoc, newCast); TA.insertAfterToken(E->getLocEnd(), ")"); } } Index: tools/clang/lib/AST/DeclObjC.cpp =================================================================== --- tools/clang/lib/AST/DeclObjC.cpp +++ tools/clang/lib/AST/DeclObjC.cpp @@ -176,7 +176,7 @@ llvm::raw_svector_ostream os(ivarName); os << '_' << getIdentifier()->getName(); } - return &Ctx.Idents.get(ivarName.str()); + return &Ctx.Idents.get(ivarName); } /// FindPropertyDeclaration - Finds declaration of the property given its name Index: tools/clang/lib/AST/Expr.cpp =================================================================== --- tools/clang/lib/AST/Expr.cpp +++ tools/clang/lib/AST/Expr.cpp @@ -492,7 +492,7 @@ Out.flush(); if (!Buffer.empty() && Buffer.front() == '\01') return Buffer.substr(1); - return Buffer.str(); + return Buffer.to_str(); } else return ND->getIdentifier()->getName(); } @@ -652,7 +652,7 @@ Out << Proto; Out.flush(); - return Name.str().str(); + return Name.to_str(); } if (const CapturedDecl *CD = dyn_cast(CurrentDecl)) { for (const DeclContext *DC = CD->getParent(); DC; DC = DC->getParent()) @@ -684,7 +684,7 @@ Out << ']'; Out.flush(); - return Name.str().str(); + return Name.to_str(); } if (isa(CurrentDecl) && IT == PrettyFunction) { // __PRETTY_FUNCTION__ -> "top level", the others produce an empty string. Index: tools/clang/lib/AST/ItaniumMangle.cpp =================================================================== --- tools/clang/lib/AST/ItaniumMangle.cpp +++ tools/clang/lib/AST/ItaniumMangle.cpp @@ -1179,7 +1179,7 @@ Str += llvm::utostr(AnonStructId); Out << Str.size(); - Out << Str.str(); + Out << Str; break; } Index: tools/clang/lib/AST/MicrosoftMangle.cpp =================================================================== --- tools/clang/lib/AST/MicrosoftMangle.cpp +++ tools/clang/lib/AST/MicrosoftMangle.cpp @@ -706,7 +706,7 @@ llvm::SmallString<64> Name("$S"); // Get a unique id for the anonymous struct. Name += llvm::utostr(Context.getAnonymousStructId(RD) + 1); - mangleSourceName(Name.str()); + mangleSourceName(Name); break; } @@ -749,7 +749,7 @@ Name += llvm::utostr(Context.getAnonymousStructId(TD)); } Name += ">"; - mangleSourceName(Name.str()); + mangleSourceName(Name); break; } Index: tools/clang/lib/Basic/FileManager.cpp =================================================================== --- tools/clang/lib/Basic/FileManager.cpp +++ tools/clang/lib/Basic/FileManager.cpp @@ -430,7 +430,7 @@ SmallString<128> FilePath(Entry->getName()); FixupRelativePath(FilePath); - return FS->getBufferForFile(FilePath.str(), FileSize, + return FS->getBufferForFile(FilePath, FileSize, /*RequiresNullTerminator=*/true, isVolatile); } Index: tools/clang/lib/Basic/VirtualFileSystem.cpp =================================================================== --- tools/clang/lib/Basic/VirtualFileSystem.cpp +++ tools/clang/lib/Basic/VirtualFileSystem.cpp @@ -1134,7 +1134,7 @@ if (Current != End) { SmallString<128> PathStr(Dir); llvm::sys::path::append(PathStr, (*Current)->getName()); - llvm::ErrorOr S = FS.status(PathStr.str()); + llvm::ErrorOr S = FS.status(PathStr); if (S) CurrentEntry = *S; else @@ -1147,7 +1147,7 @@ if (++Current != End) { SmallString<128> PathStr(Dir); llvm::sys::path::append(PathStr, (*Current)->getName()); - llvm::ErrorOr S = FS.status(PathStr.str()); + llvm::ErrorOr S = FS.status(PathStr); if (!S) return S.getError(); CurrentEntry = *S; Index: tools/clang/lib/CodeGen/CGDebugInfo.cpp =================================================================== --- tools/clang/lib/CodeGen/CGDebugInfo.cpp +++ tools/clang/lib/CodeGen/CGDebugInfo.cpp @@ -337,7 +337,7 @@ if (MainFileDir != ".") { llvm::SmallString<1024> MainFileDirSS(MainFileDir); llvm::sys::path::append(MainFileDirSS, MainFileName); - MainFileName = MainFileDirSS.str(); + MainFileName = MainFileDirSS.to_str(); } } @@ -3142,7 +3142,7 @@ llvm::DIArray fieldsArray = DBuilder.getOrCreateArray(fields); llvm::DIType type = - DBuilder.createStructType(tunit, typeName.str(), tunit, line, + DBuilder.createStructType(tunit, typeName, tunit, line, CGM.getContext().toBits(block.BlockSize), CGM.getContext().toBits(block.BlockAlign), 0, llvm::DIType(), fieldsArray); Index: tools/clang/lib/CodeGen/CGDeclCXX.cpp =================================================================== --- tools/clang/lib/CodeGen/CGDeclCXX.cpp +++ tools/clang/lib/CodeGen/CGDeclCXX.cpp @@ -172,7 +172,7 @@ llvm::raw_svector_ostream Out(FnName); CGM.getCXXABI().getMangleContext().mangleDynamicAtExitDestructor(&VD, Out); } - llvm::Function *fn = CGM.CreateGlobalInitOrDestructFunction(ty, FnName.str(), + llvm::Function *fn = CGM.CreateGlobalInitOrDestructFunction(ty, FnName, VD.getLocation()); CodeGenFunction CGF(CGM); @@ -292,7 +292,7 @@ // Create a variable initialization function. llvm::Function *Fn = - CreateGlobalInitOrDestructFunction(FTy, FnName.str(), D->getLocation()); + CreateGlobalInitOrDestructFunction(FTy, FnName, D->getLocation()); auto *ISA = D->getAttr(); CodeGenFunction(*this).GenerateCXXGlobalVarDeclInitFunc(Fn, D, Addr, Index: tools/clang/lib/CodeGen/CGObjCMac.cpp =================================================================== --- tools/clang/lib/CodeGen/CGObjCMac.cpp +++ tools/clang/lib/CodeGen/CGObjCMac.cpp @@ -2923,15 +2923,15 @@ Values[0] = GetClassName(OCD->getName()); Values[1] = GetClassName(Interface->getObjCRuntimeNameAsString()); LazySymbols.insert(Interface->getIdentifier()); - Values[2] = EmitMethodList("OBJC_CATEGORY_INSTANCE_METHODS_" + ExtName.str(), + Values[2] = EmitMethodList("OBJC_CATEGORY_INSTANCE_METHODS_" + ExtName, "__OBJC,__cat_inst_meth,regular,no_dead_strip", InstanceMethods); - Values[3] = EmitMethodList("OBJC_CATEGORY_CLASS_METHODS_" + ExtName.str(), + Values[3] = EmitMethodList("OBJC_CATEGORY_CLASS_METHODS_" + ExtName, "__OBJC,__cat_cls_meth,regular,no_dead_strip", ClassMethods); if (Category) { Values[4] = - EmitProtocolList("OBJC_CATEGORY_PROTOCOLS_" + ExtName.str(), + EmitProtocolList("OBJC_CATEGORY_PROTOCOLS_" + ExtName, Category->protocol_begin(), Category->protocol_end()); } else { Values[4] = llvm::Constant::getNullValue(ObjCTypes.ProtocolListPtrTy); @@ -2940,7 +2940,7 @@ // If there is no category @interface then there can be no properties. if (Category) { - Values[6] = EmitPropertyList("\01l_OBJC_$_PROP_LIST_" + ExtName.str(), + Values[6] = EmitPropertyList("\01l_OBJC_$_PROP_LIST_" + ExtName, OCD, Category, ObjCTypes); } else { Values[6] = llvm::Constant::getNullValue(ObjCTypes.PropertyListPtrTy); @@ -2950,10 +2950,10 @@ Values); llvm::GlobalVariable *GV = - CreateMetadataVar("OBJC_CATEGORY_" + ExtName.str(), Init, + CreateMetadataVar("OBJC_CATEGORY_" + ExtName, Init, "__OBJC,__category,regular,no_dead_strip", 4, true); DefinedCategories.push_back(GV); - DefinedCategoryNames.insert(ExtName.str()); + DefinedCategoryNames.insert(ExtName.to_str()); // method definition entries must be clear for next implementation. MethodDefinitions.clear(); } @@ -3356,7 +3356,7 @@ llvm::Function *Method = llvm::Function::Create(MethodTy, llvm::GlobalValue::InternalLinkage, - Name.str(), + Name, &CGM.getModule()); MethodDefinitions.insert(std::make_pair(OMD, Method)); @@ -5780,11 +5780,11 @@ flags |= NonFragileABI_Class_Root; TClassName = ObjCClassName; TClassName += ClassName; - SuperClassGV = GetClassGlobal(TClassName.str(), + SuperClassGV = GetClassGlobal(TClassName.to_str(), ID->getClassInterface()->isWeakImported()); TClassName = ObjCMetaClassName; TClassName += ClassName; - IsAGV = GetClassGlobal(TClassName.str(), + IsAGV = GetClassGlobal(TClassName.to_str(), ID->getClassInterface()->isWeakImported()); } else { // Has a root. Current class is not a root. @@ -5793,7 +5793,7 @@ Root = Super; TClassName = ObjCMetaClassName ; TClassName += Root->getObjCRuntimeNameAsString(); - IsAGV = GetClassGlobal(TClassName.str(), + IsAGV = GetClassGlobal(TClassName.to_str(), Root->isWeakImported()); // work on super class metadata symbol. @@ -5800,7 +5800,7 @@ TClassName = ObjCMetaClassName; TClassName += ID->getClassInterface()->getSuperClass()->getObjCRuntimeNameAsString(); SuperClassGV = GetClassGlobal( - TClassName.str(), + TClassName.to_str(), ID->getClassInterface()->getSuperClass()->isWeakImported()); } llvm::GlobalVariable *CLASS_RO_GV = BuildClassRoTInitializer(flags, @@ -5809,7 +5809,7 @@ TClassName = ObjCMetaClassName; TClassName += ClassName; llvm::GlobalVariable *MetaTClass = BuildClassMetaData( - TClassName.str(), IsAGV, SuperClassGV, CLASS_RO_GV, classIsHidden, + TClassName.to_str(), IsAGV, SuperClassGV, CLASS_RO_GV, classIsHidden, ID->getClassInterface()->isWeakImported()); DefinedMetaClasses.push_back(MetaTClass); @@ -5842,7 +5842,7 @@ TClassName = ObjCClassName; TClassName += ID->getClassInterface()->getSuperClass()->getObjCRuntimeNameAsString(); SuperClassGV = GetClassGlobal( - TClassName.str(), + TClassName.to_str(), ID->getClassInterface()->getSuperClass()->isWeakImported()); } GetClassSizeInfo(ID, InstanceStart, InstanceSize); @@ -5854,7 +5854,7 @@ TClassName = ObjCClassName; TClassName += ClassName; llvm::GlobalVariable *ClassMD = - BuildClassMetaData(TClassName.str(), MetaTClass, SuperClassGV, CLASS_RO_GV, + BuildClassMetaData(TClassName.to_str(), MetaTClass, SuperClassGV, CLASS_RO_GV, classIsHidden, ID->getClassInterface()->isWeakImported()); DefinedClasses.push_back(ClassMD); @@ -5933,7 +5933,7 @@ Values[0] = GetClassName(OCD->getIdentifier()->getName()); // meta-class entry symbol llvm::GlobalVariable *ClassGV = - GetClassGlobal(ExtClassName.str(), Interface->isWeakImported()); + GetClassGlobal(ExtClassName.to_str(), Interface->isWeakImported()); Values[1] = ClassGV; std::vector Methods; @@ -5948,7 +5948,7 @@ // Instance methods should always be defined. Methods.push_back(GetMethodConstant(I)); - Values[2] = EmitMethodList(MethodListName.str(), + Values[2] = EmitMethodList(MethodListName, "__DATA, __objc_const", Methods); @@ -5963,7 +5963,7 @@ // Class methods should always be defined. Methods.push_back(GetMethodConstant(I)); - Values[3] = EmitMethodList(MethodListName.str(), + Values[3] = EmitMethodList(MethodListName, "__DATA, __objc_const", Methods); const ObjCCategoryDecl *Category = @@ -5977,7 +5977,7 @@ + Category->getName(), Category->protocol_begin(), Category->protocol_end()); - Values[5] = EmitPropertyList("\01l_OBJC_$_PROP_LIST_" + ExtName.str(), + Values[5] = EmitPropertyList("\01l_OBJC_$_PROP_LIST_" + ExtName, OCD, Category, ObjCTypes); } else { Values[4] = llvm::Constant::getNullValue(ObjCTypes.ProtocolListnfABIPtrTy); @@ -5992,7 +5992,7 @@ false, llvm::GlobalValue::PrivateLinkage, Init, - ExtCatName.str()); + ExtCatName); GCATV->setAlignment( CGM.getDataLayout().getABITypeAlignment(ObjCTypes.CategorynfABITy)); GCATV->setSection("__DATA, __objc_const"); @@ -6075,7 +6075,7 @@ if (!IvarOffsetGV) IvarOffsetGV = new llvm::GlobalVariable( CGM.getModule(), ObjCTypes.IvarOffsetVarTy, false, - llvm::GlobalValue::ExternalLinkage, nullptr, Name.str()); + llvm::GlobalValue::ExternalLinkage, nullptr, Name); return IvarOffsetGV; } @@ -6353,7 +6353,7 @@ SmallString<256> TmpName; Name.toVector(TmpName); llvm::GlobalVariable *GV = - CGM.getModule().getGlobalVariable(TmpName.str(), true); + CGM.getModule().getGlobalVariable(TmpName, true); if (GV) return llvm::ConstantExpr::getBitCast(GV, ObjCTypes.ProtocolListnfABIPtrTy); @@ -6655,7 +6655,7 @@ if (!Entry) { llvm::SmallString<64> ClassName(getClassSymbolPrefix()); ClassName += ID->getObjCRuntimeNameAsString(); - llvm::GlobalVariable *ClassGV = GetClassGlobal(ClassName.str(), + llvm::GlobalVariable *ClassGV = GetClassGlobal(ClassName.to_str(), ID->isWeakImported()); Entry = new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.ClassnfABIPtrTy, false, llvm::GlobalValue::PrivateLinkage, @@ -6680,7 +6680,7 @@ llvm::SmallString<64> MetaClassName(getMetaclassSymbolPrefix()); MetaClassName += ID->getObjCRuntimeNameAsString(); llvm::GlobalVariable *MetaClassGV = - GetClassGlobal(MetaClassName.str(), Weak); + GetClassGlobal(MetaClassName.to_str(), Weak); Entry = new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.ClassnfABIPtrTy, false, llvm::GlobalValue::PrivateLinkage, @@ -6702,7 +6702,7 @@ if (ID->isWeakImported()) { llvm::SmallString<64> ClassName(getClassSymbolPrefix()); ClassName += ID->getObjCRuntimeNameAsString(); - llvm::GlobalVariable *ClassGV = GetClassGlobal(ClassName.str(), true); + llvm::GlobalVariable *ClassGV = GetClassGlobal(ClassName.to_str(), true); (void)ClassGV; assert(ClassGV->hasExternalWeakLinkage()); } @@ -6999,7 +6999,7 @@ llvm::Constant *Values[] = { llvm::ConstantExpr::getGetElementPtr(VTableGV, VTableIdx), GetClassName(ID->getObjCRuntimeNameAsString()), - GetClassGlobal(ClassName.str()) + GetClassGlobal(ClassName.to_str()) }; llvm::Constant *Init = llvm::ConstantStruct::get(ObjCTypes.EHTypeTy, Values); @@ -7015,7 +7015,7 @@ Entry = new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.EHTypeTy, false, L, Init, - EHTYPEName.str()); + EHTYPEName); } assert(Entry->getLinkage() == L); Index: tools/clang/lib/CodeGen/CGVTT.cpp =================================================================== --- tools/clang/lib/CodeGen/CGVTT.cpp +++ tools/clang/lib/CodeGen/CGVTT.cpp @@ -106,7 +106,7 @@ cast(CGM.getCXXABI().getMangleContext()) .mangleCXXVTT(RD, Out); Out.flush(); - StringRef Name = OutName.str(); + StringRef Name = OutName; // This will also defer the definition of the VTT. (void) CGM.getCXXABI().getAddrOfVTable(RD, CharUnits()); Index: tools/clang/lib/CodeGen/CGVTables.cpp =================================================================== --- tools/clang/lib/CodeGen/CGVTables.cpp +++ tools/clang/lib/CodeGen/CGVTables.cpp @@ -639,7 +639,7 @@ .mangleCXXCtorVTable(RD, Base.getBaseOffset().getQuantity(), Base.getBase(), Out); Out.flush(); - StringRef Name = OutName.str(); + StringRef Name = OutName; llvm::ArrayType *ArrayType = llvm::ArrayType::get(CGM.Int8PtrTy, VTLayout->getNumVTableComponents()); Index: tools/clang/lib/CodeGen/ItaniumCXXABI.cpp =================================================================== --- tools/clang/lib/CodeGen/ItaniumCXXABI.cpp +++ tools/clang/lib/CodeGen/ItaniumCXXABI.cpp @@ -1324,7 +1324,7 @@ llvm::raw_svector_ostream Out(OutName); getMangleContext().mangleCXXVTable(RD, Out); Out.flush(); - StringRef Name = OutName.str(); + StringRef Name = OutName; ItaniumVTableContext &VTContext = CGM.getItaniumVTableContext(); llvm::ArrayType *ArrayType = llvm::ArrayType::get( @@ -1688,7 +1688,7 @@ guard = new llvm::GlobalVariable(CGM.getModule(), guardTy, false, var->getLinkage(), llvm::ConstantInt::get(guardTy, 0), - guardName.str()); + guardName); guard->setVisibility(var->getVisibility()); // If the variable is thread-local, so is its guard variable. guard->setThreadLocalMode(var->getThreadLocalMode()); @@ -1916,7 +1916,7 @@ llvm::FunctionType *FnTy = llvm::FunctionType::get(RetTy, false); llvm::Function *Wrapper = llvm::Function::Create(FnTy, getThreadLocalWrapperLinkage(VD, CGM), - WrapperName.str(), &CGM.getModule()); + WrapperName, &CGM.getModule()); // Always resolve references to the wrapper at link time. if (!Wrapper->hasLocalLinkage() && !isThreadWrapperReplaceable(VD, CGM)) Wrapper->setVisibility(llvm::GlobalValue::HiddenVisibility); @@ -1970,7 +1970,7 @@ if (VD->hasDefinition()) { InitIsInitFunc = true; if (InitFunc) - Init = llvm::GlobalAlias::create(Var->getLinkage(), InitFnName.str(), + Init = llvm::GlobalAlias::create(Var->getLinkage(), InitFnName, InitFunc); } else { // Emit a weak global function referring to the initialization function. @@ -1979,7 +1979,7 @@ // its thread_local variables. llvm::FunctionType *FnTy = llvm::FunctionType::get(CGM.VoidTy, false); Init = llvm::Function::Create( - FnTy, llvm::GlobalVariable::ExternalWeakLinkage, InitFnName.str(), + FnTy, llvm::GlobalVariable::ExternalWeakLinkage, InitFnName, &CGM.getModule()); } @@ -2156,7 +2156,7 @@ llvm::raw_svector_ostream Out(OutName); CGM.getCXXABI().getMangleContext().mangleCXXRTTIName(Ty, Out); Out.flush(); - StringRef Name = OutName.str(); + StringRef Name = OutName; // We know that the mangled name of the type starts at index 4 of the // mangled name of the typename, so we can just index into it in order to @@ -2179,7 +2179,7 @@ llvm::raw_svector_ostream Out(OutName); CGM.getCXXABI().getMangleContext().mangleCXXRTTI(Ty, Out); Out.flush(); - StringRef Name = OutName.str(); + StringRef Name = OutName; // Look for an existing global. llvm::GlobalVariable *GV = CGM.getModule().getNamedGlobal(Name); @@ -2568,7 +2568,7 @@ llvm::raw_svector_ostream Out(OutName); CGM.getCXXABI().getMangleContext().mangleCXXRTTI(Ty, Out); Out.flush(); - StringRef Name = OutName.str(); + StringRef Name = OutName; llvm::GlobalVariable *OldGV = CGM.getModule().getNamedGlobal(Name); if (OldGV && !OldGV->isDeclaration()) { Index: tools/clang/lib/CodeGen/MicrosoftCXXABI.cpp =================================================================== --- tools/clang/lib/CodeGen/MicrosoftCXXABI.cpp +++ tools/clang/lib/CodeGen/MicrosoftCXXABI.cpp @@ -1304,7 +1304,7 @@ for (size_t J = 0, F = VFPtrs.size(); J != F; ++J) { SmallString<256> Name; mangleVFTableName(getMangleContext(), RD, VFPtrs[J], Name); - if (!ObservedMangledNames.insert(Name.str()).second) + if (!ObservedMangledNames.insert(Name).second) llvm_unreachable("Already saw this mangling before?"); } #endif @@ -1356,12 +1356,12 @@ VFTable = llvm::GlobalAlias::create( cast(VTableGEP->getType())->getElementType(), /*AddressSpace=*/0, llvm::GlobalValue::ExternalLinkage, - VFTableName.str(), VTableGEP, &CGM.getModule()); + VFTableName, VTableGEP, &CGM.getModule()); } else { // We don't need a GlobalAlias to be a symbol for the VTable if we won't // be referencing any RTTI data. The GlobalVariable will end up being // an appropriate definition of the VFTable. - VTable->setName(VFTableName.str()); + VTable->setName(VFTableName); } VFTable->setUnnamedAddr(true); @@ -1498,7 +1498,7 @@ llvm::FunctionType *ThunkTy = CGM.getTypes().GetFunctionType(FnInfo); llvm::Function *ThunkFn = llvm::Function::Create(ThunkTy, llvm::Function::ExternalLinkage, - ThunkName.str(), &CGM.getModule()); + ThunkName, &CGM.getModule()); assert(ThunkFn->getName() == ThunkName && "name was uniqued!"); ThunkFn->setLinkage(MD->isExternallyVisible() @@ -1555,7 +1555,7 @@ llvm::raw_svector_ostream Out(OutName); getMangleContext().mangleCXXVBTable(RD, VBT.MangledPath, Out); Out.flush(); - StringRef Name = OutName.str(); + StringRef Name = OutName; llvm::ArrayType *VBTableType = llvm::ArrayType::get(CGM.IntTy, 1 + VBT.ReusingBase->getNumVBases()); @@ -1896,7 +1896,7 @@ // visibility and dll storage class from the guarded variable. GI->Guard = new llvm::GlobalVariable(CGM.getModule(), GuardTy, false, - GV->getLinkage(), Zero, GuardName.str()); + GV->getLinkage(), Zero, GuardName); GI->Guard->setVisibility(GV->getVisibility()); GI->Guard->setDLLStorageClass(GV->getDLLStorageClass()); } else { Index: tools/clang/lib/CodeGen/TargetInfo.cpp =================================================================== --- tools/clang/lib/CodeGen/TargetInfo.cpp +++ tools/clang/lib/CodeGen/TargetInfo.cpp @@ -6765,7 +6765,7 @@ llvm::LLVMContext &Ctx = CGM.getModule().getContext(); llvm::SmallVector MDVals; MDVals.push_back(GV); - MDVals.push_back(llvm::MDString::get(Ctx, Enc.str())); + MDVals.push_back(llvm::MDString::get(Ctx, Enc)); llvm::NamedMDNode *MD = CGM.getModule().getOrInsertNamedMetadata("xcore.typestrings"); MD->addOperand(llvm::MDNode::get(Ctx, MDVals)); Index: tools/clang/lib/Driver/CrossWindowsToolChain.cpp =================================================================== --- tools/clang/lib/Driver/CrossWindowsToolChain.cpp +++ tools/clang/lib/Driver/CrossWindowsToolChain.cpp @@ -60,7 +60,7 @@ if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) { SmallString<128> ResourceDir(D.ResourceDir); llvm::sys::path::append(ResourceDir, "include"); - addSystemInclude(DriverArgs, CC1Args, ResourceDir.str()); + addSystemInclude(DriverArgs, CC1Args, ResourceDir); } addExternCSystemInclude(DriverArgs, CC1Args, SysRoot + "/usr/include"); } Index: tools/clang/lib/Driver/Driver.cpp =================================================================== --- tools/clang/lib/Driver/Driver.cpp +++ tools/clang/lib/Driver/Driver.cpp @@ -69,7 +69,7 @@ llvm::sys::path::append(P, ClangResourceDir); else llvm::sys::path::append(P, "..", "lib", "clang", CLANG_VERSION_STRING); - ResourceDir = P.str(); + ResourceDir = P.to_str(); } Driver::~Driver() { @@ -968,7 +968,7 @@ SmallString<64> Path(Value); if (Arg *WorkDir = Args.getLastArg(options::OPT_working_directory)) { - if (!llvm::sys::path::is_absolute(Path.str())) { + if (!llvm::sys::path::is_absolute(Path)) { SmallString<64> Directory(WorkDir->getValue()); llvm::sys::path::append(Directory, Value); Path.assign(Directory); @@ -981,7 +981,7 @@ if (D.IsCLMode() && llvm::sys::Process::FindInEnvPath("LIB", Value)) return true; - D.Diag(clang::diag::err_drv_no_such_file) << Path.str(); + D.Diag(clang::diag::err_drv_no_such_file) << Path; return false; } @@ -1802,14 +1802,14 @@ Dir = SysRoot + Dir.substr(1); SmallString<128> P(Dir); llvm::sys::path::append(P, Name); - if (llvm::sys::fs::exists(Twine(P))) - return P.str(); + if (llvm::sys::fs::exists(P)) + return P.to_str(); } SmallString<128> P(ResourceDir); llvm::sys::path::append(P, Name); - if (llvm::sys::fs::exists(Twine(P))) - return P.str(); + if (llvm::sys::fs::exists(P)) + return P.to_str(); const ToolChain::path_list &List = TC.getFilePaths(); for (ToolChain::path_list::const_iterator @@ -1821,8 +1821,8 @@ Dir = SysRoot + Dir.substr(1); SmallString<128> P(Dir); llvm::sys::path::append(P, Name); - if (llvm::sys::fs::exists(Twine(P))) - return P.str(); + if (llvm::sys::fs::exists(P)) + return P.to_str(); } return Name; @@ -1858,11 +1858,11 @@ if (llvm::sys::fs::is_directory(PrefixDir)) { SmallString<128> P(PrefixDir); if (ScanDirForExecutable(P, TargetSpecificExecutables)) - return P.str(); + return P.to_str(); } else { SmallString<128> P(PrefixDir + Name); if (llvm::sys::fs::can_execute(Twine(P))) - return P.str(); + return P.to_str(); } } @@ -1870,7 +1870,7 @@ for (const auto &Path : List) { SmallString<128> P(Path); if (ScanDirForExecutable(P, TargetSpecificExecutables)) - return P.str(); + return P.to_str(); } // If all else failed, search the path. @@ -1891,7 +1891,7 @@ return ""; } - return Path.str(); + return Path.to_str(); } /// \brief Compute target triple from args. Index: tools/clang/lib/Driver/MSVCToolChain.cpp =================================================================== --- tools/clang/lib/Driver/MSVCToolChain.cpp +++ tools/clang/lib/Driver/MSVCToolChain.cpp @@ -272,7 +272,7 @@ } } - path = libPath.str(); + path = libPath.to_str(); return true; } @@ -352,7 +352,7 @@ // Whatever this is, Visual Studio doesn't have a toolchain for it. return false; } - path = BinDir.str(); + path = BinDir.to_str(); return true; } @@ -418,7 +418,7 @@ const char *subfolder) const { llvm::SmallString<128> path(folder); llvm::sys::path::append(path, subfolder); - addSystemInclude(DriverArgs, CC1Args, path.str()); + addSystemInclude(DriverArgs, CC1Args, path); } void MSVCToolChain::AddClangSystemIncludeArgs(const ArgList &DriverArgs, @@ -429,7 +429,7 @@ if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) { SmallString<128> P(getDriver().ResourceDir); llvm::sys::path::append(P, "include"); - addSystemInclude(DriverArgs, CC1Args, P.str()); + addSystemInclude(DriverArgs, CC1Args, P); } if (DriverArgs.hasArg(options::OPT_nostdlibinc)) Index: tools/clang/lib/Driver/Multilib.cpp =================================================================== --- tools/clang/lib/Driver/Multilib.cpp +++ tools/clang/lib/Driver/Multilib.cpp @@ -197,7 +197,7 @@ llvm::sys::path::append(IncludeSuffix, "/", Base.includeSuffix(), New.includeSuffix()); - Multilib Composed(GCCSuffix.str(), OSSuffix.str(), IncludeSuffix.str()); + Multilib Composed(GCCSuffix, OSSuffix, IncludeSuffix); Multilib::flags_list &Flags = Composed.flags(); Index: tools/clang/lib/Driver/SanitizerArgs.cpp =================================================================== --- tools/clang/lib/Driver/SanitizerArgs.cpp +++ tools/clang/lib/Driver/SanitizerArgs.cpp @@ -403,7 +403,7 @@ if (BlacklistFile) { SmallString<64> Path(D.ResourceDir); llvm::sys::path::append(Path, BlacklistFile); - BLPath = Path.str(); + BLPath = Path.to_str(); return true; } return false; Index: tools/clang/lib/Driver/ToolChains.cpp =================================================================== --- tools/clang/lib/Driver/ToolChains.cpp +++ tools/clang/lib/Driver/ToolChains.cpp @@ -302,8 +302,8 @@ // For now, allow missing resource libraries to support developers who may // not have compiler-rt checked out or integrated into their build (unless // we explicitly force linking with this library). - if (AlwaysLink || llvm::sys::fs::exists(P.str())) - CmdArgs.push_back(Args.MakeArgString(P.str())); + if (AlwaysLink || llvm::sys::fs::exists(P)) + CmdArgs.push_back(Args.MakeArgString(P)); // Adding the rpaths might negatively interact when other rpaths are involved, // so we should make sure we add the rpaths last, after all user-specified @@ -320,7 +320,7 @@ // Add the path to the resource dir to rpath to support using the dylib // from the default location without copying. CmdArgs.push_back("-rpath"); - CmdArgs.push_back(Args.MakeArgString(Dir.str())); + CmdArgs.push_back(Args.MakeArgString(Dir)); } } @@ -599,11 +599,11 @@ SmallString<128> P(A->getValue()); llvm::sys::path::append(P, "usr", "lib", "libstdc++.dylib"); - if (!llvm::sys::fs::exists(P.str())) { + if (!llvm::sys::fs::exists(P)) { llvm::sys::path::remove_filename(P); llvm::sys::path::append(P, "libstdc++.6.dylib"); - if (llvm::sys::fs::exists(P.str())) { - CmdArgs.push_back(Args.MakeArgString(P.str())); + if (llvm::sys::fs::exists(P)) { + CmdArgs.push_back(Args.MakeArgString(P)); return; } } @@ -646,8 +646,8 @@ // For now, allow missing resource libraries to support developers who may // not have compiler-rt checked out or integrated into their build. - if (llvm::sys::fs::exists(P.str())) - CmdArgs.push_back(Args.MakeArgString(P.str())); + if (llvm::sys::fs::exists(P)) + CmdArgs.push_back(Args.MakeArgString(P)); } DerivedArgList *MachO::TranslateArgs(const DerivedArgList &Args, @@ -2242,7 +2242,7 @@ llvm::sys::path::append(IncludeDir, "hexagon/include/c++/"); llvm::sys::path::append(IncludeDir, Ver); - addSystemInclude(DriverArgs, CC1Args, IncludeDir.str()); + addSystemInclude(DriverArgs, CC1Args, IncludeDir); } ToolChain::CXXStdlibType @@ -3140,7 +3140,7 @@ if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) { SmallString<128> P(D.ResourceDir); llvm::sys::path::append(P, "include"); - addSystemInclude(DriverArgs, CC1Args, P.str()); + addSystemInclude(DriverArgs, CC1Args, P); } if (DriverArgs.hasArg(options::OPT_nostdlibinc)) Index: tools/clang/lib/Driver/Tools.cpp =================================================================== --- tools/clang/lib/Driver/Tools.cpp +++ tools/clang/lib/Driver/Tools.cpp @@ -376,19 +376,19 @@ P += ".dummy"; if (UsePCH) { llvm::sys::path::replace_extension(P, "pch"); - if (llvm::sys::fs::exists(P.str())) + if (llvm::sys::fs::exists(P)) FoundPCH = true; } if (!FoundPCH) { llvm::sys::path::replace_extension(P, "pth"); - if (llvm::sys::fs::exists(P.str())) + if (llvm::sys::fs::exists(P)) FoundPTH = true; } if (!FoundPCH && !FoundPTH) { llvm::sys::path::replace_extension(P, "gch"); - if (llvm::sys::fs::exists(P.str())) { + if (llvm::sys::fs::exists(P)) { FoundPCH = UsePCH; FoundPTH = !UsePCH; } @@ -401,12 +401,12 @@ CmdArgs.push_back("-include-pch"); else CmdArgs.push_back("-include-pth"); - CmdArgs.push_back(Args.MakeArgString(P.str())); + CmdArgs.push_back(Args.MakeArgString(P)); continue; } else { // Ignore the PCH if not first on command line and emit warning. D.Diag(diag::warn_drv_pch_not_first_include) - << P.str() << A->getAsString(Args); + << P << A->getAsString(Args); } } } @@ -3286,10 +3286,10 @@ } else { CoverageFilename = llvm::sys::path::filename(Output.getBaseInput()); } - if (llvm::sys::path::is_relative(CoverageFilename.str())) { + if (llvm::sys::path::is_relative(CoverageFilename)) { SmallString<128> Pwd; if (!llvm::sys::fs::current_path(Pwd)) { - llvm::sys::path::append(Pwd, CoverageFilename.str()); + llvm::sys::path::append(Pwd, CoverageFilename); CoverageFilename.swap(Pwd); } } @@ -4477,7 +4477,7 @@ Flags += EscapedArg; } CmdArgs.push_back("-dwarf-debug-flags"); - CmdArgs.push_back(Args.MakeArgString(Flags.str())); + CmdArgs.push_back(Args.MakeArgString(Flags)); } // Add the split debug info name to the command lines here so we @@ -4910,7 +4910,7 @@ Flags += EscapedArg; } CmdArgs.push_back("-dwarf-debug-flags"); - CmdArgs.push_back(Args.MakeArgString(Flags.str())); + CmdArgs.push_back(Args.MakeArgString(Flags)); } // FIXME: Add -static support, once we have it. @@ -7851,8 +7851,8 @@ visualStudioBinDir)) { SmallString<128> FilePath(visualStudioBinDir); llvm::sys::path::append(FilePath, Exe); - if (llvm::sys::fs::can_execute(FilePath.c_str())) - return FilePath.str(); + if (llvm::sys::fs::can_execute(FilePath)) + return FilePath.to_str(); } return Exe; @@ -7924,8 +7924,8 @@ SmallString<128> ImplibName(Output.getFilename()); llvm::sys::path::replace_extension(ImplibName, "lib"); - CmdArgs.push_back(Args.MakeArgString(std::string("-implib:") + - ImplibName.str())); + CmdArgs.push_back(Args.MakeArgString("-implib:" + + ImplibName)); } if (getToolChain().getSanitizerArgs().needsAsanRt()) { Index: tools/clang/lib/Edit/EditedSource.cpp =================================================================== --- tools/clang/lib/Edit/EditedSource.cpp +++ tools/clang/lib/Edit/EditedSource.cpp @@ -135,7 +135,7 @@ StrVec += text; } - return commitInsert(OrigLoc, Offs, StrVec.str(), beforePreviousInsertions); + return commitInsert(OrigLoc, Offs, StrVec, beforePreviousInsertions); } void EditedSource::commitRemove(SourceLocation OrigLoc, @@ -360,7 +360,7 @@ continue; } - applyRewrite(receiver, StrVec.str(), CurOffs, CurLen, SourceMgr, LangOpts); + applyRewrite(receiver, StrVec, CurOffs, CurLen, SourceMgr, LangOpts); CurOffs = offs; StrVec = act.Text; CurLen = act.RemoveLen; @@ -367,7 +367,7 @@ CurEnd = CurOffs.getWithOffset(CurLen); } - applyRewrite(receiver, StrVec.str(), CurOffs, CurLen, SourceMgr, LangOpts); + applyRewrite(receiver, StrVec, CurOffs, CurLen, SourceMgr, LangOpts); } void EditedSource::clearRewrites() { Index: tools/clang/lib/Frontend/ASTUnit.cpp =================================================================== --- tools/clang/lib/Frontend/ASTUnit.cpp +++ tools/clang/lib/Frontend/ASTUnit.cpp @@ -1170,7 +1170,7 @@ SmallString<128> Path; llvm::sys::fs::createTemporaryFile("preamble", "pch", Path); - return Path.str(); + return Path.to_str(); } /// \brief Compute the preamble for the main file, providing the source buffer @@ -2446,7 +2446,7 @@ TempPath = File; TempPath += "-%%%%%%%%"; int fd; - if (llvm::sys::fs::createUniqueFile(TempPath.str(), fd, TempPath)) + if (llvm::sys::fs::createUniqueFile(TempPath, fd, TempPath)) return true; // FIXME: Can we somehow regenerate the stat cache here, or do we need to @@ -2460,8 +2460,8 @@ return true; } - if (llvm::sys::fs::rename(TempPath.str(), File)) { - llvm::sys::fs::remove(TempPath.str()); + if (llvm::sys::fs::rename(TempPath, File)) { + llvm::sys::fs::remove(TempPath); return true; } Index: tools/clang/lib/Frontend/CacheTokens.cpp =================================================================== --- tools/clang/lib/Frontend/CacheTokens.cpp +++ tools/clang/lib/Frontend/CacheTokens.cpp @@ -585,7 +585,7 @@ // Generate the PTH file. PP.getFileManager().removeStatCache(StatCache); - PW.GeneratePTH(MainFilePath.str()); + PW.GeneratePTH(MainFilePath.to_str()); } //===----------------------------------------------------------------------===// Index: tools/clang/lib/Frontend/CompilerInstance.cpp =================================================================== --- tools/clang/lib/Frontend/CompilerInstance.cpp +++ tools/clang/lib/Frontend/CompilerInstance.cpp @@ -533,7 +533,7 @@ // relative to that. FileMgr->FixupRelativePath(NewOutFile); if (std::error_code ec = - llvm::sys::fs::rename(it->TempFilename, NewOutFile.str())) { + llvm::sys::fs::rename(it->TempFilename, NewOutFile)) { getDiagnostics().Report(diag::err_unable_to_rename_temp) << it->TempFilename << it->Filename << ec.message(); @@ -604,7 +604,7 @@ } else if (!Extension.empty()) { SmallString<128> Path(InFile); llvm::sys::path::replace_extension(Path, Extension); - OutFile = Path.str(); + OutFile = Path.to_str(); } else { OutFile = "-"; } @@ -638,7 +638,7 @@ TempPath += "-%%%%%%%%"; int fd; std::error_code EC = - llvm::sys::fs::createUniqueFile(TempPath.str(), fd, TempPath); + llvm::sys::fs::createUniqueFile(TempPath, fd, TempPath); if (CreateMissingDirectories && EC == llvm::errc::no_such_file_or_directory) { @@ -645,13 +645,13 @@ StringRef Parent = llvm::sys::path::parent_path(OutputPath); EC = llvm::sys::fs::create_directories(Parent); if (!EC) { - EC = llvm::sys::fs::createUniqueFile(TempPath.str(), fd, TempPath); + EC = llvm::sys::fs::createUniqueFile(TempPath, fd, TempPath); } } if (!EC) { OS.reset(new llvm::raw_fd_ostream(fd, /*shouldClose=*/true)); - OSFile = TempFile = TempPath.str(); + OSFile = TempFile = TempPath.to_str(); } // If we failed to create the temporary, fallback to writing to the file // directly. This handles the corner case where we cannot write to the @@ -1179,7 +1179,7 @@ SmallString<128> ModuleCachePathNative; llvm::sys::path::native(HSOpts.ModuleCachePath, ModuleCachePathNative); for (llvm::sys::fs::directory_iterator - Dir(ModuleCachePathNative.str(), EC), DirEnd; + Dir(ModuleCachePathNative, EC), DirEnd; Dir != DirEnd && !EC; Dir.increment(EC)) { // If we don't have a directory, there's nothing to look into. if (!llvm::sys::fs::is_directory(Dir->path())) Index: tools/clang/lib/Frontend/CompilerInvocation.cpp =================================================================== --- tools/clang/lib/Frontend/CompilerInvocation.cpp +++ tools/clang/lib/Frontend/CompilerInvocation.cpp @@ -984,7 +984,7 @@ llvm::sys::path::append(P, "lib", "clang", CLANG_VERSION_STRING); } - return P.str(); + return P.to_str(); } static void ParseHeaderSearchArgs(HeaderSearchOptions &Opts, ArgList &Args) { @@ -1967,7 +1967,7 @@ llvm::sys::path::append(systemVersionFile, "SystemVersion.plist"); llvm::ErrorOr> buffer = - llvm::MemoryBuffer::getFile(systemVersionFile.str()); + llvm::MemoryBuffer::getFile(systemVersionFile); if (buffer) { code = hash_combine(code, buffer.get()->getBuffer()); Index: tools/clang/lib/Frontend/FrontendAction.cpp =================================================================== --- tools/clang/lib/Frontend/FrontendAction.cpp +++ tools/clang/lib/Frontend/FrontendAction.cpp @@ -267,7 +267,7 @@ SmallString<128> DirNative; llvm::sys::path::native(PCHDir->getName(), DirNative); bool Found = false; - for (llvm::sys::fs::directory_iterator Dir(DirNative.str(), EC), DirEnd; + for (llvm::sys::fs::directory_iterator Dir(DirNative, EC), DirEnd; Dir != DirEnd && !EC; Dir.increment(EC)) { // Check whether this is an acceptable AST file. if (ASTReader::isAcceptableASTFile(Dir->path(), FileMgr, Index: tools/clang/lib/Frontend/FrontendActions.cpp =================================================================== --- tools/clang/lib/Frontend/FrontendActions.cpp +++ tools/clang/lib/Frontend/FrontendActions.cpp @@ -204,7 +204,7 @@ std::error_code EC; SmallString<128> DirNative; llvm::sys::path::native(UmbrellaDir->getName(), DirNative); - for (llvm::sys::fs::recursive_directory_iterator Dir(DirNative.str(), EC), + for (llvm::sys::fs::recursive_directory_iterator Dir(DirNative, EC), DirEnd; Dir != DirEnd && !EC; Dir.increment(EC)) { // Check whether this entry has an extension typically associated with Index: tools/clang/lib/Frontend/InitHeaderSearch.cpp =================================================================== --- tools/clang/lib/Frontend/InitHeaderSearch.cpp +++ tools/clang/lib/Frontend/InitHeaderSearch.cpp @@ -246,7 +246,7 @@ // supplied path. SmallString<128> P = StringRef(HSOpts.ResourceDir); llvm::sys::path::append(P, "include"); - AddUnmappedPath(P.str(), ExternCSystem, false); + AddUnmappedPath(P, ExternCSystem, false); } // All remaining additions are for system include directories, early exit if @@ -317,18 +317,18 @@ // /i686-w64-mingw32/include SmallString<128> P = StringRef(HSOpts.ResourceDir); llvm::sys::path::append(P, "../../../i686-w64-mingw32/include"); - AddPath(P.str(), System, false); + AddPath(P, System, false); // /x86_64-w64-mingw32/include P.resize(HSOpts.ResourceDir.size()); llvm::sys::path::append(P, "../../../x86_64-w64-mingw32/include"); - AddPath(P.str(), System, false); + AddPath(P, System, false); // mingw.org crt include paths // /include P.resize(HSOpts.ResourceDir.size()); llvm::sys::path::append(P, "../../../include"); - AddPath(P.str(), System, false); + AddPath(P, System, false); AddPath("/mingw/include", System, false); #if defined(LLVM_ON_WIN32) AddPath("c:/mingw/include", System, false); @@ -488,7 +488,7 @@ // Get foo/include/c++/v1 llvm::sys::path::append(P, "include", "c++", "v1"); - AddUnmappedPath(P.str(), CXXSystem, false); + AddUnmappedPath(P, CXXSystem, false); } } // On Solaris, include the support directory for things like xlocale and @@ -699,7 +699,7 @@ // Set up the builtin include directory in the module map. SmallString<128> P = StringRef(HSOpts.ResourceDir); llvm::sys::path::append(P, "include"); - if (const DirectoryEntry *Dir = HS.getFileMgr().getDirectory(P.str())) + if (const DirectoryEntry *Dir = HS.getFileMgr().getDirectory(P)) HS.getModuleMap().setBuiltinIncludeDir(Dir); } Index: tools/clang/lib/Frontend/LogDiagnosticPrinter.cpp =================================================================== --- tools/clang/lib/Frontend/LogDiagnosticPrinter.cpp +++ tools/clang/lib/Frontend/LogDiagnosticPrinter.cpp @@ -135,7 +135,7 @@ // Format the message. SmallString<100> MessageStr; Info.FormatDiagnostic(MessageStr); - DE.Message = MessageStr.str(); + DE.Message = MessageStr.to_str(); // Set the location information. DE.Filename = ""; Index: tools/clang/lib/Frontend/ModuleDependencyCollector.cpp =================================================================== --- tools/clang/lib/Frontend/ModuleDependencyCollector.cpp +++ tools/clang/lib/Frontend/ModuleDependencyCollector.cpp @@ -100,10 +100,10 @@ if (std::error_code EC = fs::create_directories(path::parent_path(Dest), /*IgnoreExisting=*/true)) return EC; - if (std::error_code EC = fs::copy_file(AbsoluteSrc.str(), Dest.str())) + if (std::error_code EC = fs::copy_file(AbsoluteSrc, Dest)) return EC; // Use the absolute path under the root for the file mapping. - Collector.addFileMapping(AbsoluteSrc.str(), Dest.str()); + Collector.addFileMapping(AbsoluteSrc, Dest); return std::error_code(); } Index: tools/clang/lib/Frontend/Rewrite/FrontendActions.cpp =================================================================== --- tools/clang/lib/Frontend/Rewrite/FrontendActions.cpp +++ tools/clang/lib/Frontend/Rewrite/FrontendActions.cpp @@ -68,7 +68,7 @@ SmallString<128> Path(Filename); llvm::sys::path::replace_extension(Path, NewSuffix + llvm::sys::path::extension(Path)); - return Path.str(); + return Path.to_str(); } }; @@ -79,7 +79,7 @@ llvm::sys::fs::createTemporaryFile(llvm::sys::path::filename(Filename), llvm::sys::path::extension(Filename), fd, Path); - return Path.str(); + return Path.to_str(); } }; } // end anonymous namespace Index: tools/clang/lib/Frontend/SerializedDiagnosticPrinter.cpp =================================================================== --- tools/clang/lib/Frontend/SerializedDiagnosticPrinter.cpp +++ tools/clang/lib/Frontend/SerializedDiagnosticPrinter.cpp @@ -631,7 +631,7 @@ "Unexpected diagnostic with valid location outside of a source file"); SDiagsRenderer Renderer(*this, *LangOpts, &*State->DiagOpts); Renderer.emitDiagnostic(Info.getLocation(), DiagLevel, - State->diagBuf.str(), + State->diagBuf, Info.getRanges(), Info.getFixItHints(), &Info.getSourceManager(), Index: tools/clang/lib/Frontend/TextDiagnostic.cpp =================================================================== --- tools/clang/lib/Frontend/TextDiagnostic.cpp +++ tools/clang/lib/Frontend/TextDiagnostic.cpp @@ -1201,7 +1201,7 @@ } print_reversed = !was_printable; - to_print += res.first.str(); + to_print += res.first; } if (print_reversed && DiagOpts->ShowColors) Index: tools/clang/lib/Frontend/TextDiagnosticBuffer.cpp =================================================================== --- tools/clang/lib/Frontend/TextDiagnosticBuffer.cpp +++ tools/clang/lib/Frontend/TextDiagnosticBuffer.cpp @@ -30,17 +30,17 @@ default: llvm_unreachable( "Diagnostic not handled during diagnostic buffering!"); case DiagnosticsEngine::Note: - Notes.push_back(std::make_pair(Info.getLocation(), Buf.str())); + Notes.push_back(std::make_pair(Info.getLocation(), Buf.to_str())); break; case DiagnosticsEngine::Warning: - Warnings.push_back(std::make_pair(Info.getLocation(), Buf.str())); + Warnings.push_back(std::make_pair(Info.getLocation(), Buf.to_str())); break; case DiagnosticsEngine::Remark: - Remarks.push_back(std::make_pair(Info.getLocation(), Buf.str())); + Remarks.push_back(std::make_pair(Info.getLocation(), Buf.to_str())); break; case DiagnosticsEngine::Error: case DiagnosticsEngine::Fatal: - Errors.push_back(std::make_pair(Info.getLocation(), Buf.str())); + Errors.push_back(std::make_pair(Info.getLocation(), Buf.to_str())); break; } } Index: tools/clang/lib/Index/CommentToXML.cpp =================================================================== --- tools/clang/lib/Index/CommentToXML.cpp +++ tools/clang/lib/Index/CommentToXML.cpp @@ -595,7 +595,7 @@ const DeclInfo *DI, SmallString<128> &Declaration) { // FIXME. formatting API expects null terminated input string. // There might be more efficient way of doing this. - std::string StringDecl = Declaration.str(); + std::string StringDecl = Declaration.to_str(); // Formatter specific code. // Form a unique in memory buffer name. Index: tools/clang/lib/Lex/HeaderSearch.cpp =================================================================== --- tools/clang/lib/Lex/HeaderSearch.cpp +++ tools/clang/lib/Lex/HeaderSearch.cpp @@ -138,12 +138,12 @@ // error if they are imported in the same translation. SmallString<256> AbsModuleMapPath(ModuleMapPath); llvm::sys::fs::make_absolute(AbsModuleMapPath); - llvm::APInt Code(64, llvm::hash_value(AbsModuleMapPath.str().lower())); + llvm::APInt Code(64, llvm::hash_value(AbsModuleMapPath.lower())); SmallString<128> HashStr; Code.toStringUnsigned(HashStr, /*Radix*/36); - llvm::sys::path::append(Result, ModuleName + "-" + HashStr.str() + ".pcm"); + llvm::sys::path::append(Result, ModuleName + "-" + HashStr + ".pcm"); } - return Result.str().str(); + return Result.to_str(); } Module *HeaderSearch::lookupModule(StringRef ModuleName, bool AllowSearch) { @@ -289,7 +289,7 @@ RelativePath->append(Filename.begin(), Filename.end()); } - return getFileAndSuggestModule(HS, TmpDir.str(), getDir(), + return getFileAndSuggestModule(HS, TmpDir, getDir(), isSystemHeaderDirectory(), SuggestedModule); } @@ -430,7 +430,7 @@ HS.IncrementFrameworkLookupCount(); // If the framework dir doesn't exist, we fail. - const DirectoryEntry *Dir = FileMgr.getDirectory(FrameworkName.str()); + const DirectoryEntry *Dir = FileMgr.getDirectory(FrameworkName); if (!Dir) return nullptr; // Otherwise, if it does, remember that this is the right direntry for this @@ -442,7 +442,7 @@ if (getDirCharacteristic() == SrcMgr::C_User) { SmallString<1024> SystemFrameworkMarker(FrameworkName); SystemFrameworkMarker += ".system_framework"; - if (llvm::sys::fs::exists(SystemFrameworkMarker.str())) { + if (llvm::sys::fs::exists(SystemFrameworkMarker)) { CacheEntry.IsUserSpecifiedSystemFramework = true; } } @@ -468,7 +468,7 @@ } FrameworkName.append(Filename.begin()+SlashPos+1, Filename.end()); - const FileEntry *FE = FileMgr.getFile(FrameworkName.str(), + const FileEntry *FE = FileMgr.getFile(FrameworkName, /*openFile=*/!SuggestedModule); if (!FE) { // Check "/System/Library/Frameworks/Cocoa.framework/PrivateHeaders/file.h" @@ -479,7 +479,7 @@ SearchPath->insert(SearchPath->begin()+OrigSize, Private, Private+strlen(Private)); - FE = FileMgr.getFile(FrameworkName.str(), /*openFile=*/!SuggestedModule); + FE = FileMgr.getFile(FrameworkName, /*openFile=*/!SuggestedModule); } // If we found the header and are allowed to suggest a module, do so now. @@ -628,7 +628,7 @@ bool IncluderIsSystemHeader = getFileInfo(Includer).DirInfo != SrcMgr::C_User; if (const FileEntry *FE = getFileAndSuggestModule( - *this, TmpDir.str(), IncluderAndDir.second, + *this, TmpDir, IncluderAndDir.second, IncluderIsSystemHeader, SuggestedModule)) { // Leave CurDir unset. // This file is a system header or C++ unfriendly if the old file is. @@ -860,7 +860,7 @@ ++NumSubFrameworkLookups; // If the framework dir doesn't exist, we fail. - const DirectoryEntry *Dir = FileMgr.getDirectory(FrameworkName.str()); + const DirectoryEntry *Dir = FileMgr.getDirectory(FrameworkName); if (!Dir) return nullptr; // Otherwise, if it does, remember that this is the right direntry for this @@ -885,7 +885,7 @@ } HeadersFilename.append(Filename.begin()+SlashPos+1, Filename.end()); - if (!(FE = FileMgr.getFile(HeadersFilename.str(), /*openFile=*/true))) { + if (!(FE = FileMgr.getFile(HeadersFilename, /*openFile=*/true))) { // Check ".../Frameworks/HIToolbox.framework/PrivateHeaders/HIToolbox.h" HeadersFilename = FrameworkName; @@ -897,7 +897,7 @@ } HeadersFilename.append(Filename.begin()+SlashPos+1, Filename.end()); - if (!(FE = FileMgr.getFile(HeadersFilename.str(), /*openFile=*/true))) + if (!(FE = FileMgr.getFile(HeadersFilename, /*openFile=*/true))) return nullptr; } @@ -1253,7 +1253,7 @@ DirNative); // Search each of the ".framework" directories to load them as modules. - for (llvm::sys::fs::directory_iterator Dir(DirNative.str(), EC), DirEnd; + for (llvm::sys::fs::directory_iterator Dir(DirNative, EC), DirEnd; Dir != DirEnd && !EC; Dir.increment(EC)) { if (llvm::sys::path::extension(Dir->path()) != ".framework") continue; @@ -1311,7 +1311,7 @@ std::error_code EC; SmallString<128> DirNative; llvm::sys::path::native(SearchDir.getDir()->getName(), DirNative); - for (llvm::sys::fs::directory_iterator Dir(DirNative.str(), EC), DirEnd; + for (llvm::sys::fs::directory_iterator Dir(DirNative, EC), DirEnd; Dir != DirEnd && !EC; Dir.increment(EC)) { loadModuleMapFile(Dir->path(), SearchDir.isSystemHeaderDirectory(), SearchDir.isFramework()); Index: tools/clang/lib/Lex/ModuleMap.cpp =================================================================== --- tools/clang/lib/Lex/ModuleMap.cpp +++ tools/clang/lib/Lex/ModuleMap.cpp @@ -721,7 +721,7 @@ llvm::sys::path::append(SubframeworksDirName, "Frameworks"); llvm::sys::path::native(SubframeworksDirName); for (llvm::sys::fs::directory_iterator - Dir(SubframeworksDirName.str(), EC), DirEnd; + Dir(SubframeworksDirName, EC), DirEnd; Dir != DirEnd && !EC; Dir.increment(EC)) { if (!StringRef(Dir->path()).endswith(".framework")) continue; @@ -1585,7 +1585,7 @@ if (llvm::sys::path::is_relative(FileNameRef)) { ModuleMapFileName += Directory->getName(); llvm::sys::path::append(ModuleMapFileName, FileName); - FileNameRef = ModuleMapFileName.str(); + FileNameRef = ModuleMapFileName; } if (const FileEntry *File = SourceMgr.getFileManager().getFile(FileNameRef)) Map.parseModuleMapFile(File, /*IsSystem=*/false); Index: tools/clang/lib/Lex/PPDirectives.cpp =================================================================== --- tools/clang/lib/Lex/PPDirectives.cpp +++ tools/clang/lib/Lex/PPDirectives.cpp @@ -1149,7 +1149,7 @@ // Find the first non-whitespace character, so that we can make the // diagnostic more succinct. - StringRef Msg = Message.str().ltrim(" "); + StringRef Msg = StringRef(Message).ltrim(" "); if (isWarning) Diag(Tok, diag::pp_hash_warning) << Msg; @@ -1407,7 +1407,7 @@ FilenameBuffer.push_back('<'); if (ConcatenateIncludeName(FilenameBuffer, End)) return; // Found but no ">"? Diagnostic already emitted. - Filename = FilenameBuffer.str(); + Filename = FilenameBuffer; CharEnd = End.getLocWithOffset(1); break; default: @@ -1598,7 +1598,7 @@ Diag(HashLoc, diag::warn_auto_module_import) << IncludeKind << PathString << FixItHint::CreateReplacement(ReplaceRange, - "@import " + PathString.str().str() + ";"); + "@import " + PathString.to_str() + ";"); } // Load the module. Only make macros visible. We'll make the declarations Index: tools/clang/lib/Lex/PPMacroExpansion.cpp =================================================================== --- tools/clang/lib/Lex/PPMacroExpansion.cpp +++ tools/clang/lib/Lex/PPMacroExpansion.cpp @@ -1124,7 +1124,7 @@ Tok.setKind(tok::eod); return false; // Found but no ">"? Diagnostic already emitted. } - Filename = FilenameBuffer.str(); + Filename = FilenameBuffer; break; default: PP.Diag(Tok.getLocation(), diag::err_pp_expects_filename); @@ -1307,7 +1307,7 @@ if (PLoc.isValid()) { FN += PLoc.getFilename(); Lexer::Stringify(FN); - OS << '"' << FN.str() << '"'; + OS << '"' << FN << '"'; } Tok.setKind(tok::string_literal); } else if (II == Ident__DATE__) { Index: tools/clang/lib/Lex/Pragma.cpp =================================================================== --- tools/clang/lib/Lex/Pragma.cpp +++ tools/clang/lib/Lex/Pragma.cpp @@ -648,7 +648,7 @@ SourceLocation End; if (ConcatenateIncludeName(FileNameBuffer, End)) return; // Diagnostic already emitted - SourceFileName = FileNameBuffer.str(); + SourceFileName = FileNameBuffer; } else { Diag(Tok, diag::warn_pragma_include_alias_expected_filename); return; @@ -679,7 +679,7 @@ SourceLocation End; if (ConcatenateIncludeName(FileNameBuffer, End)) return; // Diagnostic already emitted - ReplaceFileName = FileNameBuffer.str(); + ReplaceFileName = FileNameBuffer; } else { Diag(Tok, diag::warn_pragma_include_alias_expected_filename); return; Index: tools/clang/lib/Lex/TokenLexer.cpp =================================================================== --- tools/clang/lib/Lex/TokenLexer.cpp +++ tools/clang/lib/Lex/TokenLexer.cpp @@ -621,7 +621,7 @@ // disabling it. PP.Diag(Loc, PP.getLangOpts().MicrosoftExt ? diag::ext_pp_bad_paste_ms : diag::err_pp_bad_paste) - << Buffer.str(); + << Buffer; } // An error has occurred so exit loop. Index: tools/clang/lib/Parse/ParseInit.cpp =================================================================== --- tools/clang/lib/Parse/ParseInit.cpp +++ tools/clang/lib/Parse/ParseInit.cpp @@ -148,7 +148,7 @@ Diag(NameLoc, diag::ext_gnu_old_style_field_designator) << FixItHint::CreateReplacement(SourceRange(NameLoc, ColonLoc), - NewSyntax.str()); + NewSyntax); Designation D; D.AddDesignator(Designator::getField(FieldName, SourceLocation(), NameLoc)); Index: tools/clang/lib/Rewrite/Rewriter.cpp =================================================================== --- tools/clang/lib/Rewrite/Rewriter.cpp +++ tools/clang/lib/Rewrite/Rewriter.cpp @@ -271,7 +271,7 @@ indentedStr += indentSpace; } } - Str = indentedStr.str(); + Str = indentedStr; } getEditBuffer(FID).InsertText(StartOffs, Str, InsertAfter); @@ -409,7 +409,7 @@ TempFilename = Filename; TempFilename += "-%%%%%%%%"; int FD; - if (llvm::sys::fs::createUniqueFile(TempFilename.str(), FD, TempFilename)) { + if (llvm::sys::fs::createUniqueFile(TempFilename, FD, TempFilename)) { AllWritten = false; Diagnostics.Report(clang::diag::err_unable_to_make_temp) << TempFilename; @@ -427,13 +427,13 @@ FileStream.reset(); #endif if (std::error_code ec = - llvm::sys::fs::rename(TempFilename.str(), Filename)) { + llvm::sys::fs::rename(TempFilename, Filename)) { AllWritten = false; Diagnostics.Report(clang::diag::err_unable_to_rename_temp) << TempFilename << Filename << ec.message(); // If the remove fails, there's not a lot we can do - this is already an // error. - llvm::sys::fs::remove(TempFilename.str()); + llvm::sys::fs::remove(TempFilename); } } Index: tools/clang/lib/Sema/SemaCodeComplete.cpp =================================================================== --- tools/clang/lib/Sema/SemaCodeComplete.cpp +++ tools/clang/lib/Sema/SemaCodeComplete.cpp @@ -2606,7 +2606,7 @@ Arg += ", ..."; else Arg += "..."; - Result.AddPlaceholderChunk(Result.getAllocator().CopyString(Arg)); + Result.AddPlaceholderChunk(Result.getAllocator().CopyString(StringRef(Arg))); break; } Index: tools/clang/lib/Sema/SemaDecl.cpp =================================================================== --- tools/clang/lib/Sema/SemaDecl.cpp +++ tools/clang/lib/Sema/SemaDecl.cpp @@ -10016,7 +10016,7 @@ << " int " << FTI.Params[i].Ident->getName() << ";\n"; Diag(FTI.Params[i].IdentLoc, diag::ext_param_not_declared) << FTI.Params[i].Ident - << FixItHint::CreateInsertion(LocAfterDecls, Code.str()); + << FixItHint::CreateInsertion(LocAfterDecls, Code); // Implicitly declare the argument as type 'int' for lack of a better // type. Index: tools/clang/lib/Sema/SemaExpr.cpp =================================================================== --- tools/clang/lib/Sema/SemaExpr.cpp +++ tools/clang/lib/Sema/SemaExpr.cpp @@ -7484,13 +7484,13 @@ // turned off separately if needed. if (LeftBits == ResultBits - 1) { S.Diag(Loc, diag::warn_shift_result_sets_sign_bit) - << HexResult.str() << LHSType + << HexResult << LHSType << LHS.get()->getSourceRange() << RHS.get()->getSourceRange(); return; } S.Diag(Loc, diag::warn_shift_result_gt_typewidth) - << HexResult.str() << Result.getMinSignedBits() << LHSType + << HexResult << Result.getMinSignedBits() << LHSType << Left.getBitWidth() << LHS.get()->getSourceRange() << RHS.get()->getSourceRange(); } Index: tools/clang/lib/Sema/SemaStmt.cpp =================================================================== --- tools/clang/lib/Sema/SemaStmt.cpp +++ tools/clang/lib/Sema/SemaStmt.cpp @@ -879,12 +879,12 @@ if (PrevString == CurrString) Diag(CaseVals[i].second->getLHS()->getLocStart(), diag::err_duplicate_case) << - (PrevString.empty() ? CaseValStr.str() : PrevString); + (PrevString.empty() ? CaseValStr : PrevString); else Diag(CaseVals[i].second->getLHS()->getLocStart(), diag::err_duplicate_case_differing_expr) << - (PrevString.empty() ? CaseValStr.str() : PrevString) << - (CurrString.empty() ? CaseValStr.str() : CurrString) << + (PrevString.empty() ? CaseValStr : PrevString) << + (CurrString.empty() ? CaseValStr : CurrString) << CaseValStr; Diag(CaseVals[i-1].second->getLHS()->getLocStart(), Index: tools/clang/lib/Serialization/ASTReader.cpp =================================================================== --- tools/clang/lib/Serialization/ASTReader.cpp +++ tools/clang/lib/Serialization/ASTReader.cpp @@ -1159,7 +1159,7 @@ path::append(currPCHPath, ".."); path::append(currPCHPath, fileDirI, fileDirE); path::append(currPCHPath, path::filename(Filename)); - return currPCHPath.str(); + return currPCHPath.to_str(); } bool ASTReader::ReadSLocEntry(int ID) { Index: tools/clang/lib/Serialization/ASTReaderStmt.cpp =================================================================== --- tools/clang/lib/Serialization/ASTReaderStmt.cpp +++ tools/clang/lib/Serialization/ASTReaderStmt.cpp @@ -486,7 +486,7 @@ // Read string data SmallString<16> Str(&Record[Idx], &Record[Idx] + Len); - E->setString(Reader.getContext(), Str.str(), kind, isPascal); + E->setString(Reader.getContext(), Str, kind, isPascal); Idx += Len; // Read source locations Index: tools/clang/lib/Serialization/ASTWriter.cpp =================================================================== --- tools/clang/lib/Serialization/ASTWriter.cpp +++ tools/clang/lib/Serialization/ASTWriter.cpp @@ -1153,7 +1153,7 @@ auto addModMap = [&](const FileEntry *F) { SmallString<128> ModuleMap(F->getName()); llvm::sys::fs::make_absolute(ModuleMap); - AddString(ModuleMap.str(), Record); + AddString(ModuleMap, Record); }; auto &Map = PP.getHeaderSearchInfo().getModuleMap(); @@ -1736,7 +1736,7 @@ Record.push_back(NumHeaderSearchEntries); Record.push_back(TableData.size()); TableData.append(GeneratorTrait.strings_begin(),GeneratorTrait.strings_end()); - Stream.EmitRecordWithBlob(TableAbbrev, Record, TableData.str()); + Stream.EmitRecordWithBlob(TableAbbrev, Record, TableData); // Free all of the strings we had to duplicate. for (unsigned I = 0, N = SavedStrings.size(); I != N; ++I) @@ -2205,7 +2205,7 @@ Record.push_back(MACRO_TABLE); Record.push_back(BucketOffset); - Stream.EmitRecordWithBlob(MacroTableAbbrev, Record, MacroTable.str()); + Stream.EmitRecordWithBlob(MacroTableAbbrev, Record, MacroTable); Record.clear(); // Write the offsets table for macro IDs. @@ -3025,7 +3025,7 @@ Record.push_back(METHOD_POOL); Record.push_back(BucketOffset); Record.push_back(NumTableEntries); - Stream.EmitRecordWithBlob(MethodPoolAbbrev, Record, MethodPool.str()); + Stream.EmitRecordWithBlob(MethodPoolAbbrev, Record, MethodPool); // Create a blob abbreviation for the selector table offsets. Abbrev = new BitCodeAbbrev(); @@ -3470,7 +3470,7 @@ RecordData Record; Record.push_back(IDENTIFIER_TABLE); Record.push_back(BucketOffset); - Stream.EmitRecordWithBlob(IDTableAbbrev, Record, IdentifierTable.str()); + Stream.EmitRecordWithBlob(IDTableAbbrev, Record, IdentifierTable); } // Write the offsets table for identifier IDs. @@ -3801,7 +3801,7 @@ Record.push_back(DECL_CONTEXT_VISIBLE); Record.push_back(BucketOffset); Stream.EmitRecordWithBlob(DeclContextVisibleLookupAbbrev, Record, - LookupTable.str()); + LookupTable); ++NumVisibleDeclContexts; return Offset; } @@ -3826,7 +3826,7 @@ Record.push_back(UPDATE_VISIBLE); Record.push_back(getDeclID(cast(DC))); Record.push_back(BucketOffset); - Stream.EmitRecordWithBlob(UpdateVisibleAbbrev, Record, LookupTable.str()); + Stream.EmitRecordWithBlob(UpdateVisibleAbbrev, Record, LookupTable); } /// \brief Write an FP_PRAGMA_OPTIONS block for the given FPOptions. Index: tools/clang/lib/Serialization/GlobalModuleIndex.cpp =================================================================== --- tools/clang/lib/Serialization/GlobalModuleIndex.cpp +++ tools/clang/lib/Serialization/GlobalModuleIndex.cpp @@ -757,7 +757,7 @@ Record.clear(); Record.push_back(IDENTIFIER_INDEX); Record.push_back(BucketOffset); - Stream.EmitRecordWithBlob(IDTableAbbrev, Record, IdentifierTable.str()); + Stream.EmitRecordWithBlob(IDTableAbbrev, Record, IdentifierTable); } Stream.ExitBlock(); @@ -841,12 +841,12 @@ return EC_IOError; // Remove the old index file. It isn't relevant any more. - llvm::sys::fs::remove(IndexPath.str()); + llvm::sys::fs::remove(IndexPath); // Rename the newly-written index file to the proper name. - if (llvm::sys::fs::rename(IndexTmpPath.str(), IndexPath.str())) { + if (llvm::sys::fs::rename(IndexTmpPath, IndexPath)) { // Rename failed; just remove the - llvm::sys::fs::remove(IndexTmpPath.str()); + llvm::sys::fs::remove(IndexTmpPath); return EC_IOError; } Index: tools/clang/lib/StaticAnalyzer/Checkers/DereferenceChecker.cpp =================================================================== --- tools/clang/lib/StaticAnalyzer/Checkers/DereferenceChecker.cpp +++ tools/clang/lib/StaticAnalyzer/Checkers/DereferenceChecker.cpp @@ -162,7 +162,7 @@ os.flush(); BugReport *report = new BugReport(*BT_null, - buf.empty() ? BT_null->getDescription() : buf.str(), + buf.empty() ? BT_null->getDescription() : buf, N); bugreporter::trackNullOrUndefValue(N, bugreporter::getDerefExpr(S), *report); Index: tools/clang/lib/StaticAnalyzer/Checkers/IvarInvalidationChecker.cpp =================================================================== --- tools/clang/lib/StaticAnalyzer/Checkers/IvarInvalidationChecker.cpp +++ tools/clang/lib/StaticAnalyzer/Checkers/IvarInvalidationChecker.cpp @@ -336,7 +336,7 @@ llvm::raw_svector_ostream os(PropNameWithUnderscore); os << '_' << PropName; } - if (IvarName == PropNameWithUnderscore.str()) + if (IvarName == PropNameWithUnderscore) return Iv; } Index: tools/clang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp =================================================================== --- tools/clang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp +++ tools/clang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp @@ -282,7 +282,7 @@ llvm::sys::path::append(Model, Directory, "report-%%%%%%.html"); if (std::error_code EC = - llvm::sys::fs::createUniqueFile(Model.str(), FD, ResultPath)) { + llvm::sys::fs::createUniqueFile(Model, FD, ResultPath)) { llvm::errs() << "warning: could not create file in '" << Directory << "': " << EC.message() << '\n'; return; @@ -302,12 +302,12 @@ << "-" << i << ".html"; llvm::sys::path::append(Model, Directory, filename.str()); - EC = llvm::sys::fs::openFileForWrite(Model.str(), + EC = llvm::sys::fs::openFileForWrite(Model, FD, llvm::sys::fs::F_RW | llvm::sys::fs::F_Excl); if (EC && EC != std::errc::file_exists) { - llvm::errs() << "warning: could not create file '" << Model.str() + llvm::errs() << "warning: could not create file '" << Model << "': " << EC.message() << '\n'; return; } Index: tools/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp =================================================================== --- tools/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp +++ tools/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp @@ -735,7 +735,7 @@ SmallString<128> P; int FD; llvm::sys::fs::createTemporaryFile("llvm_ubi", "", FD, P); - llvm::errs() << "Writing '" << P.str() << "'.\n"; + llvm::errs() << "Writing '" << P << "'.\n"; auto Stream = llvm::make_unique(FD, true); Index: tools/clang/lib/StaticAnalyzer/Frontend/ModelInjector.cpp =================================================================== --- tools/clang/lib/StaticAnalyzer/Frontend/ModelInjector.cpp +++ tools/clang/lib/StaticAnalyzer/Frontend/ModelInjector.cpp @@ -60,7 +60,7 @@ else fileName = llvm::StringRef(D->getName().str() + ".model"); - if (!llvm::sys::fs::exists(fileName.str())) { + if (!llvm::sys::fs::exists(fileName)) { Bodies[D->getName()] = nullptr; return; } Index: tools/clang/lib/Tooling/JSONCompilationDatabase.cpp =================================================================== --- tools/clang/lib/Tooling/JSONCompilationDatabase.cpp +++ tools/clang/lib/Tooling/JSONCompilationDatabase.cpp @@ -176,7 +176,7 @@ std::string Error; llvm::raw_string_ostream ES(Error); - StringRef Match = MatchTrie.findEquivalent(NativeFilePath.str(), ES); + StringRef Match = MatchTrie.findEquivalent(NativeFilePath, ES); if (Match.empty()) return std::vector(); llvm::StringMap< std::vector >::const_iterator @@ -307,13 +307,13 @@ SmallString<128> AbsolutePath( Directory->getValue(DirectoryStorage)); llvm::sys::path::append(AbsolutePath, FileName); - llvm::sys::path::native(AbsolutePath.str(), NativeFilePath); + llvm::sys::path::native(AbsolutePath, NativeFilePath); } else { llvm::sys::path::native(FileName, NativeFilePath); } IndexByFile[NativeFilePath].push_back( CompileCommandRef(Directory, Command)); - MatchTrie.insert(NativeFilePath.str()); + MatchTrie.insert(NativeFilePath); } return true; } Index: tools/clang/lib/Tooling/Tooling.cpp =================================================================== --- tools/clang/lib/Tooling/Tooling.cpp +++ tools/clang/lib/Tooling/Tooling.cpp @@ -149,7 +149,7 @@ assert(!EC); (void)EC; llvm::sys::path::native(AbsolutePath); - return AbsolutePath.str(); + return AbsolutePath.to_str(); } namespace { Index: tools/clang/tools/driver/driver.cpp =================================================================== --- tools/clang/tools/driver/driver.cpp +++ tools/clang/tools/driver/driver.cpp @@ -355,7 +355,7 @@ // Do a PATH lookup, if there are no directory components. if (llvm::sys::path::filename(InstalledPath) == InstalledPath) if (llvm::ErrorOr Tmp = llvm::sys::findProgramByName( - llvm::sys::path::filename(InstalledPath.str()))) + llvm::sys::path::filename(InstalledPath))) InstalledPath = *Tmp; llvm::sys::fs::make_absolute(InstalledPath); InstalledPath = llvm::sys::path::parent_path(InstalledPath); Index: tools/clang/tools/libclang/CIndex.cpp =================================================================== --- tools/clang/tools/libclang/CIndex.cpp +++ tools/clang/tools/libclang/CIndex.cpp @@ -7266,7 +7266,7 @@ llvm::TimeRecord TR = llvm::TimeRecord::getCurrentTime(); OS << llvm::format("%7.4f] ", TR.getWallTime() - sBeginTR.getWallTime()); - OS << Msg.str() << '\n'; + OS << Msg << '\n'; if (Trace) { llvm::sys::PrintStackTrace(stderr); Index: tools/clang/tools/libclang/CIndexCodeCompletion.cpp =================================================================== --- tools/clang/tools/libclang/CIndexCodeCompletion.cpp +++ tools/clang/tools/libclang/CIndexCodeCompletion.cpp @@ -948,7 +948,7 @@ if (Buffer.empty()) Buffer.append(Old.begin(), Old.end()); Buffer.append(New.begin(), New.end()); - Old = Buffer.str(); + Old = Buffer; } /// \brief Get the typed-text blocks from the given code-completion string Index: tools/clang/tools/libclang/CIndexer.cpp =================================================================== --- tools/clang/tools/libclang/CIndexer.cpp +++ tools/clang/tools/libclang/CIndexer.cpp @@ -82,6 +82,6 @@ llvm::sys::path::append(LibClangPath, "clang", CLANG_VERSION_STRING); // Cache our result. - ResourcesPath = LibClangPath.str(); + ResourcesPath = LibClangPath.to_str(); return ResourcesPath; } Index: tools/clang/tools/libclang/CXComment.cpp =================================================================== --- tools/clang/tools/libclang/CXComment.cpp +++ tools/clang/tools/libclang/CXComment.cpp @@ -374,7 +374,7 @@ SmallString<128> Text; TU->CommentToXML->convertHTMLTagNodeToText( HTC, Text, cxtu::getASTUnit(TU)->getASTContext()); - return cxstring::createDup(Text.str()); + return cxstring::createDup(Text); } CXString clang_FullComment_getAsHTML(CXComment CXC) { @@ -389,7 +389,7 @@ SmallString<1024> HTML; TU->CommentToXML ->convertCommentToHTML(FC, HTML, cxtu::getASTUnit(TU)->getASTContext()); - return cxstring::createDup(HTML.str()); + return cxstring::createDup(HTML); } CXString clang_FullComment_getAsXML(CXComment CXC) { @@ -404,7 +404,7 @@ SmallString<1024> XML; TU->CommentToXML ->convertCommentToXML(FC, XML, cxtu::getASTUnit(TU)->getASTContext()); - return cxstring::createDup(XML.str()); + return cxstring::createDup(XML); } } // end extern "C" Index: tools/clang/tools/libclang/IndexingContext.cpp =================================================================== --- tools/clang/tools/libclang/IndexingContext.cpp +++ tools/clang/tools/libclang/IndexingContext.cpp @@ -1104,7 +1104,7 @@ llvm::raw_svector_ostream OS(StrBuf); D->printName(OS); } - EntityInfo.name = SA.copyCStr(StrBuf.str()); + EntityInfo.name = SA.copyCStr(StrBuf); } { @@ -1113,7 +1113,7 @@ if (Ignore) { EntityInfo.USR = nullptr; } else { - EntityInfo.USR = SA.copyCStr(StrBuf.str()); + EntityInfo.USR = SA.copyCStr(StrBuf); } } } Index: tools/clang/utils/TableGen/ClangAttrEmitter.cpp =================================================================== --- tools/clang/utils/TableGen/ClangAttrEmitter.cpp +++ tools/clang/utils/TableGen/ClangAttrEmitter.cpp @@ -1162,7 +1162,7 @@ OS << " case " << I << " : {\n" - " OS << \"" + Prefix.str() + Spelling.str(); + " OS << \"" + Prefix + Spelling; if (Variety == "Pragma") { OS << " \";\n"; @@ -1190,7 +1190,7 @@ if (!Args.empty()) OS << ")"; - OS << Suffix.str() + "\";\n"; + OS << Suffix + "\";\n"; OS << " break;\n" Index: tools/clang/utils/TableGen/ClangCommentHTMLNamedCharacterReferenceEmitter.cpp =================================================================== --- tools/clang/utils/TableGen/ClangCommentHTMLNamedCharacterReferenceEmitter.cpp +++ tools/clang/utils/TableGen/ClangCommentHTMLNamedCharacterReferenceEmitter.cpp @@ -67,7 +67,7 @@ } CLiteral.append(";"); - StringMatcher::StringPair Match(Spelling, CLiteral.str()); + StringMatcher::StringPair Match(Spelling, CLiteral.to_str()); NameToUTF8.push_back(Match); } Index: tools/clang/utils/TableGen/ClangDiagnosticsEmitter.cpp =================================================================== --- tools/clang/utils/TableGen/ClangDiagnosticsEmitter.cpp +++ tools/clang/utils/TableGen/ClangDiagnosticsEmitter.cpp @@ -241,7 +241,7 @@ Replacement += (*I)->ExplicitDef->getName(); Replacement += ">"; } - SMFixIt FixIt(InGroupRange, Replacement.str()); + SMFixIt FixIt(InGroupRange, Replacement); SrcMgr.PrintMessage(NextDiagGroup->getLoc().front(), SourceMgr::DK_Error, @@ -593,7 +593,7 @@ SmallString<256> enumName = llvm::StringRef("DiagCat_"); for (llvm::StringRef::iterator I = name.begin(), E = name.end(); I != E; ++I) enumName += isalnum(*I) ? *I : '_'; - return enumName.str(); + return enumName.to_str(); } /// \brief Emit the array of diagnostic subgroups. Index: tools/llvm-cov/CodeCoverage.cpp =================================================================== --- tools/llvm-cov/CodeCoverage.cpp +++ tools/llvm-cov/CodeCoverage.cpp @@ -331,7 +331,7 @@ errs() << "error: " << File << ": " << EC.message(); return 1; } - SourceFiles.push_back(Path.str()); + SourceFiles.push_back(Path.to_str()); } return 0; }; Index: tools/llvm-cov/gcov.cpp =================================================================== --- tools/llvm-cov/gcov.cpp +++ tools/llvm-cov/gcov.cpp @@ -40,10 +40,10 @@ sys::path::replace_extension(CoverageFileStem, ""); std::string GCNO = InputGCNO.empty() - ? std::string(CoverageFileStem.str()) + ".gcno" + ? CoverageFileStem.to_str() + ".gcno" : InputGCNO; std::string GCDA = InputGCDA.empty() - ? std::string(CoverageFileStem.str()) + ".gcda" + ? CoverageFileStem.to_str() + ".gcda" : InputGCDA; GCOVFile GF; Index: tools/llvm-objdump/MachODump.cpp =================================================================== --- tools/llvm-objdump/MachODump.cpp +++ tools/llvm-objdump/MachODump.cpp @@ -1562,7 +1562,7 @@ const MCAsmInfo &MAI) { // Flush the stream before taking its content. CommentStream.flush(); - StringRef Comments = CommentsToEmit.str(); + StringRef Comments = CommentsToEmit; // Get the default information for printing a comment. const char *CommentBegin = MAI.getCommentString(); unsigned CommentColumn = MAI.getCommentColumn(); Index: tools/llvm-symbolizer/LLVMSymbolize.cpp =================================================================== --- tools/llvm-symbolizer/LLVMSymbolize.cpp +++ tools/llvm-symbolizer/LLVMSymbolize.cpp @@ -255,7 +255,7 @@ } sys::path::append(ResourceName, "Contents", "Resources", "DWARF"); sys::path::append(ResourceName, Basename); - return ResourceName.str(); + return ResourceName.to_str(); } static bool checkFileCRC(StringRef Path, uint32_t CRCHash) { @@ -282,7 +282,7 @@ // Try /path/to/original_binary/debuglink_name llvm::sys::path::append(DebugPath, DebuglinkName); if (checkFileCRC(DebugPath, CRCHash)) { - Result = DebugPath.str(); + Result = DebugPath.to_str(); return true; } // Try /path/to/original_binary/.debug/debuglink_name @@ -289,7 +289,7 @@ DebugPath = OrigRealPath; llvm::sys::path::append(DebugPath, ".debug", DebuglinkName); if (checkFileCRC(DebugPath, CRCHash)) { - Result = DebugPath.str(); + Result = DebugPath.to_str(); return true; } // Try /usr/lib/debug/path/to/original_binary/debuglink_name @@ -297,7 +297,7 @@ llvm::sys::path::append(DebugPath, llvm::sys::path::relative_path(OrigDir), DebuglinkName); if (checkFileCRC(DebugPath, CRCHash)) { - Result = DebugPath.str(); + Result = DebugPath.to_str(); return true; } return false; Index: utils/FileCheck/FileCheck.cpp =================================================================== --- utils/FileCheck/FileCheck.cpp +++ utils/FileCheck/FileCheck.cpp @@ -664,7 +664,7 @@ } return std::unique_ptr( - MemoryBuffer::getMemBufferCopy(NewFile.str(), MB->getBufferIdentifier())); + MemoryBuffer::getMemBufferCopy(NewFile, MB->getBufferIdentifier())); } static bool IsPartOfWord(char c) { Index: utils/TableGen/AsmWriterEmitter.cpp =================================================================== --- utils/TableGen/AsmWriterEmitter.cpp +++ utils/TableGen/AsmWriterEmitter.cpp @@ -720,7 +720,7 @@ OS.flush(); // Emit the string. - O.indent(6) << "AsmString = \"" << OutString.str() << "\";\n"; + O.indent(6) << "AsmString = \"" << OutString << "\";\n"; O.indent(6) << "break;\n"; O.indent(4) << '}'; Index: utils/TableGen/DAGISelMatcherEmitter.cpp =================================================================== --- utils/TableGen/DAGISelMatcherEmitter.cpp +++ utils/TableGen/DAGISelMatcherEmitter.cpp @@ -188,7 +188,7 @@ << " children in Scope"; } - OS << '\n' << TmpBuf.str(); + OS << '\n' << TmpBuf; CurrentIdx += ChildSize; } @@ -342,7 +342,7 @@ if (!OmitComments) OS << "// ->" << CurrentIdx+ChildSize; OS << '\n'; - OS << TmpBuf.str(); + OS << TmpBuf; CurrentIdx += ChildSize; } Index: utils/TableGen/FixedLenDecoderEmitter.cpp =================================================================== --- utils/TableGen/FixedLenDecoderEmitter.cpp +++ utils/TableGen/FixedLenDecoderEmitter.cpp @@ -1106,11 +1106,11 @@ // overkill for now, though. // Make sure the predicate is in the table. - Decoders.insert(Decoder.str()); + Decoders.insert(Decoder.to_str()); // Now figure out the index for when we write out the table. DecoderSet::const_iterator P = std::find(Decoders.begin(), Decoders.end(), - Decoder.str()); + Decoder); return (unsigned)(P - Decoders.begin()); }