diff options
Diffstat (limited to 'contrib/llvm/lib/TableGen/TableGenBackend.cpp')
-rw-r--r-- | contrib/llvm/lib/TableGen/TableGenBackend.cpp | 35 |
1 files changed, 16 insertions, 19 deletions
diff --git a/contrib/llvm/lib/TableGen/TableGenBackend.cpp b/contrib/llvm/lib/TableGen/TableGenBackend.cpp index 79d5677..77ed841 100644 --- a/contrib/llvm/lib/TableGen/TableGenBackend.cpp +++ b/contrib/llvm/lib/TableGen/TableGenBackend.cpp @@ -11,10 +11,9 @@ // //===----------------------------------------------------------------------===// +#include "llvm/TableGen/TableGenBackend.h" #include "llvm/ADT/Twine.h" #include "llvm/Support/raw_ostream.h" -#include "llvm/TableGen/TableGenBackend.h" -#include <algorithm> using namespace llvm; @@ -23,32 +22,30 @@ const size_t MAX_LINE_LEN = 80U; static void printLine(raw_ostream &OS, const Twine &Prefix, char Fill, StringRef Suffix) { size_t Pos = (size_t)OS.tell(); - assert((MAX_LINE_LEN - Prefix.str().size() - Suffix.size() > 0) && - "header line exceeds max limit"); + assert((Prefix.str().size() + Suffix.size() <= MAX_LINE_LEN) && + "header line exceeds max limit"); OS << Prefix; - const size_t e = MAX_LINE_LEN - Suffix.size(); - for (size_t i = (size_t)OS.tell() - Pos; i < e; ++i) + for (size_t i = (size_t)OS.tell() - Pos, e = MAX_LINE_LEN - Suffix.size(); + i < e; ++i) OS << Fill; OS << Suffix << '\n'; } void llvm::emitSourceFileHeader(StringRef Desc, raw_ostream &OS) { printLine(OS, "/*===- TableGen'erated file ", '-', "*- C++ -*-===*\\"); - printLine(OS, "|*", ' ', "*|"); - size_t Pos = 0U; - size_t PosE; - StringRef Prefix("|*"); + StringRef Prefix("|* "); StringRef Suffix(" *|"); - do{ - size_t PSLen = Suffix.size() + Prefix.size(); - PosE = Pos + ((MAX_LINE_LEN > (Desc.size() - PSLen)) ? - Desc.size() : - MAX_LINE_LEN - PSLen); - printLine(OS, Prefix + Desc.slice(Pos, PosE), ' ', Suffix); - Pos = PosE; - } while(Pos < Desc.size()); printLine(OS, Prefix, ' ', Suffix); - printLine(OS, Prefix + " Automatically generated file, do not edit!", ' ', + size_t PSLen = Prefix.size() + Suffix.size(); + assert(PSLen < MAX_LINE_LEN); + size_t Pos = 0U; + do { + size_t Length = std::min(Desc.size() - Pos, MAX_LINE_LEN - PSLen); + printLine(OS, Prefix + Desc.substr(Pos, Length), ' ', Suffix); + Pos += Length; + } while (Pos < Desc.size()); + printLine(OS, Prefix, ' ', Suffix); + printLine(OS, Prefix + "Automatically generated file, do not edit!", ' ', Suffix); printLine(OS, Prefix, ' ', Suffix); printLine(OS, "\\*===", '-', "===*/"); |