[llvm] r238187 - [TableGen] Fix line wrapping logic for the autogenerated header to use math that makes more sense (at least to me).

Craig Topper craig.topper at gmail.com
Tue May 26 01:07:58 PDT 2015


Author: ctopper
Date: Tue May 26 03:07:56 2015
New Revision: 238187

URL: http://llvm.org/viewvc/llvm-project?rev=238187&view=rev
Log:
[TableGen] Fix line wrapping logic for the autogenerated header to use math that makes more sense (at least to me).

The old code had a bug if the description was between 75 and 85 characters or so as it substracted PSLen from Desc.size() instead of MAX_LINE_LEN in the compare. It also calculated odd values for PosE on the last split and just let StringRef::slice take care of it being larger than the description string.

Modified:
    llvm/trunk/lib/TableGen/TableGenBackend.cpp

Modified: llvm/trunk/lib/TableGen/TableGenBackend.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/TableGen/TableGenBackend.cpp?rev=238187&r1=238186&r2=238187&view=diff
==============================================================================
--- llvm/trunk/lib/TableGen/TableGenBackend.cpp (original)
+++ llvm/trunk/lib/TableGen/TableGenBackend.cpp Tue May 26 03:07:56 2015
@@ -36,14 +36,13 @@ void llvm::emitSourceFileHeader(StringRe
   StringRef Prefix("|* ");
   StringRef Suffix(" *|");
   printLine(OS, Prefix, ' ', Suffix);
+  size_t PSLen = Prefix.size() + Suffix.size();
+  assert(PSLen < MAX_LINE_LEN);
   size_t Pos = 0U;
-  do{
-    size_t PSLen = Suffix.size() + Prefix.size();
-    size_t PosE = Pos + ((MAX_LINE_LEN > (Desc.size() - PSLen)) ?
-      Desc.size() :
-      MAX_LINE_LEN - PSLen);
-    printLine(OS, Prefix + Desc.slice(Pos, PosE), ' ', Suffix);
-    Pos = PosE;
+  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!", ' ',





More information about the llvm-commits mailing list