[PATCH] D60227: [Remarks] Add string deduplication using a string table

Francis Visoiu Mistrih via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 3 12:44:51 PDT 2019


thegameg created this revision.
thegameg added reviewers: paquette, anemet, JDevlieghere, hfinkel, fhahn.
Herald added subscribers: hiraditya, mgorny.
Herald added a project: LLVM.

- Add support for uniquing strings in the remark streamer and emitting the string table in the remarks section.

- Add parsing support for the string table in the RemarkParser.

>From this remark:

  --- !Missed
  Pass:            inline
  Name:            NoDefinition
  DebugLoc:        { File: 'test-suite/SingleSource/UnitTests/2002-04-17-PrintfChar.c',
                     Line: 7, Column: 3 }
  Function:        printArgsNoRet
  Args:
    - Callee:          printf
    - String:          ' will not be inlined into '
    - Caller:          printArgsNoRet
      DebugLoc:        { File: 'test-suite/SingleSource/UnitTests/2002-04-17-PrintfChar.c',
                         Line: 6, Column: 0 }
    - String:          ' because its definition is unavailable'
  ...

to:

  --- !Missed
  Pass:            0
  Name:            1
  DebugLoc:        { File: 3, Line: 7, Column: 3 }
  Function:        2
  Args:
    - Callee:          4
    - String:          5
    - Caller:          2
      DebugLoc:        { File: 3, Line: 6, Column: 0 }
    - String:          6
  ...

And the string table in the .remarks/__remarks section containing:

  inline\0NoDefinition\0printArgsNoRet\0test-suite/SingleSource/UnitTests/2002-04-17-PrintfChar.c\0printf\0 will not be inlined into \0 because its definition is unavailable\0

This is mostly supposed to be used for testing purposes, but it gives us a 2x reduction in the remark size, and is an incremental change for the updates to the remarks file format.


https://reviews.llvm.org/D60227

Files:
  llvm/docs/CodeGenerator.rst
  llvm/include/llvm/IR/RemarkStreamer.h
  llvm/include/llvm/Remarks/RemarkParser.h
  llvm/include/llvm/Remarks/RemarkStringTable.h
  llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
  llvm/lib/CodeGen/AsmPrinter/LLVMBuild.txt
  llvm/lib/IR/DiagnosticInfo.cpp
  llvm/lib/IR/LLVMBuild.txt
  llvm/lib/IR/RemarkStreamer.cpp
  llvm/lib/Remarks/CMakeLists.txt
  llvm/lib/Remarks/RemarkParser.cpp
  llvm/lib/Remarks/RemarkStringTable.cpp
  llvm/lib/Remarks/YAMLRemarkParser.cpp
  llvm/lib/Remarks/YAMLRemarkParser.h
  llvm/test/CodeGen/X86/remarks-section.ll
  llvm/unittests/Remarks/CMakeLists.txt
  llvm/unittests/Remarks/RemarksStrTabParsingTest.cpp
  llvm/unittests/Remarks/YAMLRemarksParsingTest.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D60227.193571.patch
Type: text/x-patch
Size: 27483 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190403/2f748f72/attachment.bin>


More information about the llvm-commits mailing list