Skip to content

Conversation

@OCHyams
Copy link
Contributor

@OCHyams OCHyams commented Jun 16, 2025

Set LLVM_EXPERIMENTAL_KEY_INSTRUCTIONS=ON by default. This enables support for Key Instructions in LLVM by default, it does not enable the feature by default.

This does have an affect on compile time, which looks to have mostly been "paid for" (if that argument stands) by my PR #143399.

From compile-time-tracker:

  1. this patch
  2. PR [NFC][DebugInfo] Make MDNodeKeyImpl<DILocation>::Column 16 bits #143399
  3. base
    Commit  stage1-O3  stage1-ReleaseThinLTO  stage1-ReleaseLTO-g  stage1-O0-g  stage1-aarch64-O3  stage1-aarch64-O0-g  stage2-O3      stage2-O0-g      stage2-clang
        1.  61213M (+0.02%)  77397M (+0.01%)  89413M (+0.08%)  18865M (+0.13%)  68670M (+0.01%)  23100M (+0.12%)  53409M (+0.00%)  16550M (+0.20%)  34060797M (+0.02%)
	2.  61201M (-0.01%)  77389M (+0.00%)  89343M (-0.06%)  18841M (-0.16%)  68666M (+0.00%)  23073M (-0.16%)  53408M (-0.01%)  16518M (+0.01%)  34054978M (+0.00%)
	3.  61207M (+0.00%)  77386M (-0.01%)  89396M (-0.02%)  18871M (-0.02%)  68665M (+0.01%)  23109M (+0.02%)  53415M (-0.02%)  16516M (-0.00%)  34054300M (-0.00%)

Compare 2-1: https://llvm-compile-time-tracker.com/compare.php?from=89490929c34f45842df1588cf78d836f51c2c222&to=7d00712c28bbcc8a8e00d672f2f7c109fb5823c9&stat=instructions%3Au
Compare 3-2: https://llvm-compile-time-tracker.com/compare.php?from=2b7b0e178259a910355631d7d648c89052000872&to=89490929c34f45842df1588cf78d836f51c2c222&stat=instructions%3Au

Set LLVM_EXPERIMENTAL_KEY_INSTRUCTIONS=ON by default. This enables support for
Key Instructions in LLVM by default, it does not enable the feature by default.

This does have an affect on compile time, which looks to have mostly been
"paid for" (if that argument stands) by my PR llvm#143399.

From compile-time-tracker:

1. this patch
2. PR llvm#143399
3. base
```
    Commit  stage1-O3  stage1-ReleaseThinLTO  stage1-ReleaseLTO-g  stage1-O0-g  stage1-aarch64-O3  stage1-aarch64-O0-g  stage2-O3      stage2-O0-g      stage2-clang
        1.  61213M (+0.02%)  77397M (+0.01%)  89413M (+0.08%)  18865M (+0.13%)  68670M (+0.01%)  23100M (+0.12%)  53409M (+0.00%)  16550M (+0.20%)  34060797M (+0.02%)
	2.  61201M (-0.01%)  77389M (+0.00%)  89343M (-0.06%)  18841M (-0.16%)  68666M (+0.00%)  23073M (-0.16%)  53408M (-0.01%)  16518M (+0.01%)  34054978M (+0.00%)
	3.  61207M (+0.00%)  77386M (-0.01%)  89396M (-0.02%)  18871M (-0.02%)  68665M (+0.01%)  23109M (+0.02%)  53415M (-0.02%)  16516M (-0.00%)  34054300M (-0.00%)
```

Compare 2-1: https://llvm-compile-time-tracker.com/compare.php?from=89490929c34f45842df1588cf78d836f51c2c222&to=7d00712c28bbcc8a8e00d672f2f7c109fb5823c9&stat=instructions%3Au
Compare 3-2: https://llvm-compile-time-tracker.com/compare.php?from=2b7b0e178259a910355631d7d648c89052000872&to=89490929c34f45842df1588cf78d836f51c2c222&stat=instructions%3Au
@OCHyams OCHyams requested review from SLTozer, jmorse and nikic June 16, 2025 10:05
Copy link
Member

@jmorse jmorse left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See Orlandos discourse post -- I believe we've rustled up sufficient memory-savings to justify landing this, overall users will see reduced max-rss for debug-info builds between LLVM20 and LLVM21.

Will land this shortly, after a final local-test passes. This is an easy revert if it causes any trouble.

@jmorse jmorse merged commit 85a11bc into llvm:main Jul 8, 2025
8 checks passed
chapuni added a commit that referenced this pull request Jul 11, 2025
It has been introduced in #131344 and turned on at #144324
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants