aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2008-04-16 03:46:57 +0000
committerChris Lattner <sabre@nondot.org>2008-04-16 03:46:57 +0000
commitb9bc3eca218e2670f05b34c0b3c33a46d710bd88 (patch)
treeb4fb19a98f3e216976baa0e85803043c0d4b01f1
parent2f868c013935791c421def45b422a6f6e79d2e4a (diff)
speed up -emit-html in a release build by 6.5% by avoiding std::string.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49764 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--Driver/HTMLPrint.cpp6
-rw-r--r--include/clang/Rewrite/Rewriter.h1
2 files changed, 5 insertions, 2 deletions
diff --git a/Driver/HTMLPrint.cpp b/Driver/HTMLPrint.cpp
index 981be851cf..165689d143 100644
--- a/Driver/HTMLPrint.cpp
+++ b/Driver/HTMLPrint.cpp
@@ -56,8 +56,10 @@ HTMLPrinter::~HTMLPrinter() {
// Emit the HTML.
if (const RewriteBuffer *RewriteBuf = R.getRewriteBufferFor(FileID)) {
- std::string S(RewriteBuf->begin(), RewriteBuf->end());
- printf("%s\n", S.c_str());
+ char *Buffer = (char*)malloc(RewriteBuf->size());
+ std::copy(RewriteBuf->begin(), RewriteBuf->end(), Buffer);
+ fwrite(Buffer, 1, RewriteBuf->size(), stdout);
+ free(Buffer);
}
}
diff --git a/include/clang/Rewrite/Rewriter.h b/include/clang/Rewrite/Rewriter.h
index bb4e16a8e8..261465ea5a 100644
--- a/include/clang/Rewrite/Rewriter.h
+++ b/include/clang/Rewrite/Rewriter.h
@@ -49,6 +49,7 @@ public:
typedef BufferTy::const_iterator iterator;
iterator begin() const { return Buffer.begin(); }
iterator end() const { return Buffer.end(); }
+ unsigned size() const { return Buffer.size(); }
private: // Methods only usable by Rewriter.