---
name: "llvm-remark-size-diff-17"
section: "1"
platform: "linux"
package: "llvm-17"
version: "1:17.0.6-22+b2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/llvm-remark-size-diff-17"
---

# llvm-remark-size-diff-17(1)

diff size remarks

## NAME

llvm-remark-size-diff - diff size remarks

## SYNOPSIS

**llvm-remark-size-diff** \[*options*\] *file\_a* *file\_b* **–parser** *parser*

## DESCRIPTION

**llvm-remark-size-diff** diffs size *remarks* in two remark files: **file\_a** and **file\_b**.

**llvm-remark-size-diff** can be used to gain insight into which functions were impacted the most by code generation changes.

In most common use-cases **file\_a** and **file\_b** will be remarks output by compiling a **fixed source** with **differing compilers** or **differing optimization settings**.

**llvm-remark-size-diff** handles both *YAML* and *bitstream* remarks.

## OPTIONS

- **--parser=\<yaml\|bitstream\>**

  Select the type of input remark parser. Required. \* **yaml**: The tool will parse YAML remarks. \* **bitstream**: The tool will parse bitstream remarks.

- **--report-style=\<human\|json\>**

  Output style. \* **human**: Human-readable textual report. Default option. \* **json**: JSON report.

- **--pretty**

  Pretty-print JSON output. Optional.

  If output is not set to JSON, this does nothing.

- **-o=\<file\>**

  Output file for the report. Outputs to stdout by default.

## HUMAN-READABLE OUTPUT

The human-readable format for **llvm-remark-size-diff** is composed of two sections:

- •

  Per-function changes.

- •

  A high-level summary of all changes.

### Changed Function Section

Suppose you are comparing two remark files OLD and NEW.

For each function with a **changed instruction count** in OLD and NEW, **llvm-remark-size-diff** will emit a line like below:

```
(++|--|==) (>|<) function_name, N instrs, M stack B
```

A breakdown of the format is below:

- **(++\|--\|==)**

  Which of OLD and NEW the **function\_name** is present in.

  - •

    **++**: Only in NEW. (“Added”)

  - •

    **--**: Only in OLD. (“Removed”)

  - •

    **==**: In both.

- **(\>\|\<)**

  Denotes if **function\_name** has more instructions or fewer instructions in the second file.

  - •

    **\>**: More instructions in second file than first file.

  - •

    **\<**: Fewer instructions in second file than in first file.

- **function\_name**

  The name of the changed function.

- **N instrs**

  Second file instruction count - first file instruction count.

- **M stack B**

  Second file stack byte count - first file stack byte count.

### Summary Section

**llvm-remark-size-diff** will output a high-level summary after printing all changed functions.

```
instruction count: N (inst_pct_change%)
stack byte usage: M (sb_pct_change%)
```

- **N**

  Sum of all instruction count changes between the second and first file.

- **inst\_pct\_change%**

  Percent increase or decrease in instruction count between the second and first file.

- **M**

  Sum of all stack byte count changes between the second and first file.

- **sb\_pct\_change%**

  Percent increase or decrease in stack byte usage between the second and first file.

## JSON OUTPUT

### High-Level view

Suppose we are comparing two files, OLD and NEW.

**llvm-remark-size-diff** will output JSON as follows.

```
"Files": [
  "A": "path/to/OLD",
  "B": "path/to/NEW"
]
"InBoth": [
  ...
],
"OnlyInA": [
  ...
],
"OnlyInB": [
  ...
]
```

- **Files**

  Original paths to remark files.

  - •

    **A**: Path to the first file.

  - •

    **B**: Path to the second file.

- **InBoth**

  Functions present in both files.

- **OnlyInA**

  Functions only present in the first file.

- **OnlyInB**

  Functions only present in the second file.

### Function JSON

The **InBoth**, **OnlyInA**, and **OnlyInB** sections contain size information for each function in the input remark files.

```
{
  "FunctionName" : "function_name"
  "InstCount": [
      INST_COUNT_A,
      INST_COUNT_B
    ],
  "StackSize": [
      STACK_BYTES_A,
      STACK_BYTES_B
    ],
}
```

- **FunctionName**

  Name of the function.

- **InstCount**

  Instruction counts for the function.

  - •

    **INST\_COUNT\_A**: Instruction count in OLD.

  - •

    **INST\_COUNT\_B**: Instruction count in NEW.

- **StackSize**

  Stack byte counts for the function.

  - •

    **STACK\_BYTES\_A**: Stack bytes in OLD.

  - •

    **STACK\_BYTES\_B**: Stack bytes in NEW.

### Computing Diffs From Function JSON

Function JSON does not contain the diffs. Tools consuming JSON output from **llvm-remark-size-diff** are responsible for computing the diffs separately.

**To compute the diffs:**

- •

  Instruction count diff: **INST\_COUNT\_B - INST\_COUNT\_A**

- •

  Stack byte count diff: **STACK\_BYTES\_B - STACK\_BYTES\_A**

## EXIT STATUS

**llvm-remark-size-diff** returns 0 on success, and a non-zero value otherwise.

## AUTHOR

Maintained by the LLVM Team (https://llvm.org/).

## COPYRIGHT

2003-2025, LLVM Project
