summaryrefslogtreecommitdiff
path: root/lib/Support/FormattedStream.cpp
diff options
context:
space:
mode:
authorDavid Greene <greened@obbligato.org>2009-07-23 23:21:10 +0000
committerDavid Greene <greened@obbligato.org>2009-07-23 23:21:10 +0000
commited0e2adc7076365596ee3d26d5ba5240ce13f23d (patch)
tree9b3b55942b5524a2b3abcb296e98103ab3a6fa76 /lib/Support/FormattedStream.cpp
parenteee839dd3c5cb87e51a522b4800674d7680fef70 (diff)
downloadllvm-ed0e2adc7076365596ee3d26d5ba5240ce13f23d.tar.gz
llvm-ed0e2adc7076365596ee3d26d5ba5240ce13f23d.tar.bz2
llvm-ed0e2adc7076365596ee3d26d5ba5240ce13f23d.tar.xz
Write space padding as one string to speed up comment printing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76910 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Support/FormattedStream.cpp')
-rw-r--r--lib/Support/FormattedStream.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/Support/FormattedStream.cpp b/lib/Support/FormattedStream.cpp
index 3523e2dee3..1796f9f956 100644
--- a/lib/Support/FormattedStream.cpp
+++ b/lib/Support/FormattedStream.cpp
@@ -12,6 +12,8 @@
//===----------------------------------------------------------------------===//
#include "llvm/Support/FormattedStream.h"
+#include <algorithm>
+
using namespace llvm;
/// ComputeColumn - Examine the current output and figure out which
@@ -44,9 +46,17 @@ void formatted_raw_ostream::PadToColumn(unsigned NewCol, unsigned MinPad) {
if (NewCol < Column || num < MinPad)
num = MinPad;
- // TODO: Write a whole string at a time.
- while (num-- > 0)
- write(' ');
+ // Keep a buffer of spaces handy to speed up processing.
+ static char Spaces[MAX_COLUMN_PAD];
+ static bool Initialized = false;
+ if (!Initialized) {
+ std::fill_n(Spaces, MAX_COLUMN_PAD, ' '),
+ Initialized = true;
+ }
+
+ assert(num < MAX_COLUMN_PAD && "Unexpectedly large column padding");
+
+ write(Spaces, num);
}
/// fouts() - This returns a reference to a formatted_raw_ostream for