From 7b0f8fc600aea7f453c494e50cb3e53893c89769 Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Tue, 26 May 2015 08:07:56 +0000 Subject: [PATCH] [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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@238187 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/TableGen/TableGenBackend.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/lib/TableGen/TableGenBackend.cpp b/lib/TableGen/TableGenBackend.cpp index 43f8cb089ec..77ed8414b15 100644 --- a/lib/TableGen/TableGenBackend.cpp +++ b/lib/TableGen/TableGenBackend.cpp @@ -36,14 +36,13 @@ void llvm::emitSourceFileHeader(StringRef Desc, raw_ostream &OS) { 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!", ' ', -- 2.34.1