diff --git a/include/llvm/Debugger/SourceFile.h b/include/llvm/Debugger/SourceFile.h index 249435af8b1..155b45f25bd 100644 --- a/include/llvm/Debugger/SourceFile.h +++ b/include/llvm/Debugger/SourceFile.h @@ -60,7 +60,7 @@ namespace llvm { /// getFilename - Return the fully resolved path that this file was loaded /// from. - const std::string &getFilename() const { return Filename.toString(); } + const std::string &getFilename() const { return Filename.str(); } /// getSourceLine - Given a line number, return the start and end of the /// line in the file. If the line number is invalid, or if the file could diff --git a/include/llvm/Linker.h b/include/llvm/Linker.h index 2f3d3740820..1e1da867113 100644 --- a/include/llvm/Linker.h +++ b/include/llvm/Linker.h @@ -14,11 +14,12 @@ #ifndef LLVM_LINKER_H #define LLVM_LINKER_H -#include "llvm/System/Path.h" #include #include +#include "llvm/ADT/StringRef.h" namespace llvm { + namespace sys { class Path; } class Module; class LLVMContext; @@ -64,11 +65,10 @@ class Linker { /// Construct the Linker with an empty module which will be given the /// name \p progname. \p progname will also be used for error messages. /// @brief Construct with empty module - Linker( - const StringRef& progname, ///< name of tool running linker - const StringRef& modulename, ///< name of linker's end-result module - LLVMContext& C, ///< Context for global info - unsigned Flags = 0 ///< ControlFlags (one or more |'d together) + Linker(const StringRef &progname, ///< name of tool running linker + const StringRef &modulename, ///< name of linker's end-result module + LLVMContext &C, ///< Context for global info + unsigned Flags = 0 ///< ControlFlags (one or more |'d together) ); /// Construct the Linker with a previously defined module, \p aModule. Use diff --git a/include/llvm/Support/GraphWriter.h b/include/llvm/Support/GraphWriter.h index f77b3db673c..b88dd3f9a69 100644 --- a/include/llvm/Support/GraphWriter.h +++ b/include/llvm/Support/GraphWriter.h @@ -257,10 +257,8 @@ raw_ostream &WriteGraph(raw_ostream &O, const GraphType &G, } template -sys::Path WriteGraph(const GraphType &G, - const std::string& Name, - bool ShortNames = false, - const std::string& Title = "") { +sys::Path WriteGraph(const GraphType &G, const std::string &Name, + bool ShortNames = false, const std::string &Title = "") { std::string ErrMsg; sys::Path Filename = sys::Path::GetTemporaryDirectory(&ErrMsg); if (Filename.isEmpty()) { @@ -273,7 +271,7 @@ sys::Path WriteGraph(const GraphType &G, return sys::Path(); } - errs() << "Writing '" << Filename << "'... "; + errs() << "Writing '" << Filename.str() << "'... "; std::string ErrorInfo; raw_fd_ostream O(Filename.c_str(), ErrorInfo, raw_fd_ostream::F_Force); @@ -282,7 +280,7 @@ sys::Path WriteGraph(const GraphType &G, WriteGraph(O, G, ShortNames, Name, Title); errs() << " done. \n"; } else { - errs() << "error opening file '" << Filename << "' for writing!\n"; + errs() << "error opening file '" << Filename.str() << "' for writing!\n"; Filename.clear(); } @@ -293,16 +291,13 @@ sys::Path WriteGraph(const GraphType &G, /// then cleanup. For use from the debugger. /// template -void ViewGraph(const GraphType& G, - const std::string& Name, - bool ShortNames = false, - const std::string& Title = "", +void ViewGraph(const GraphType &G, const std::string &Name, + bool ShortNames = false, const std::string &Title = "", GraphProgram::Name Program = GraphProgram::DOT) { - sys::Path Filename = WriteGraph(G, Name, ShortNames, Title); + sys::Path Filename = WriteGraph(G, Name, ShortNames, Title); - if (Filename.isEmpty()) { + if (Filename.isEmpty()) return; - } DisplayGraph(Filename, true, Program); } diff --git a/include/llvm/System/Path.h b/include/llvm/System/Path.h index 54c1066b520..3b73a128fbd 100644 --- a/include/llvm/System/Path.h +++ b/include/llvm/System/Path.h @@ -15,11 +15,9 @@ #define LLVM_SYSTEM_PATH_H #include "llvm/System/TimeValue.h" -#include "llvm/Support/raw_ostream.h" #include #include #include -#include namespace llvm { namespace sys { @@ -217,7 +215,7 @@ namespace sys { /// Compares \p this Path with \p that Path for inequality. /// @returns true if \p this and \p that refer to different things. /// @brief Inequality Operator - bool operator!=(const Path &that) const; + bool operator!=(const Path &that) const { return !(*this == that); } /// Determines if \p this Path is less than \p that Path. This is required /// so that Path objects can be placed into ordered collections (e.g. @@ -249,13 +247,7 @@ namespace sys { /// @brief Determines if the path name is empty (invalid). bool isEmpty() const { return path.empty(); } - /// This function returns the current contents of the path as a - /// std::string. This allows the underlying path string to be manipulated. - /// @returns std::string containing the path name. - /// @brief Returns the path as a std::string. - const std::string &toString() const { return path; } - - /// This function returns the last component of the path name. The last + /// This function returns the last component of the path name. The last /// component is the file or directory name occuring after the last /// directory separator. If no directory separator is present, the entire /// path name is returned (i.e. same as toString). @@ -286,6 +278,8 @@ namespace sys { /// @returns a 'C' string containing the path name. /// @brief Returns the path as a C string. const char *c_str() const { return path.c_str(); } + const std::string &str() const { return path; } + /// size - Return the length in bytes of this path name. size_t size() const { return path.size(); } @@ -716,24 +710,6 @@ namespace sys { extern const char PathSeparator; } -inline raw_ostream& operator<<(raw_ostream& strm, const sys::Path& aPath) { - strm << aPath.toString(); - return strm; -} - -inline raw_ostream& operator<<(raw_ostream& strm, - const sys::PathWithStatus& aPath) { - strm << static_cast(aPath); - return strm; -} - -std::ostream& operator<<(std::ostream& strm, const sys::Path& aPath); -inline std::ostream& operator<<(std::ostream& strm, - const sys::PathWithStatus& aPath) { - strm << static_cast(aPath); - return strm; -} - } #endif diff --git a/include/llvm/System/TimeValue.h b/include/llvm/System/TimeValue.h index b9ada007123..4e419f1b7a6 100644 --- a/include/llvm/System/TimeValue.h +++ b/include/llvm/System/TimeValue.h @@ -271,7 +271,7 @@ namespace sys { /// Provides conversion of the TimeValue into a readable time & date. /// @returns std::string containing the readable time value /// @brief Convert time to a string. - std::string toString() const; + std::string str() const; /// @} /// @name Mutators diff --git a/lib/Archive/Archive.cpp b/lib/Archive/Archive.cpp index 7811b6cc57f..00778d99834 100644 --- a/lib/Archive/Archive.cpp +++ b/lib/Archive/Archive.cpp @@ -31,7 +31,7 @@ ArchiveMember::getMemberSize() const { // If it has a long filename, include the name length if (hasLongFilename()) - result += path.toString().length() + 1; + result += path.str().length() + 1; // If its now odd lengthed, include the padding byte if (result % 2 != 0 ) @@ -76,38 +76,38 @@ bool ArchiveMember::replaceWith(const sys::Path& newFile, std::string* ErrMsg) { path = newFile; // SVR4 symbol tables have an empty name - if (path.toString() == ARFILE_SVR4_SYMTAB_NAME) + if (path.str() == ARFILE_SVR4_SYMTAB_NAME) flags |= SVR4SymbolTableFlag; else flags &= ~SVR4SymbolTableFlag; // BSD4.4 symbol tables have a special name - if (path.toString() == ARFILE_BSD4_SYMTAB_NAME) + if (path.str() == ARFILE_BSD4_SYMTAB_NAME) flags |= BSD4SymbolTableFlag; else flags &= ~BSD4SymbolTableFlag; // LLVM symbol tables have a very specific name - if (path.toString() == ARFILE_LLVM_SYMTAB_NAME) + if (path.str() == ARFILE_LLVM_SYMTAB_NAME) flags |= LLVMSymbolTableFlag; else flags &= ~LLVMSymbolTableFlag; // String table name - if (path.toString() == ARFILE_STRTAB_NAME) + if (path.str() == ARFILE_STRTAB_NAME) flags |= StringTableFlag; else flags &= ~StringTableFlag; // If it has a slash then it has a path - bool hasSlash = path.toString().find('/') != std::string::npos; + bool hasSlash = path.str().find('/') != std::string::npos; if (hasSlash) flags |= HasPathFlag; else flags &= ~HasPathFlag; // If it has a slash or its over 15 chars then its a long filename format - if (hasSlash || path.toString().length() > 15) + if (hasSlash || path.str().length() > 15) flags |= HasLongFilenameFlag; else flags &= ~HasLongFilenameFlag; @@ -217,7 +217,7 @@ bool llvm::GetBitcodeSymbols(const sys::Path& fName, std::auto_ptr Buffer( MemoryBuffer::getFileOrSTDIN(fName.c_str())); if (!Buffer.get()) { - if (ErrMsg) *ErrMsg = "Could not open file '" + fName.toString() + "'"; + if (ErrMsg) *ErrMsg = "Could not open file '" + fName.str() + "'"; return true; } diff --git a/lib/Archive/ArchiveReader.cpp b/lib/Archive/ArchiveReader.cpp index 718d44608b1..74895d8a6f1 100644 --- a/lib/Archive/ArchiveReader.cpp +++ b/lib/Archive/ArchiveReader.cpp @@ -344,8 +344,8 @@ Archive::getAllModules(std::vector& Modules, for (iterator I=begin(), E=end(); I != E; ++I) { if (I->isBitcode()) { - std::string FullMemberName = archPath.toString() + - "(" + I->getPath().toString() + ")"; + std::string FullMemberName = archPath.str() + + "(" + I->getPath().str() + ")"; MemoryBuffer *Buffer = MemoryBuffer::getNewMemBuffer(I->getSize(), FullMemberName.c_str()); memcpy((char*)Buffer->getBufferStart(), I->getData(), I->getSize()); @@ -484,8 +484,8 @@ Archive::findModuleDefiningSymbol(const std::string& symbol, return 0; // Now, load the bitcode module to get the ModuleProvider - std::string FullMemberName = archPath.toString() + "(" + - mbr->getPath().toString() + ")"; + std::string FullMemberName = archPath.str() + "(" + + mbr->getPath().str() + ")"; MemoryBuffer *Buffer =MemoryBuffer::getNewMemBuffer(mbr->getSize(), FullMemberName.c_str()); memcpy((char*)Buffer->getBufferStart(), mbr->getData(), mbr->getSize()); @@ -534,8 +534,8 @@ Archive::findModulesDefiningSymbols(std::set& symbols, if (mbr->isBitcode()) { // Get the symbols std::vector symbols; - std::string FullMemberName = archPath.toString() + "(" + - mbr->getPath().toString() + ")"; + std::string FullMemberName = archPath.str() + "(" + + mbr->getPath().str() + ")"; ModuleProvider* MP = GetBitcodeSymbols((const unsigned char*)At, mbr->getSize(), FullMemberName, Context, symbols, error); @@ -552,7 +552,7 @@ Archive::findModulesDefiningSymbols(std::set& symbols, } else { if (error) *error = "Can't parse bitcode member: " + - mbr->getPath().toString() + ": " + *error; + mbr->getPath().str() + ": " + *error; delete mbr; return false; } @@ -612,7 +612,7 @@ bool Archive::isBitcodeArchive() { continue; std::string FullMemberName = - archPath.toString() + "(" + I->getPath().toString() + ")"; + archPath.str() + "(" + I->getPath().str() + ")"; MemoryBuffer *Buffer = MemoryBuffer::getNewMemBuffer(I->getSize(), FullMemberName.c_str()); diff --git a/lib/Archive/ArchiveWriter.cpp b/lib/Archive/ArchiveWriter.cpp index 881d75b3ba8..d17f6b5036f 100644 --- a/lib/Archive/ArchiveWriter.cpp +++ b/lib/Archive/ArchiveWriter.cpp @@ -95,7 +95,7 @@ Archive::fillHeader(const ArchiveMember &mbr, ArchiveMemberHeader& hdr, memcpy(hdr.date,buffer,12); // Get rid of trailing blanks in the name - std::string mbrPath = mbr.getPath().toString(); + std::string mbrPath = mbr.getPath().str(); size_t mbrLen = mbrPath.length(); while (mbrLen > 0 && mbrPath[mbrLen-1] == ' ') { mbrPath.erase(mbrLen-1,1); @@ -173,10 +173,10 @@ Archive::addFileBefore(const sys::Path& filePath, iterator where, mbr->info = *FSInfo; unsigned flags = 0; - bool hasSlash = filePath.toString().find('/') != std::string::npos; + bool hasSlash = filePath.str().find('/') != std::string::npos; if (hasSlash) flags |= ArchiveMember::HasPathFlag; - if (hasSlash || filePath.toString().length() > 15) + if (hasSlash || filePath.str().length() > 15) flags |= ArchiveMember::HasLongFilenameFlag; std::string magic; mbr->path.getMagicNumber(magic,4); @@ -223,8 +223,7 @@ Archive::writeMember( // symbol table if its a bitcode file. if (CreateSymbolTable && member.isBitcode()) { std::vector symbols; - std::string FullMemberName = archPath.toString() + "(" + - member.getPath().toString() + std::string FullMemberName = archPath.str() + "(" + member.getPath().str() + ")"; ModuleProvider* MP = GetBitcodeSymbols((const unsigned char*)data,fSize, @@ -249,7 +248,7 @@ Archive::writeMember( } else { delete mFile; if (ErrMsg) - *ErrMsg = "Can't parse bitcode member: " + member.getPath().toString() + *ErrMsg = "Can't parse bitcode member: " + member.getPath().str() + ": " + *ErrMsg; return true; } @@ -266,8 +265,8 @@ Archive::writeMember( // Write the long filename if its long if (writeLongName) { - ARFile.write(member.getPath().toString().data(), - member.getPath().toString().length()); + ARFile.write(member.getPath().str().data(), + member.getPath().str().length()); } // Write the (possibly compressed) member's content to the file. @@ -371,7 +370,7 @@ Archive::writeToDisk(bool CreateSymbolTable, bool TruncateNames, bool Compress, if (TmpArchive.exists()) TmpArchive.eraseFromDisk(); if (ErrMsg) - *ErrMsg = "Error opening archive file: " + archPath.toString(); + *ErrMsg = "Error opening archive file: " + archPath.str(); return true; } @@ -425,7 +424,7 @@ Archive::writeToDisk(bool CreateSymbolTable, bool TruncateNames, bool Compress, if (TmpArchive.exists()) TmpArchive.eraseFromDisk(); if (ErrMsg) - *ErrMsg = "Error opening archive file: " + FinalFilePath.toString(); + *ErrMsg = "Error opening archive file: " + FinalFilePath.str(); return true; } diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 83a77722063..ab869987501 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -1343,7 +1343,7 @@ void DwarfDebug::BeginModule(Module *M, MachineModuleInfo *mmi) { FullPath.appendComponent(getSourceFileName(Id.second)); assert(AppendOk && "Could not append filename to directory!"); AppendOk = false; - Asm->EmitFile(i, FullPath.toString()); + Asm->EmitFile(i, FullPath.str()); Asm->EOL(); } } diff --git a/lib/Debugger/ProgramInfo.cpp b/lib/Debugger/ProgramInfo.cpp index f649ebe5813..5ba1c708ab9 100644 --- a/lib/Debugger/ProgramInfo.cpp +++ b/lib/Debugger/ProgramInfo.cpp @@ -22,6 +22,7 @@ #include "llvm/Module.h" #include "llvm/Debugger/SourceFile.h" #include "llvm/Debugger/SourceLanguage.h" +#include "llvm/Support/raw_ostream.h" #include "llvm/Support/SlowOperationInformer.h" #include "llvm/ADT/STLExtras.h" using namespace llvm; @@ -135,7 +136,7 @@ SourceFile &SourceFileInfo::getSourceText() const { tmpPath.set(Directory); tmpPath.appendComponent(BaseName); if (tmpPath.canRead()) - SourceText = new SourceFile(tmpPath.toString(), Descriptor); + SourceText = new SourceFile(tmpPath.str(), Descriptor); else SourceText = new SourceFile(BaseName, Descriptor); } diff --git a/lib/Linker/LinkArchives.cpp b/lib/Linker/LinkArchives.cpp index faf01af127e..76d81c21942 100644 --- a/lib/Linker/LinkArchives.cpp +++ b/lib/Linker/LinkArchives.cpp @@ -96,10 +96,10 @@ bool Linker::LinkInArchive(const sys::Path &Filename, bool &is_native) { // Make sure this is an archive file we're dealing with if (!Filename.isArchive()) - return error("File '" + Filename.toString() + "' is not an archive."); + return error("File '" + Filename.str() + "' is not an archive."); // Open the archive file - verbose("Linking archive file '" + Filename.toString() + "'"); + verbose("Linking archive file '" + Filename.str() + "'"); // Find all of the symbols currently undefined in the bitcode program. // If all the symbols are defined, the program is complete, and there is @@ -108,8 +108,7 @@ Linker::LinkInArchive(const sys::Path &Filename, bool &is_native) { GetAllUndefinedSymbols(Composite, UndefinedSymbols); if (UndefinedSymbols.empty()) { - verbose("No symbols undefined, skipping library '" + - Filename.toString() + "'"); + verbose("No symbols undefined, skipping library '" + Filename.str() + "'"); return false; // No need to link anything in! } @@ -120,7 +119,7 @@ Linker::LinkInArchive(const sys::Path &Filename, bool &is_native) { Archive* arch = AutoArch.get(); if (!arch) - return error("Cannot read archive '" + Filename.toString() + + return error("Cannot read archive '" + Filename.str() + "': " + ErrMsg); if (!arch->isBitcodeArchive()) { is_native = true; @@ -143,7 +142,7 @@ Linker::LinkInArchive(const sys::Path &Filename, bool &is_native) { // Find the modules we need to link into the target module std::set Modules; if (!arch->findModulesDefiningSymbols(UndefinedSymbols, Modules, &ErrMsg)) - return error("Cannot find symbols in '" + Filename.toString() + + return error("Cannot find symbols in '" + Filename.str() + "': " + ErrMsg); // If we didn't find any more modules to link this time, we are done diff --git a/lib/Linker/LinkItems.cpp b/lib/Linker/LinkItems.cpp index 3c9a8571480..61f3c26c6a1 100644 --- a/lib/Linker/LinkItems.cpp +++ b/lib/Linker/LinkItems.cpp @@ -14,10 +14,10 @@ #include "llvm/Linker.h" #include "llvm/Module.h" +#include "llvm/Bitcode/ReaderWriter.h" +#include "llvm/System/Path.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/MemoryBuffer.h" -#include "llvm/Bitcode/ReaderWriter.h" - using namespace llvm; // LinkItems - This function is the main entry point into linking. It takes a @@ -93,7 +93,7 @@ bool Linker::LinkInLibrary(const StringRef &Lib, bool& is_native) { case sys::Archive_FileType: if (LinkInArchive(Pathname, is_native)) - return error("Cannot link archive '" + Pathname.toString() + "'"); + return error("Cannot link archive '" + Pathname.str() + "'"); break; case sys::ELF_Relocatable_FileType: @@ -158,7 +158,7 @@ bool Linker::LinkInFile(const sys::Path &File, bool &is_native) { is_native = false; // Check for a file of name "-", which means "read standard input" - if (File.toString() == "-") { + if (File.str() == "-") { std::auto_ptr M; if (MemoryBuffer *Buffer = MemoryBuffer::getSTDIN()) { M.reset(ParseBitcodeFile(Buffer, Context, &Error)); @@ -173,7 +173,7 @@ bool Linker::LinkInFile(const sys::Path &File, bool &is_native) { // Make sure we can at least read the file if (!File.canRead()) - return error("Cannot find linker input '" + File.toString() + "'"); + return error("Cannot find linker input '" + File.str() + "'"); // If its an archive, try to link it in std::string Magic; @@ -181,26 +181,26 @@ bool Linker::LinkInFile(const sys::Path &File, bool &is_native) { switch (sys::IdentifyFileType(Magic.c_str(), 64)) { default: llvm_unreachable("Bad file type identification"); case sys::Unknown_FileType: - return warning("Ignoring file '" + File.toString() + + return warning("Ignoring file '" + File.str() + "' because does not contain bitcode."); case sys::Archive_FileType: // A user may specify an ar archive without -l, perhaps because it // is not installed as a library. Detect that and link the archive. - verbose("Linking archive file '" + File.toString() + "'"); + verbose("Linking archive file '" + File.str() + "'"); if (LinkInArchive(File, is_native)) return true; break; case sys::Bitcode_FileType: { - verbose("Linking bitcode file '" + File.toString() + "'"); + verbose("Linking bitcode file '" + File.str() + "'"); std::auto_ptr M(LoadObject(File)); if (M.get() == 0) - return error("Cannot load file '" + File.toString() + "': " + Error); + return error("Cannot load file '" + File.str() + "': " + Error); if (LinkInModule(M.get(), &Error)) - return error("Cannot link file '" + File.toString() + "': " + Error); + return error("Cannot link file '" + File.str() + "': " + Error); - verbose("Linked in file '" + File.toString() + "'"); + verbose("Linked in file '" + File.str() + "'"); break; } diff --git a/lib/Linker/LinkModules.cpp b/lib/Linker/LinkModules.cpp index effba471e05..0fa97c55687 100644 --- a/lib/Linker/LinkModules.cpp +++ b/lib/Linker/LinkModules.cpp @@ -26,6 +26,7 @@ #include "llvm/Instructions.h" #include "llvm/Assembly/Writer.h" #include "llvm/Support/ErrorHandling.h" +#include "llvm/Support/raw_ostream.h" #include "llvm/System/Path.h" #include "llvm/ADT/DenseMap.h" #include diff --git a/lib/Linker/Linker.cpp b/lib/Linker/Linker.cpp index bd569b50653..aef79d08f42 100644 --- a/lib/Linker/Linker.cpp +++ b/lib/Linker/Linker.cpp @@ -14,9 +14,10 @@ #include "llvm/Linker.h" #include "llvm/Module.h" #include "llvm/Bitcode/ReaderWriter.h" -#include "llvm/Config/config.h" +#include "llvm/System/Path.h" #include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/raw_ostream.h" +#include "llvm/Config/config.h" using namespace llvm; Linker::Linker(const StringRef &progname, const StringRef &modname, @@ -69,11 +70,8 @@ Linker::addPath(const sys::Path& path) { void Linker::addPaths(const std::vector& paths) { - for (unsigned i = 0; i != paths.size(); ++i) { - sys::Path aPath; - aPath.set(paths[i]); - LibPaths.push_back(aPath); - } + for (unsigned i = 0, e = paths.size(); i != e; ++i) + LibPaths.push_back(sys::Path(paths[i])); } void @@ -100,16 +98,15 @@ Linker::LoadObject(const sys::Path &FN) { std::string ParseErrorMessage; Module *Result = 0; - const std::string &FNS = FN.toString(); - std::auto_ptr Buffer(MemoryBuffer::getFileOrSTDIN(FNS.c_str())); + std::auto_ptr Buffer(MemoryBuffer::getFileOrSTDIN(FN.c_str())); if (Buffer.get()) Result = ParseBitcodeFile(Buffer.get(), Context, &ParseErrorMessage); else - ParseErrorMessage = "Error reading file '" + FNS + "'"; + ParseErrorMessage = "Error reading file '" + FN.str() + "'"; if (Result) return std::auto_ptr(Result); - Error = "Bitcode file '" + FN.toString() + "' could not be loaded"; + Error = "Bitcode file '" + FN.str() + "' could not be loaded"; if (ParseErrorMessage.size()) Error += ": " + ParseErrorMessage; return std::auto_ptr(); diff --git a/lib/Support/GraphWriter.cpp b/lib/Support/GraphWriter.cpp index 9d72db1bd2d..a3d2d6c871f 100644 --- a/lib/Support/GraphWriter.cpp +++ b/lib/Support/GraphWriter.cpp @@ -64,9 +64,10 @@ void llvm::DisplayGraph(const sys::Path &Filename, bool wait, errs() << "Running 'Graphviz' program... "; if (sys::Program::ExecuteAndWait(Graphviz, &args[0],0,0,0,0,&ErrMsg)) - errs() << "Error viewing graph " << Filename << ": " << ErrMsg << "\n"; + errs() << "Error viewing graph " << Filename.str() << ": " << ErrMsg + << "\n"; else - Filename.eraseFromDisk(); + Filename.eraseFromDisk(); #elif (HAVE_GV && (HAVE_DOT || HAVE_FDP || HAVE_NEATO || \ HAVE_TWOPI || HAVE_CIRCO)) diff --git a/lib/Support/SystemUtils.cpp b/lib/Support/SystemUtils.cpp index 7756e033ad8..3d3649eaeba 100644 --- a/lib/Support/SystemUtils.cpp +++ b/lib/Support/SystemUtils.cpp @@ -15,6 +15,7 @@ #include "llvm/Support/SystemUtils.h" #include "llvm/System/Process.h" #include "llvm/System/Program.h" +#include "llvm/Support/raw_ostream.h" using namespace llvm; bool llvm::CheckBitcodeOutputToConsole(raw_ostream &stream_to_check, diff --git a/lib/System/Path.cpp b/lib/System/Path.cpp index ce4762e56d8..df335748093 100644 --- a/lib/System/Path.cpp +++ b/lib/System/Path.cpp @@ -29,19 +29,10 @@ bool Path::operator==(const Path &that) const { return path == that.path; } -bool Path::operator!=(const Path &that) const { - return path != that.path; -} - bool Path::operator<(const Path& that) const { return path < that.path; } -std::ostream& llvm::operator<<(std::ostream &strm, const sys::Path &aPath) { - strm << aPath.toString(); - return strm; -} - Path Path::GetLLVMConfigDir() { Path result; diff --git a/lib/System/Unix/Path.inc b/lib/System/Unix/Path.inc index a54fcfd84bd..7139f4eb9bb 100644 --- a/lib/System/Unix/Path.inc +++ b/lib/System/Unix/Path.inc @@ -119,7 +119,7 @@ void Path::makeAbsolute() { CWD.appendComponent(path); - path = CWD.toString(); + path = CWD.str(); } Path @@ -502,7 +502,7 @@ static bool AddPermissionBits(const Path &File, int bits) { // Get the file's current mode. struct stat buf; - if (0 != stat(File.toString().c_str(), &buf)) + if (0 != stat(File.c_str(), &buf)) return false; // Change the file to have whichever permissions bits from 'bits' // that the umask would not disable. @@ -759,7 +759,7 @@ bool Path::renamePathOnDisk(const Path& newName, std::string* ErrMsg) { if (0 != ::rename(path.c_str(), newName.c_str())) return MakeErrMsg(ErrMsg, std::string("can't rename '") + path + "' as '" + - newName.toString() + "'"); + newName.str() + "'"); return false; } @@ -781,13 +781,13 @@ sys::CopyFile(const sys::Path &Dest, const sys::Path &Src, std::string* ErrMsg){ int outFile = -1; inFile = ::open(Src.c_str(), O_RDONLY); if (inFile == -1) - return MakeErrMsg(ErrMsg, Src.toString() + + return MakeErrMsg(ErrMsg, Src.str() + ": can't open source file to copy"); outFile = ::open(Dest.c_str(), O_WRONLY|O_CREAT, 0666); if (outFile == -1) { ::close(inFile); - return MakeErrMsg(ErrMsg, Dest.toString() + + return MakeErrMsg(ErrMsg, Dest.str() + ": can't create destination file for copy"); } @@ -797,7 +797,7 @@ sys::CopyFile(const sys::Path &Dest, const sys::Path &Src, std::string* ErrMsg){ if (errno != EINTR && errno != EAGAIN) { ::close(inFile); ::close(outFile); - return MakeErrMsg(ErrMsg, Src.toString()+": can't read source file"); + return MakeErrMsg(ErrMsg, Src.str()+": can't read source file"); } } else { char *BufPtr = Buffer; @@ -807,7 +807,7 @@ sys::CopyFile(const sys::Path &Dest, const sys::Path &Src, std::string* ErrMsg){ if (errno != EINTR && errno != EAGAIN) { ::close(inFile); ::close(outFile); - return MakeErrMsg(ErrMsg, Dest.toString() + + return MakeErrMsg(ErrMsg, Dest.str() + ": can't write destination file"); } } else { diff --git a/lib/System/Unix/Program.inc b/lib/System/Unix/Program.inc index 14bc7b13770..84e025cd5d5 100644 --- a/lib/System/Unix/Program.inc +++ b/lib/System/Unix/Program.inc @@ -97,7 +97,7 @@ static bool RedirectIO(const Path *Path, int FD, std::string* ErrMsg) { // Redirect empty paths to /dev/null File = "/dev/null"; else - File = Path->toString(); + File = Path->str(); // Open the file int InFD = open(File.c_str(), FD == 0 ? O_RDONLY : O_WRONLY|O_CREAT, 0666); @@ -156,7 +156,7 @@ Program::Execute(const Path& path, { if (!path.canExecute()) { if (ErrMsg) - *ErrMsg = path.toString() + " is not executable"; + *ErrMsg = path.str() + " is not executable"; return false; } diff --git a/lib/System/Unix/TimeValue.inc b/lib/System/Unix/TimeValue.inc index 8dd30b9322f..1ae8c7184d5 100644 --- a/lib/System/Unix/TimeValue.inc +++ b/lib/System/Unix/TimeValue.inc @@ -21,7 +21,7 @@ namespace llvm { using namespace sys; -std::string TimeValue::toString() const { +std::string TimeValue::str() const { char buffer[32]; time_t ourTime = time_t(this->toEpochTime()); diff --git a/lib/System/Win32/Path.inc b/lib/System/Win32/Path.inc index fccf001b355..46b965f4b05 100644 --- a/lib/System/Win32/Path.inc +++ b/lib/System/Win32/Path.inc @@ -808,8 +808,8 @@ CopyFile(const sys::Path &Dest, const sys::Path &Src, std::string* ErrMsg) { // Can't use CopyFile macro defined in Windows.h because it would mess up the // above line. We use the expansion it would have in a non-UNICODE build. if (!::CopyFileA(Src.c_str(), Dest.c_str(), false)) - return MakeErrMsg(ErrMsg, "Can't copy '" + Src.toString() + - "' to '" + Dest.toString() + "': "); + return MakeErrMsg(ErrMsg, "Can't copy '" + Src.str() + + "' to '" + Dest.str() + "': "); return false; } diff --git a/lib/System/Win32/Program.inc b/lib/System/Win32/Program.inc index 005f63157c0..804273bf23d 100644 --- a/lib/System/Win32/Program.inc +++ b/lib/System/Win32/Program.inc @@ -92,7 +92,7 @@ static HANDLE RedirectIO(const Path *path, int fd, std::string* ErrMsg) { if (path->isEmpty()) fname = "NUL"; else - fname = path->toString().c_str(); + fname = path->c_str(); SECURITY_ATTRIBUTES sa; sa.nLength = sizeof(sa); @@ -258,11 +258,10 @@ Program::Execute(const Path& path, CloseHandle(si.hStdError); // Now return an error if the process didn't get created. - if (!rc) - { + if (!rc) { SetLastError(err); MakeErrMsg(ErrMsg, std::string("Couldn't execute program '") + - path.toString() + "'"); + path.str() + "'"); return false; } Pid_ = pi.dwProcessId; diff --git a/lib/System/Win32/TimeValue.inc b/lib/System/Win32/TimeValue.inc index 0ca87d42332..e37f111fc77 100644 --- a/lib/System/Win32/TimeValue.inc +++ b/lib/System/Win32/TimeValue.inc @@ -30,7 +30,7 @@ TimeValue TimeValue::now() { return t; } -std::string TimeValue::toString() const { +std::string TimeValue::str() const { #ifdef __MINGW32__ // This ban may be lifted by either: // (i) a future MinGW version other than 1.0 inherents the __time64_t type, or diff --git a/tools/bugpoint/CrashDebugger.cpp b/tools/bugpoint/CrashDebugger.cpp index 4e15732b6e9..b348a0875e4 100644 --- a/tools/bugpoint/CrashDebugger.cpp +++ b/tools/bugpoint/CrashDebugger.cpp @@ -72,10 +72,10 @@ ReducePassList::doTest(std::vector &Prefix, PrefixOutput.set(PfxOutput); OrigProgram = BD.Program; - BD.Program = ParseInputFile(PrefixOutput.toString(), BD.getContext()); + BD.Program = ParseInputFile(PrefixOutput.str(), BD.getContext()); if (BD.Program == 0) { errs() << BD.getToolName() << ": Error reading bitcode file '" - << PrefixOutput << "'!\n"; + << PrefixOutput.str() << "'!\n"; exit(1); } PrefixOutput.eraseFromDisk(); diff --git a/tools/bugpoint/ExecutionDriver.cpp b/tools/bugpoint/ExecutionDriver.cpp index 3916957a627..72b97176419 100644 --- a/tools/bugpoint/ExecutionDriver.cpp +++ b/tools/bugpoint/ExecutionDriver.cpp @@ -18,6 +18,7 @@ #include "llvm/Support/Debug.h" #include "llvm/Support/FileUtilities.h" #include "llvm/Support/SystemUtils.h" +#include "llvm/Support/raw_ostream.h" #include using namespace llvm; @@ -280,9 +281,9 @@ void BugDriver::compileProgram(Module *M) { << "\n"; exit(1); } - if (writeProgramToFile(BitcodeFile.toString(), M)) { + if (writeProgramToFile(BitcodeFile.str(), M)) { errs() << ToolName << ": Error emitting bitcode to file '" - << BitcodeFile << "'!\n"; + << BitcodeFile.str() << "'!\n"; exit(1); } @@ -290,7 +291,7 @@ void BugDriver::compileProgram(Module *M) { FileRemover BitcodeFileRemover(BitcodeFile, !SaveTemps); // Actually compile the program! - Interpreter->compileProgram(BitcodeFile.toString()); + Interpreter->compileProgram(BitcodeFile.str()); } @@ -315,7 +316,7 @@ std::string BugDriver::executeProgram(std::string OutputFile, << ErrMsg << "!\n"; exit(1); } - BitcodeFile = uniqueFilename.toString(); + BitcodeFile = uniqueFilename.str(); if (writeProgramToFile(BitcodeFile, Program)) { errs() << ToolName << ": Error emitting bitcode to file '" @@ -338,7 +339,7 @@ std::string BugDriver::executeProgram(std::string OutputFile, << ErrMsg << "\n"; exit(1); } - OutputFile = uniqueFile.toString(); + OutputFile = uniqueFile.str(); // Figure out which shared objects to run, if any. std::vector SharedObjs(AdditionalSOs); @@ -393,7 +394,7 @@ std::string BugDriver::compileSharedObject(const std::string &BitcodeFile) { GCC::FileType FT = SafeInterpreter->OutputCode(BitcodeFile, OutputFile); std::string SharedObjectFile; - if (gcc->MakeSharedObject(OutputFile.toString(), FT, + if (gcc->MakeSharedObject(OutputFile.str(), FT, SharedObjectFile, AdditionalLinkerArgs)) exit(1); @@ -447,7 +448,7 @@ bool BugDriver::diffProgram(const std::string &BitcodeFile, std::string Error; bool FilesDifferent = false; if (int Diff = DiffFilesWithTolerance(sys::Path(ReferenceOutputFile), - sys::Path(Output.toString()), + sys::Path(Output.str()), AbsTolerance, RelTolerance, &Error)) { if (Diff == 2) { errs() << "While diffing output: " << Error << '\n'; diff --git a/tools/bugpoint/ExtractFunction.cpp b/tools/bugpoint/ExtractFunction.cpp index b2e427c9bfb..31982e17c69 100644 --- a/tools/bugpoint/ExtractFunction.cpp +++ b/tools/bugpoint/ExtractFunction.cpp @@ -29,6 +29,7 @@ #include "llvm/Support/CommandLine.h" #include "llvm/Support/Debug.h" #include "llvm/Support/FileUtilities.h" +#include "llvm/Support/raw_ostream.h" #include "llvm/System/Path.h" #include "llvm/System/Signals.h" #include diff --git a/tools/bugpoint/FindBugs.cpp b/tools/bugpoint/FindBugs.cpp index fd1f84b7286..2c11d29f60d 100644 --- a/tools/bugpoint/FindBugs.cpp +++ b/tools/bugpoint/FindBugs.cpp @@ -17,6 +17,7 @@ #include "BugDriver.h" #include "ToolRunner.h" #include "llvm/Pass.h" +#include "llvm/Support/raw_ostream.h" #include #include using namespace llvm; diff --git a/tools/bugpoint/Miscompilation.cpp b/tools/bugpoint/Miscompilation.cpp index 9c141472956..57a4fc717fe 100644 --- a/tools/bugpoint/Miscompilation.cpp +++ b/tools/bugpoint/Miscompilation.cpp @@ -826,8 +826,9 @@ static bool TestCodeGenerator(BugDriver &BD, Module *Test, Module *Safe) { << ErrMsg << "\n"; exit(1); } - if (BD.writeProgramToFile(TestModuleBC.toString(), Test)) { - errs() << "Error writing bitcode to `" << TestModuleBC << "'\nExiting."; + if (BD.writeProgramToFile(TestModuleBC.str(), Test)) { + errs() << "Error writing bitcode to `" << TestModuleBC.str() + << "'\nExiting."; exit(1); } delete Test; @@ -840,16 +841,17 @@ static bool TestCodeGenerator(BugDriver &BD, Module *Test, Module *Safe) { exit(1); } - if (BD.writeProgramToFile(SafeModuleBC.toString(), Safe)) { - errs() << "Error writing bitcode to `" << SafeModuleBC << "'\nExiting."; + if (BD.writeProgramToFile(SafeModuleBC.str(), Safe)) { + errs() << "Error writing bitcode to `" << SafeModuleBC.str() + << "'\nExiting."; exit(1); } - std::string SharedObject = BD.compileSharedObject(SafeModuleBC.toString()); + std::string SharedObject = BD.compileSharedObject(SafeModuleBC.str()); delete Safe; // Run the code generator on the `Test' code, loading the shared library. // The function returns whether or not the new output differs from reference. - int Result = BD.diffProgram(TestModuleBC.toString(), SharedObject, false); + int Result = BD.diffProgram(TestModuleBC.str(), SharedObject, false); if (Result) errs() << ": still failing!\n"; @@ -899,8 +901,9 @@ bool BugDriver::debugCodeGenerator() { exit(1); } - if (writeProgramToFile(TestModuleBC.toString(), ToCodeGen)) { - errs() << "Error writing bitcode to `" << TestModuleBC << "'\nExiting."; + if (writeProgramToFile(TestModuleBC.str(), ToCodeGen)) { + errs() << "Error writing bitcode to `" << TestModuleBC.str() + << "'\nExiting."; exit(1); } delete ToCodeGen; @@ -913,31 +916,33 @@ bool BugDriver::debugCodeGenerator() { exit(1); } - if (writeProgramToFile(SafeModuleBC.toString(), ToNotCodeGen)) { - errs() << "Error writing bitcode to `" << SafeModuleBC << "'\nExiting."; + if (writeProgramToFile(SafeModuleBC.str(), ToNotCodeGen)) { + errs() << "Error writing bitcode to `" << SafeModuleBC.str() + << "'\nExiting."; exit(1); } - std::string SharedObject = compileSharedObject(SafeModuleBC.toString()); + std::string SharedObject = compileSharedObject(SafeModuleBC.str()); delete ToNotCodeGen; outs() << "You can reproduce the problem with the command line: \n"; if (isExecutingJIT()) { - outs() << " lli -load " << SharedObject << " " << TestModuleBC; + outs() << " lli -load " << SharedObject << " " << TestModuleBC.str(); } else { - outs() << " llc -f " << TestModuleBC << " -o " << TestModuleBC<< ".s\n"; - outs() << " gcc " << SharedObject << " " << TestModuleBC - << ".s -o " << TestModuleBC << ".exe"; + outs() << " llc -f " << TestModuleBC.str() << " -o " << TestModuleBC.str() + << ".s\n"; + outs() << " gcc " << SharedObject << " " << TestModuleBC.str() + << ".s -o " << TestModuleBC.str() << ".exe"; #if defined (HAVE_LINK_R) outs() << " -Wl,-R."; #endif outs() << "\n"; - outs() << " " << TestModuleBC << ".exe"; + outs() << " " << TestModuleBC.str() << ".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 << " -o temporary.c\n" + << SafeModuleBC.str() << " -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 diff --git a/tools/bugpoint/OptimizerDriver.cpp b/tools/bugpoint/OptimizerDriver.cpp index ef41c43b5f1..0c9037ff41b 100644 --- a/tools/bugpoint/OptimizerDriver.cpp +++ b/tools/bugpoint/OptimizerDriver.cpp @@ -27,9 +27,9 @@ #include "llvm/Target/TargetData.h" #include "llvm/Support/FileUtilities.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/raw_ostream.h" #include "llvm/System/Path.h" #include "llvm/System/Program.h" -#include "llvm/Config/alloca.h" #define DONT_GET_PLUGIN_LOADER_OPTION #include "llvm/Support/PluginLoader.h" @@ -136,7 +136,7 @@ bool BugDriver::runPasses(const std::vector &Passes, << ErrMsg << "\n"; return(1); } - OutputFilename = uniqueFilename.toString(); + OutputFilename = uniqueFilename.str(); // set up the input file name sys::Path inputFilename("bugpoint-input.bc"); @@ -152,29 +152,26 @@ bool BugDriver::runPasses(const std::vector &Passes, if (!ErrInfo.empty()) { - errs() << "Error opening bitcode file: " << inputFilename << "\n"; + errs() << "Error opening bitcode file: " << inputFilename.str() << "\n"; return 1; } WriteBitcodeToFile(Program, InFile); InFile.close(); // setup the child process' arguments - const char** args = (const char**) - alloca(sizeof(const char*) * - (Passes.size()+13+2*PluginLoader::getNumPlugins()+NumExtraArgs)); - int n = 0; + SmallVector Args; sys::Path tool = sys::Program::FindProgramByName(ToolName); if (UseValgrind) { - args[n++] = "valgrind"; - args[n++] = "--error-exitcode=1"; - args[n++] = "-q"; - args[n++] = tool.c_str(); + Args.push_back("valgrind"); + Args.push_back("--error-exitcode=1"); + Args.push_back("-q"); + Args.push_back(tool.c_str()); } else - args[n++] = ToolName; + Args.push_back(ToolName); - args[n++] = "-as-child"; - args[n++] = "-child-output"; - args[n++] = OutputFilename.c_str(); + Args.push_back("-as-child"); + Args.push_back("-child-output"); + Args.push_back(OutputFilename.c_str()); std::vector pass_args; for (unsigned i = 0, e = PluginLoader::getNumPlugins(); i != e; ++i) { pass_args.push_back( std::string("-load")); @@ -185,11 +182,11 @@ bool BugDriver::runPasses(const std::vector &Passes, pass_args.push_back( std::string("-") + (*I)->getPassArgument() ); for (std::vector::const_iterator I = pass_args.begin(), E = pass_args.end(); I != E; ++I ) - args[n++] = I->c_str(); - args[n++] = inputFilename.c_str(); + Args.push_back(I->c_str()); + Args.push_back(inputFilename.c_str()); for (unsigned i = 0; i < NumExtraArgs; ++i) - args[n++] = *ExtraArgs; - args[n++] = 0; + Args.push_back(*ExtraArgs); + Args.push_back(0); sys::Path prog; if (UseValgrind) @@ -201,7 +198,8 @@ bool BugDriver::runPasses(const std::vector &Passes, sys::Path Nowhere; const sys::Path *Redirects[3] = {0, &Nowhere, &Nowhere}; - int result = sys::Program::ExecuteAndWait(prog, args, 0, (SilencePasses ? Redirects : 0), + int result = sys::Program::ExecuteAndWait(prog, Args.data(), 0, + (SilencePasses ? Redirects : 0), Timeout, MemoryLimit, &ErrMsg); // If we are supposed to delete the bitcode file or if the passes crashed, diff --git a/tools/bugpoint/ToolRunner.cpp b/tools/bugpoint/ToolRunner.cpp index 01afc20bad0..e3e1cae4e5d 100644 --- a/tools/bugpoint/ToolRunner.cpp +++ b/tools/bugpoint/ToolRunner.cpp @@ -13,11 +13,12 @@ #define DEBUG_TYPE "toolrunner" #include "ToolRunner.h" -#include "llvm/Config/config.h" // for HAVE_LINK_R #include "llvm/System/Program.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/Debug.h" #include "llvm/Support/FileUtilities.h" +#include "llvm/Support/raw_ostream.h" +#include "llvm/Config/config.h" // for HAVE_LINK_R #include #include using namespace llvm; @@ -232,7 +233,7 @@ AbstractInterpreter *AbstractInterpreter::createLLI(const char *Argv0, std::string &Message, const std::vector *ToolArgs) { std::string LLIPath = - FindExecutable("lli", Argv0, (void *)(intptr_t)&createLLI).toString(); + FindExecutable("lli", Argv0, (void *)(intptr_t)&createLLI).str(); if (!LLIPath.empty()) { Message = "Found lli: " + LLIPath + "\n"; return new LLI(LLIPath, ToolArgs); @@ -332,7 +333,7 @@ AbstractInterpreter *AbstractInterpreter::createCustom( pos = ExecCommandLine.find_first_of(delimiters, lastPos); } - std::string CmdPath = sys::Program::FindProgramByName(Command).toString(); + std::string CmdPath = sys::Program::FindProgramByName(Command).str(); if (CmdPath.empty()) { Message = std::string("Cannot find '") + Command + @@ -407,7 +408,7 @@ int LLC::ExecuteProgram(const std::string &Bitcode, GCCArgs.insert(GCCArgs.end(), gccArgs.begin(), gccArgs.end()); // Assuming LLC worked, compile the result with GCC and run it. - return gcc->ExecuteProgram(OutputAsmFile.toString(), Args, GCC::AsmFile, + return gcc->ExecuteProgram(OutputAsmFile.str(), Args, GCC::AsmFile, InputFile, OutputFile, GCCArgs, Timeout, MemoryLimit); } @@ -419,7 +420,7 @@ LLC *AbstractInterpreter::createLLC(const char *Argv0, const std::vector *Args, const std::vector *GCCArgs) { std::string LLCPath = - FindExecutable("llc", Argv0, (void *)(intptr_t)&createLLC).toString(); + FindExecutable("llc", Argv0, (void *)(intptr_t)&createLLC).str(); if (LLCPath.empty()) { Message = "Cannot find `llc' in executable directory or PATH!\n"; return 0; @@ -505,7 +506,7 @@ int JIT::ExecuteProgram(const std::string &Bitcode, AbstractInterpreter *AbstractInterpreter::createJIT(const char *Argv0, std::string &Message, const std::vector *Args) { std::string LLIPath = - FindExecutable("lli", Argv0, (void *)(intptr_t)&createJIT).toString(); + FindExecutable("lli", Argv0, (void *)(intptr_t)&createJIT).str(); if (!LLIPath.empty()) { Message = "Found lli: " + LLIPath + "\n"; return new JIT(LLIPath, Args); @@ -572,7 +573,7 @@ int CBE::ExecuteProgram(const std::string &Bitcode, std::vector GCCArgs(ArgsForGCC); GCCArgs.insert(GCCArgs.end(), SharedLibs.begin(), SharedLibs.end()); - return gcc->ExecuteProgram(OutputCFile.toString(), Args, GCC::CFile, + return gcc->ExecuteProgram(OutputCFile.str(), Args, GCC::CFile, InputFile, OutputFile, GCCArgs, Timeout, MemoryLimit); } @@ -591,7 +592,7 @@ CBE *AbstractInterpreter::createCBE(const char *Argv0, return 0; } - Message = "Found llc: " + LLCPath.toString() + "\n"; + Message = "Found llc: " + LLCPath.str() + "\n"; GCC *gcc = GCC::create(Message, GCCArgs); if (!gcc) { errs() << Message << "\n"; @@ -757,7 +758,7 @@ int GCC::MakeSharedObject(const std::string &InputFile, FileType fileType, errs() << "Error making unique filename: " << ErrMsg << "\n"; exit(1); } - OutputFile = uniqueFilename.toString(); + OutputFile = uniqueFilename.str(); std::vector GCCArgs; @@ -839,6 +840,6 @@ GCC *GCC::create(std::string &Message, if (!RemoteClient.empty()) RemoteClientPath = sys::Program::FindProgramByName(RemoteClient); - Message = "Found gcc: " + GCCPath.toString() + "\n"; + Message = "Found gcc: " + GCCPath.str() + "\n"; return new GCC(GCCPath, RemoteClientPath, Args); } diff --git a/tools/lli/lli.cpp b/tools/lli/lli.cpp index 9c8cc6c08f1..e5c1070bbb9 100644 --- a/tools/lli/lli.cpp +++ b/tools/lli/lli.cpp @@ -28,6 +28,7 @@ #include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/PluginLoader.h" #include "llvm/Support/PrettyStackTrace.h" +#include "llvm/Support/raw_ostream.h" #include "llvm/System/Process.h" #include "llvm/System/Signals.h" #include "llvm/Target/TargetSelect.h" diff --git a/tools/llvm-ar/llvm-ar.cpp b/tools/llvm-ar/llvm-ar.cpp index c31f86ec5fd..95957df53fe 100644 --- a/tools/llvm-ar/llvm-ar.cpp +++ b/tools/llvm-ar/llvm-ar.cpp @@ -364,7 +364,7 @@ bool doPrint(std::string* ErrMsg) { continue; if (Verbose) - std::cout << "Printing " << I->getPath().toString() << "\n"; + std::cout << "Printing " << I->getPath().str() << "\n"; unsigned len = I->getSize(); std::cout.write(data, len); @@ -422,11 +422,10 @@ doDisplayTable(std::string* ErrMsg) { std::cout << " " << std::setw(4) << I->getUser(); std::cout << "/" << std::setw(4) << I->getGroup(); std::cout << " " << std::setw(8) << I->getSize(); - std::cout << " " << std::setw(20) << - I->getModTime().toString().substr(4); - std::cout << " " << I->getPath().toString() << "\n"; + std::cout << " " << std::setw(20) << I->getModTime().str().substr(4); + std::cout << " " << I->getPath().str() << "\n"; } else { - std::cout << I->getPath().toString() << "\n"; + std::cout << I->getPath().str() << "\n"; } } } @@ -528,7 +527,7 @@ doMove(std::string* ErrMsg) { if (AddBefore || InsertBefore || AddAfter) { for (Archive::iterator I = TheArchive->begin(), E= TheArchive->end(); I != E; ++I ) { - if (RelPos == I->getPath().toString()) { + if (RelPos == I->getPath().str()) { if (AddAfter) { moveto_spot = I; moveto_spot++; @@ -616,7 +615,7 @@ doReplaceOrInsert(std::string* ErrMsg) { std::set::iterator found = remaining.end(); for (std::set::iterator RI = remaining.begin(), RE = remaining.end(); RI != RE; ++RI ) { - std::string compare(RI->toString()); + std::string compare(RI->str()); if (TruncateNames && compare.length() > 15) { const char* nm = compare.c_str(); unsigned len = compare.length(); @@ -629,7 +628,7 @@ doReplaceOrInsert(std::string* ErrMsg) { len = 15; compare.assign(nm,len); } - if (compare == I->getPath().toString()) { + if (compare == I->getPath().str()) { found = RI; break; } @@ -661,9 +660,9 @@ doReplaceOrInsert(std::string* ErrMsg) { } // Determine if this is the place where we should insert - if ((AddBefore || InsertBefore) && (RelPos == I->getPath().toString())) + if ((AddBefore || InsertBefore) && RelPos == I->getPath().str()) insert_spot = I; - else if (AddAfter && (RelPos == I->getPath().toString())) { + else if (AddAfter && RelPos == I->getPath().str()) { insert_spot = I; insert_spot++; } @@ -719,14 +718,14 @@ int main(int argc, char **argv) { if (!ArchivePath.exists()) { // Produce a warning if we should and we're creating the archive if (!Create) - errs() << argv[0] << ": creating " << ArchivePath.toString() << "\n"; + errs() << argv[0] << ": creating " << ArchivePath.str() << "\n"; TheArchive = Archive::CreateEmpty(ArchivePath, Context); TheArchive->writeToDisk(); } else { std::string Error; TheArchive = Archive::OpenAndLoad(ArchivePath, Context, &Error); if (TheArchive == 0) { - errs() << argv[0] << ": error loading '" << ArchivePath << "': " + errs() << argv[0] << ": error loading '" << ArchivePath.str() << "': " << Error << "!\n"; return 1; } diff --git a/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp b/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp index db9b1312f01..7a8feca0e5c 100644 --- a/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp +++ b/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp @@ -35,6 +35,7 @@ #include "llvm/Support/ManagedStatic.h" #include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/PrettyStackTrace.h" +#include "llvm/Support/raw_ostream.h" #include "llvm/System/Signals.h" #include #include diff --git a/tools/llvm-db/Commands.cpp b/tools/llvm-db/Commands.cpp index bd741a5089d..d759dddecd3 100644 --- a/tools/llvm-db/Commands.cpp +++ b/tools/llvm-db/Commands.cpp @@ -19,8 +19,8 @@ #include "llvm/Debugger/SourceFile.h" #include "llvm/Debugger/InferiorProcess.h" #include "llvm/Support/FileUtilities.h" +#include "llvm/Support/raw_ostream.h" #include "llvm/ADT/StringExtras.h" -#include #include using namespace llvm; @@ -56,7 +56,7 @@ void CLIDebugger::startProgramRunning() { if (!Status) throw Err; if (TheProgramInfo->getProgramTimeStamp() != Status->getTimestamp()) { - std::cout << "'" << Program << "' has changed; re-reading program.\n"; + outs() << "'" << Program.str() << "' has changed; re-reading program.\n"; // Unload an existing program. This kills the program if necessary. Dbg.unloadProgram(); @@ -64,11 +64,11 @@ void CLIDebugger::startProgramRunning() { TheProgramInfo = 0; CurrentFile = 0; - Dbg.loadProgram(Program.toString(), Context); + Dbg.loadProgram(Program.str(), Context); TheProgramInfo = new ProgramInfo(Dbg.getProgram()); } - std::cout << "Starting program: " << Dbg.getProgramPath() << "\n"; + outs() << "Starting program: " << Dbg.getProgramPath() << "\n"; Dbg.createProgram(); // There was no current frame. @@ -83,7 +83,7 @@ bool CLIDebugger::printSourceLine(unsigned LineNo) { const char *LineStart, *LineEnd; CurrentFile->getSourceLine(LineNo-1, LineStart, LineEnd); if (LineStart == 0) return true; - std::cout << LineNo; + outs() << LineNo; // If this is the line the program is currently stopped at, print a marker. if (Dbg.isProgramRunning()) { @@ -93,10 +93,10 @@ bool CLIDebugger::printSourceLine(unsigned LineNo) { CurSFI); if (CurLineNo == LineNo && CurrentFile == &CurSFI->getSourceText()) - std::cout << " ->"; + outs() << " ->"; } - std::cout << "\t" << std::string(LineStart, LineEnd) << "\n"; + outs() << "\t" << std::string(LineStart, LineEnd) << "\n"; return false; } @@ -117,19 +117,19 @@ void CLIDebugger::printProgramLocation(bool PrintLocation) { if (PrintLocation) { // FIXME: print the current function arguments if (const GlobalVariable *FuncDesc = SF.getFunctionDesc()) - std::cout << getProgramInfo().getFunction(FuncDesc).getSymbolicName(); + outs() << getProgramInfo().getFunction(FuncDesc).getSymbolicName(); else - std::cout << ""; + outs() << ""; CurrentFile = &FileDesc->getSourceText(); - std::cout << " at " << CurrentFile->getFilename() << ":" << LineNo; - if (ColNo) std::cout << ":" << ColNo; - std::cout << "\n"; + outs() << " at " << CurrentFile->getFilename() << ":" << LineNo; + if (ColNo) outs() << ":" << ColNo; + outs() << "\n"; } if (printSourceLine(LineNo)) - std::cout << "\n"; + outs() << "\n"; else { LineListedStart = LineNo-ListSize/2+1; if ((int)LineListedStart < 1) LineListedStart = 1; @@ -241,14 +241,15 @@ void CLIDebugger::fileCommand(std::string &Options) { // If requested, start the new program. if (Prog.empty()) { - std::cout << "Unloaded program.\n"; + outs() << "Unloaded program.\n"; } else { - std::cout << "Loading program... " << std::flush; + outs() << "Loading program... "; + outs().flush(); Dbg.loadProgram(Prog, Context); assert(Dbg.isProgramLoaded() && "loadProgram succeeded, but not program loaded!"); TheProgramInfo = new ProgramInfo(Dbg.getProgram()); - std::cout << "successfully loaded '" << Dbg.getProgramPath() << "'!\n"; + outs() << "successfully loaded '" << Dbg.getProgramPath() << "'!\n"; } } @@ -391,29 +392,29 @@ void CLIDebugger::backtraceCommand(std::string &Options) { try { for (unsigned i = 0; ; ++i) { StackFrame &SF = RI.getStackFrame(i); - std::cout << "#" << i; + outs() << "#" << i; if (i == RI.getCurrentFrameIdx()) - std::cout << " ->"; - std::cout << "\t" << SF.getFrameID() << " in "; + outs() << " ->"; + outs() << "\t" << SF.getFrameID() << " in "; if (const GlobalVariable *G = SF.getFunctionDesc()) - std::cout << PI.getFunction(G).getSymbolicName(); + outs() << PI.getFunction(G).getSymbolicName(); unsigned LineNo, ColNo; const SourceFileInfo *SFI; SF.getSourceLocation(LineNo, ColNo, SFI); if (!SFI->getBaseName().empty()) { - std::cout << " at " << SFI->getBaseName(); + outs() << " at " << SFI->getBaseName(); if (LineNo) { - std::cout << ":" << LineNo; + outs() << ":" << LineNo; if (ColNo) - std::cout << ":" << ColNo; + outs() << ":" << ColNo; } } // FIXME: when we support shared libraries, we should print ' from foo.so' // if the stack frame is from a different object than the current one. - std::cout << "\n"; + outs() << "\n"; } } catch (...) { // Stop automatically when we run off the bottom of the stack. @@ -522,11 +523,11 @@ void CLIDebugger::infoCommand(std::string &Options) { } else if (What == "functions") { const std::map &Functions = getProgramInfo().getSourceFunctions(); - std::cout << "All defined functions:\n"; + outs() << "All defined functions:\n"; // FIXME: GDB groups these by source file. We could do that I guess. for (std::map::const_iterator I = Functions.begin(), E = Functions.end(); I != E; ++I) { - std::cout << I->second->getSymbolicName() << "\n"; + outs() << I->second->getSymbolicName() << "\n"; } } else if (What == "source") { @@ -537,30 +538,30 @@ void CLIDebugger::infoCommand(std::string &Options) { const SourceFileInfo &SF = getProgramInfo().getSourceFile(CurrentFile->getDescriptor()); - std::cout << "Current source file is: " << SF.getBaseName() << "\n" - << "Compilation directory is: " << SF.getDirectory() << "\n"; + outs() << "Current source file is: " << SF.getBaseName() << "\n" + << "Compilation directory is: " << SF.getDirectory() << "\n"; if (unsigned NL = CurrentFile->getNumLines()) - std::cout << "Located in: " << CurrentFile->getFilename() << "\n" - << "Contains " << NL << " lines\n"; + outs() << "Located in: " << CurrentFile->getFilename() << "\n" + << "Contains " << NL << " lines\n"; else - std::cout << "Could not find source file.\n"; - std::cout << "Source language is " - << SF.getLanguage().getSourceLanguageName() << "\n"; + outs() << "Could not find source file.\n"; + outs() << "Source language is " + << SF.getLanguage().getSourceLanguageName() << "\n"; } else if (What == "sources") { const std::map &SourceFiles = getProgramInfo().getSourceFiles(); - std::cout << "Source files for the program:\n"; + outs() << "Source files for the program:\n"; for (std::map::const_iterator I = SourceFiles.begin(), E = SourceFiles.end(); I != E;) { - std::cout << I->second->getDirectory() << "/" - << I->second->getBaseName(); + outs() << I->second->getDirectory() << "/" + << I->second->getBaseName(); ++I; - if (I != E) std::cout << ", "; + if (I != E) outs() << ", "; } - std::cout << "\n"; + outs() << "\n"; } else if (What == "target") { - std::cout << Dbg.getRunningProcess().getStatus(); + outs() << Dbg.getRunningProcess().getStatus(); } else { // See if this is something handled by the current language. if (getCurrentLanguage().printInfo(What)) @@ -746,7 +747,7 @@ void CLIDebugger::listCommand(std::string &Options) { if (LineStart == 0) throw "Could not load source file '" + CurrentFile->getFilename() + "'!"; else - std::cout << "\n"; + outs() << "\n"; } } @@ -762,11 +763,11 @@ void CLIDebugger::setCommand(std::string &Options) { if (!getToken(Options).empty()) throw "set language expects one argument at most."; if (Lang == "") { - std::cout << "The currently understood settings are:\n\n" - << "local or auto Automatic setting based on source file\n" - << "c Use the C language\n" - << "c++ Use the C++ language\n" - << "unknown Use when source language is not supported\n"; + outs() << "The currently understood settings are:\n\n" + << "local or auto Automatic setting based on source file\n" + << "c Use the C language\n" + << "c++ Use the C++ language\n" + << "unknown Use when source language is not supported\n"; } else if (Lang == "local" || Lang == "auto") { CurrentLanguage = 0; } else if (Lang == "c") { @@ -799,28 +800,28 @@ void CLIDebugger::showCommand(std::string &Options) { throw "show command expects one argument."; if (What == "args") { - std::cout << "Argument list to give program when started is \""; + outs() << "Argument list to give program when started is \""; // FIXME: This doesn't print stuff correctly if the arguments have spaces in // them, but currently the only way to get that is to use the --args command // line argument. This should really handle escaping all hard characters as // needed. for (unsigned i = 0, e = Dbg.getNumProgramArguments(); i != e; ++i) - std::cout << (i ? " " : "") << Dbg.getProgramArgument(i); - std::cout << "\"\n"; + outs() << (i ? " " : "") << Dbg.getProgramArgument(i); + outs() << "\"\n"; } else if (What == "language") { - std::cout << "The current source language is '"; + outs() << "The current source language is '"; if (CurrentLanguage) - std::cout << CurrentLanguage->getSourceLanguageName(); + outs() << CurrentLanguage->getSourceLanguageName(); else - std::cout << "auto; currently " - << getCurrentLanguage().getSourceLanguageName(); - std::cout << "'.\n"; + outs() << "auto; currently " + << getCurrentLanguage().getSourceLanguageName(); + outs() << "'.\n"; } else if (What == "listsize") { - std::cout << "Number of source lines llvm-db will list by default is " - << ListSize << ".\n"; + outs() << "Number of source lines llvm-db will list by default is " + << ListSize << ".\n"; } else if (What == "prompt") { - std::cout << "llvm-db's prompt is \"" << Prompt << "\".\n"; + outs() << "llvm-db's prompt is \"" << Prompt << "\".\n"; } else { throw "Unknown show command '" + What + "'. Try 'help show'."; } @@ -835,16 +836,16 @@ void CLIDebugger::helpCommand(std::string &Options) { // Getting detailed help on a particular command? if (!Command.empty()) { CLICommand *C = getCommand(Command); - std::cout << C->getShortHelp() << ".\n" << C->getLongHelp(); + outs() << C->getShortHelp() << ".\n" << C->getLongHelp(); // If there are aliases for this option, print them out. const std::vector &Names = C->getOptionNames(); if (Names.size() > 1) { - std::cout << "The '" << Command << "' command is known as: '" - << Names[0] << "'"; + outs() << "The '" << Command << "' command is known as: '" + << Names[0] << "'"; for (unsigned i = 1, e = Names.size(); i != e; ++i) - std::cout << ", '" << Names[i] << "'"; - std::cout << "\n"; + outs() << ", '" << Names[i] << "'"; + outs() << "\n"; } } else { @@ -859,7 +860,7 @@ void CLIDebugger::helpCommand(std::string &Options) { for (std::map::iterator I = CommandTable.begin(), E = CommandTable.end(); I != E; ++I) if (I->first == I->second->getPrimaryOptionName()) - std::cout << I->first << std::string(MaxSize - I->first.size(), ' ') - << " - " << I->second->getShortHelp() << "\n"; + outs() << I->first << std::string(MaxSize - I->first.size(), ' ') + << " - " << I->second->getShortHelp() << "\n"; } } diff --git a/tools/llvm-db/llvm-db.cpp b/tools/llvm-db/llvm-db.cpp index 8fb9b5857ef..463a1bdf884 100644 --- a/tools/llvm-db/llvm-db.cpp +++ b/tools/llvm-db/llvm-db.cpp @@ -17,8 +17,8 @@ #include "llvm/Support/CommandLine.h" #include "llvm/Support/ManagedStatic.h" #include "llvm/Support/PrettyStackTrace.h" +#include "llvm/Support/raw_ostream.h" #include "llvm/System/Signals.h" -#include using namespace llvm; namespace { @@ -57,13 +57,13 @@ int main(int argc, char **argv, char * const *envp) { LLVMContext &Context = getGlobalContext(); llvm_shutdown_obj Y; // Call llvm_shutdown() on exit. - std::cout << "NOTE: llvm-db is known useless right now.\n"; + outs() << "NOTE: llvm-db is known useless right now.\n"; try { cl::ParseCommandLineOptions(argc, argv, "llvm source-level debugger\n"); if (!Quiet) - std::cout << "llvm-db: The LLVM source-level debugger\n"; + outs() << "llvm-db: The LLVM source-level debugger\n"; // Merge Inputfile and InputArgs into the InputArgs list... if (!InputFile.empty() && InputArgs.empty()) @@ -85,7 +85,7 @@ int main(int argc, char **argv, char * const *envp) { try { D.fileCommand(InputArgs[0]); } catch (const std::string &Error) { - std::cout << "Error: " << Error << "\n"; + outs() << "Error: " << Error << "\n"; } Dbg.setProgramArguments(InputArgs.begin()+1, InputArgs.end()); diff --git a/tools/llvm-ld/llvm-ld.cpp b/tools/llvm-ld/llvm-ld.cpp index f789b15d3a2..8fcaefde0b5 100644 --- a/tools/llvm-ld/llvm-ld.cpp +++ b/tools/llvm-ld/llvm-ld.cpp @@ -35,6 +35,7 @@ #include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/PrettyStackTrace.h" #include "llvm/Support/SystemUtils.h" +#include "llvm/Support/raw_ostream.h" #include "llvm/System/Signals.h" #include "llvm/Config/config.h" #include @@ -466,7 +467,7 @@ static void EmitShellScript(char **argv) { if (FullLibraryPath.isEmpty()) FullLibraryPath = sys::Path::FindLibrary(*i); if (!FullLibraryPath.isEmpty()) - Out2 << " -load=" << FullLibraryPath.toString() << " \\\n"; + Out2 << " -load=" << FullLibraryPath.str() << " \\\n"; } Out2 << " " << BitcodeOutputFilename << " ${1+\"$@\"}\n"; Out2.close(); @@ -572,7 +573,7 @@ int main(int argc, char **argv, char **envp) { sys::Path ExeFile( OutputFilename ); if (ExeFile.getSuffix() == "") { ExeFile.appendSuffix("exe"); - OutputFilename = ExeFile.toString(); + OutputFilename = ExeFile.str(); } } #endif @@ -652,11 +653,11 @@ int main(int argc, char **argv, char **envp) { // Generate an assembly language file for the bitcode. std::string ErrMsg; - if (0 != GenerateAssembly(AssemblyFile.toString(), BitcodeOutputFilename, + if (0 != GenerateAssembly(AssemblyFile.str(), BitcodeOutputFilename, llc, ErrMsg)) PrintAndExit(ErrMsg); - if (0 != GenerateNative(OutputFilename, AssemblyFile.toString(), + if (0 != GenerateNative(OutputFilename, AssemblyFile.str(), NativeLinkItems, gcc, envp, ErrMsg)) PrintAndExit(ErrMsg); @@ -682,12 +683,11 @@ int main(int argc, char **argv, char **envp) { // Generate an assembly language file for the bitcode. std::string ErrMsg; - if (0 != GenerateCFile( - CFile.toString(), BitcodeOutputFilename, llc, ErrMsg)) + if (GenerateCFile(CFile.str(), BitcodeOutputFilename, llc, ErrMsg)) PrintAndExit(ErrMsg); - if (0 != GenerateNative(OutputFilename, CFile.toString(), - NativeLinkItems, gcc, envp, ErrMsg)) + if (GenerateNative(OutputFilename, CFile.str(), + NativeLinkItems, gcc, envp, ErrMsg)) PrintAndExit(ErrMsg); // Remove the assembly language file. diff --git a/tools/llvm-link/llvm-link.cpp b/tools/llvm-link/llvm-link.cpp index cebfec3fcee..6dc04e67228 100644 --- a/tools/llvm-link/llvm-link.cpp +++ b/tools/llvm-link/llvm-link.cpp @@ -21,6 +21,7 @@ #include "llvm/Support/ManagedStatic.h" #include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/PrettyStackTrace.h" +#include "llvm/Support/raw_ostream.h" #include "llvm/System/Signals.h" #include "llvm/System/Path.h" #include @@ -58,7 +59,7 @@ static inline std::auto_ptr LoadFile(const std::string &FN, if (Verbose) errs() << "Loading '" << Filename.c_str() << "'\n"; Module* Result = 0; - const std::string &FNStr = Filename.toString(); + const std::string &FNStr = Filename.str(); if (MemoryBuffer *Buffer = MemoryBuffer::getFileOrSTDIN(FNStr, &ErrorMessage)) { Result = ParseBitcodeFile(Buffer, Context, &ErrorMessage); diff --git a/tools/lto/LTOCodeGenerator.cpp b/tools/lto/LTOCodeGenerator.cpp index e868ee312b1..4bd754cfbad 100644 --- a/tools/lto/LTOCodeGenerator.cpp +++ b/tools/lto/LTOCodeGenerator.cpp @@ -202,9 +202,8 @@ const void* LTOCodeGenerator::compile(size_t* length, std::string& errMsg) sys::RemoveFileOnSignal(uniqueObjPath); // assemble the assembly code - const std::string& uniqueObjStr = uniqueObjPath.toString(); - bool asmResult = this->assemble(uniqueAsmPath.toString(), - uniqueObjStr, errMsg); + const std::string& uniqueObjStr = uniqueObjPath.str(); + bool asmResult = this->assemble(uniqueAsmPath.str(), uniqueObjStr, errMsg); if ( !asmResult ) { // remove old buffer if compile() called twice delete _nativeObjectFile; diff --git a/utils/TableGen/LLVMCConfigurationEmitter.cpp b/utils/TableGen/LLVMCConfigurationEmitter.cpp index b27ac437459..6bade9bc6e4 100644 --- a/utils/TableGen/LLVMCConfigurationEmitter.cpp +++ b/utils/TableGen/LLVMCConfigurationEmitter.cpp @@ -1330,9 +1330,9 @@ void EmitCmdLineVecFill(const Init* CmdLine, const std::string& ToolName, O << "for (PathVector::const_iterator B = inFiles.begin()" << ", E = inFiles.end();\n" << IndentLevel << "B != E; ++B)\n" - << IndentLevel << Indent1 << "vec.push_back(B->toString());\n"; + << IndentLevel << Indent1 << "vec.push_back(B->str());\n"; else - O << "vec.push_back(inFile.toString());\n"; + O << "vec.push_back(inFile.str());\n"; } else if (cmd == "$OUTFILE") { O << "vec.push_back(out_file);\n"; @@ -1556,7 +1556,7 @@ void EmitGenerateActionMethod (const ToolDescription& D, O << '\n' << Indent2 << "out_file = OutFilename(" << (IsJoin ? "sys::Path(),\n" : "inFile,\n") - << Indent3 << "TempDir, stop_compilation, output_suffix).toString();\n\n"; + << Indent3 << "TempDir, stop_compilation, output_suffix).str();\n\n"; // cmd_line is either a string or a 'case' construct. if (!D.CmdLine)