[PATCH] D123878: [AMDGPU] Add remarks to output some resource usage

Scott Linder via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed May 11 13:11:11 PDT 2022


scott.linder added a comment.

In D123878#3506500 <https://reviews.llvm.org/D123878#3506500>, @afanfa wrote:

> If possible, I would like to keep some kind of delimiter. I like the idea of having it at the beginning and at the end of the section. The best option would be to convince clang to print new lines.

It seems like the stripping of non-printable characters is intentional, but only for diagnostics that don't use the TableGen based diagnostic formatting scheme in clang. I'm not sure exactly why, but regardless there is precedent for newlines in other messages.

To get the newlines to hit the terminal for our case the following patch is enough:

  --- a/clang/lib/Basic/Diagnostic.cpp
  +++ b/clang/lib/Basic/Diagnostic.cpp
  @@ -812,7 +812,7 @@ FormatDiagnostic(const char *DiagStr, const char *DiagEnd,
         getArgKind(0) == DiagnosticsEngine::ak_std_string) {                                                                                                                                                                                                                  const std::string &S = getArgStdStr(0);                                                                                                                                                                                                                                 for (char c : S) {
  -      if (llvm::sys::locale::isPrint(c) || c == '\t') {
  +      if (llvm::sys::locale::isPrint(c) || c == '\t' || c == '\n') {
           OutStr.push_back(c);
         }
       }

To get the right indentation inserted for the extra lines the `TextDiagnostic` consumer needs to also be updated, but that should be a small change. Only one test breaks, and it seems useful for it to pick up the new behavior anyway.

The only other potential conflict is that in `TextDiagnostic` specifically there is also the Clang option `-fmessage-length=N` which will forcibly wrap diagnostic messages on word-boundaries (although never breaking up a word across lines). It seems to only apply to text preceding the first newline in the message, so it is likely just a non-issue?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D123878/new/

https://reviews.llvm.org/D123878



More information about the llvm-commits mailing list