mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-28 11:16:07 +00:00

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`. Differential Revision: https://reviews.llvm.org/D121173
39 lines
1.3 KiB
Plaintext
39 lines
1.3 KiB
Plaintext
RUN: llvm-remark-size-diff %p/Inputs/1-func-1-instr-1-stack.yaml %p/Inputs/1-func-2-instr-2-stack.yaml --parser=yaml --report_style=json --pretty | FileCheck -strict-whitespace %s --check-prefix=INCREASE
|
|
RUN: llvm-remark-size-diff %p/Inputs/1-func-2-instr-2-stack.yaml %p/Inputs/1-func-1-instr-1-stack.yaml --parser=yaml --report_style=json --pretty | FileCheck -strict-whitespace %s --check-prefix=DECREASE
|
|
|
|
; Test a size increase/decrease of one instruction + 1 stack byte.
|
|
|
|
; INCREASE-LABEL: "Files":
|
|
; INCREASE: "A":{{.*}}1-func-1-instr-1-stack.yaml
|
|
; INCREASE-NEXT: "B":{{.*}}1-func-2-instr-2-stack.yaml
|
|
|
|
; INCREASE-LABEL: "InBoth": [
|
|
; INCREASE: "FunctionName": "func0"
|
|
; INCREASE-NEXT: "InstCount":
|
|
; INCREASE-NEXT: 1,
|
|
; INCREASE-NEXT: 2
|
|
; INCREASE-NEXT: ],
|
|
; INCREASE-NEXT: "StackSize":
|
|
; INCREASE-NEXT: 1,
|
|
; INCREASE-NEXT: 2
|
|
|
|
; INCREASE: "OnlyInA": [],
|
|
; INCREASE: "OnlyInB": []
|
|
|
|
; DECREASE-LABEL: "Files":
|
|
; DECREASE: "A":{{.*}}1-func-2-instr-2-stack.yaml
|
|
; DECREASE-NEXT: "B":{{.*}}1-func-1-instr-1-stack.yaml
|
|
|
|
; DECREASE-LABEL: "InBoth": [
|
|
; DECREASE: "FunctionName": "func0"
|
|
; DECREASE-NEXT: "InstCount":
|
|
; DECREASE-NEXT: 2,
|
|
; DECREASE-NEXT: 1
|
|
; DECREASE-NEXT: ],
|
|
; DECREASE-NEXT: "StackSize":
|
|
; DECREASE-NEXT: 2,
|
|
; DECREASE-NEXT: 1
|
|
|
|
; DECREASE: "OnlyInA": [],
|
|
; DECREASE: "OnlyInB": []
|