[PATCH] D121173: Add JSON output option to llvm-remark-size-diff

Jessica Paquette via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 7 15:58:47 PST 2022


paquette created this revision.
paquette added reviewers: thegameg, fhahn.
Herald added a project: All.
paquette requested review of this revision.
Herald added a project: LLVM.

This adds JSON output to llvm-remark-size-diff.

The goal here is to make it easy for external tools to consume output from llvm-remark-size-diff. These tools could be used for automated size analysis. (E.g. in CI).

To specify JSON output, use `--report_style=json`. JSON output can be pretty-printed via `--pretty`.

With automation in mind, the schema looks like this:

  "Files": {
      "A": <filename_a>
      "B": <filename_b>
  },
  
  "InBoth": [
      {
      "FunctionName": <function name>,
      "InstCount": [
          <count_in_a>,
          <count_in_b>
          ],
      "StackSize": [
          <count_in_a>,
          <count_in_b>
          ]
      },
      ...
  ]
  
  "OnlyInA": [
      {
      "FunctionName": <function name>,
      "InstCount": [
          <count_in_a>,
          0
          ],
      "StackSize": [
          <count_in_a>,
          0
          ]
      },
      ...
  ]
  
  "OnlyInB": [
      {
      "FunctionName": <function name>,
      "InstCount": [
          0,
          <count_in_b>
          ],
      "StackSize": [
          0,
          <count_in_b>
          ]
      },
      ...
  ]

A few notes:

- Filenames are included, because tools may want to combine many outputs together in some way (a big JSON file, a big CSV, or something.)

- Counts are represented as [a, b] so that a diff can be calculated via b - a. The original counts may be useful for size analysis (e.g. was this function extremely large before?) and so both are preserved.

- `OnlyInA` and `OnlyInB` have a 0 for one of the counts always. This is to make it easier for tools to share code between `OnlyInA`, `OnlyInB`, and `InBoth`.


https://reviews.llvm.org/D121173

Files:
  llvm/test/tools/llvm-remark-size-diff/json-add-remove-func.test
  llvm/test/tools/llvm-remark-size-diff/json-increase-decrease-inst-count.test
  llvm/test/tools/llvm-remark-size-diff/json-no-difference.test
  llvm/tools/llvm-remark-size-diff/RemarkSizeDiff.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D121173.413652.patch
Type: text/x-patch
Size: 11690 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220307/46bc3d80/attachment.bin>


More information about the llvm-commits mailing list