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 79d567753a6c..77ed8414b15f 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, "\\*===", '-', "===*/");  | 
