ymandel updated this revision to Diff 178468. ymandel added a comment. Change buildAST functions to take a StringRef instead of a Twine.
In practice, code is almost never constructed on the fly using a Twine, so StringRef is simpler and avoids needing a copy when constructing the MemBuffer. Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D55765/new/ https://reviews.llvm.org/D55765 Files: lib/Tooling/Tooling.cpp Index: lib/Tooling/Tooling.cpp =================================================================== --- lib/Tooling/Tooling.cpp +++ lib/Tooling/Tooling.cpp @@ -581,7 +581,7 @@ } std::unique_ptr<ASTUnit> buildASTFromCodeWithArgs( - const Twine &Code, const std::vector<std::string> &Args, + StringRef Code, const std::vector<std::string> &Args, const Twine &FileName, const Twine &ToolName, std::shared_ptr<PCHContainerOperations> PCHContainerOps, ArgumentsAdjuster Adjuster) { @@ -602,10 +602,8 @@ getSyntaxOnlyToolArgs(ToolName, Adjuster(Args, FileNameRef), FileNameRef), &Action, Files.get(), std::move(PCHContainerOps)); - SmallString<1024> CodeStorage; InMemoryFileSystem->addFile(FileNameRef, 0, - llvm::MemoryBuffer::getMemBuffer( - Code.toNullTerminatedStringRef(CodeStorage))); + llvm::MemoryBuffer::getMemBufferCopy(Code)); if (!Invocation.run()) return nullptr;
Index: lib/Tooling/Tooling.cpp =================================================================== --- lib/Tooling/Tooling.cpp +++ lib/Tooling/Tooling.cpp @@ -581,7 +581,7 @@ } std::unique_ptr<ASTUnit> buildASTFromCodeWithArgs( - const Twine &Code, const std::vector<std::string> &Args, + StringRef Code, const std::vector<std::string> &Args, const Twine &FileName, const Twine &ToolName, std::shared_ptr<PCHContainerOperations> PCHContainerOps, ArgumentsAdjuster Adjuster) { @@ -602,10 +602,8 @@ getSyntaxOnlyToolArgs(ToolName, Adjuster(Args, FileNameRef), FileNameRef), &Action, Files.get(), std::move(PCHContainerOps)); - SmallString<1024> CodeStorage; InMemoryFileSystem->addFile(FileNameRef, 0, - llvm::MemoryBuffer::getMemBuffer( - Code.toNullTerminatedStringRef(CodeStorage))); + llvm::MemoryBuffer::getMemBufferCopy(Code)); if (!Invocation.run()) return nullptr;
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits