Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upgrade elsa to the newest version. #136094

Merged
merged 1 commit into from
Feb 5, 2025
Merged

Conversation

davidv1992
Copy link
Contributor

This was locked to 1.7.1 because of an error in the elsa release process that has since been fixed. Upgrading has the advantage that the elsa code runs properly in miri, at least with tree borrows.

This was spawned from #135870 (comment)

@rustbot
Copy link
Collaborator

rustbot commented Jan 26, 2025

r? @Mark-Simulacrum

rustbot has assigned @Mark-Simulacrum.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Jan 26, 2025
@rustbot
Copy link
Collaborator

rustbot commented Jan 26, 2025

These commits modify the Cargo.lock file. Unintentional changes to Cargo.lock can be introduced when switching branches and rebasing PRs.

If this was unintentional then you should revert the changes before this PR is merged.
Otherwise, you can ignore this comment.

@Mark-Simulacrum
Copy link
Member

@bors r+

@bors
Copy link
Contributor

bors commented Jan 26, 2025

📌 Commit 3e34d4c has been approved by Mark-Simulacrum

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jan 26, 2025
jhpratt added a commit to jhpratt/rust that referenced this pull request Jan 27, 2025
…mulacrum

Upgrade elsa to the newest version.

This was locked to 1.7.1 because of an error in the elsa release process that has since been fixed. Upgrading has the advantage that the elsa code runs properly in miri, at least with tree borrows.

This was spawned from rust-lang#135870 (comment)
bors added a commit to rust-lang-ci/rust that referenced this pull request Jan 27, 2025
Rollup of 5 pull requests

Successful merges:

 - rust-lang#135807 (Implement phantom variance markers)
 - rust-lang#136091 (Add some tracing to core bootstrap logic)
 - rust-lang#136094 (Upgrade elsa to the newest version.)
 - rust-lang#136097 (rustc_ast: replace some len-checks + indexing with slice patterns etc.)
 - rust-lang#136101 (triagebot: set myself on vacation)

r? `@ghost`
`@rustbot` modify labels: rollup
@fmease
Copy link
Member

fmease commented Jan 27, 2025

2025-01-27T02:31:17.5165832Z thread 'rustc' panicked at /rust/deps/elsa-1.10.0/src/sync.rs:757:27:
2025-01-27T02:31:17.5166631Z index out of bounds: the len is 8 but the index is 8

For some reason. #136111 (comment)

@bors r-

@bors bors added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Jan 27, 2025
@davidv1992
Copy link
Contributor Author

davidv1992 commented Jan 28, 2025

Triaged the problem, there is a new implementation of lock-free-vector in elsa, which accidentally only allows 65535 elements on 32 bit systems, which isn't enough for the rust compiler.

I have submitted a PR upstream to fix this (Manishearth/elsa#81). Once a new version with that fix is released I'll update this PR

The change in implementation, combined with the fact that this seems to be used in some core datastructures of the compiler means we may also want to do performance testing before merging this to check there is no significant regression in performance from the new tradeoffs.

@davidv1992 davidv1992 marked this pull request as draft January 28, 2025 19:01
@davidv1992
Copy link
Contributor Author

Converted this to draft to indicate that it is not suitable for merging currently

@davidv1992 davidv1992 marked this pull request as ready for review January 29, 2025 20:52
@davidv1992
Copy link
Contributor Author

The underlying problem should hopefully be fixed now, at least as far as I can test it locally.

Thanks to @Manishearth and @oli-obk for quickly handling this in the elsa repository.

Note for the reviewer: There is a quite significant change in the datastructures provided by elsa with the new version. We may want to do a performance check to see this hasn't had any unwanted adverse effects.

@rustbot ready

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Jan 29, 2025
@oli-obk
Copy link
Contributor

oli-obk commented Jan 29, 2025

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Jan 29, 2025
@bors
Copy link
Contributor

bors commented Jan 29, 2025

⌛ Trying commit 1b8a792 with merge ff31f83...

bors added a commit to rust-lang-ci/rust that referenced this pull request Jan 29, 2025
Upgrade elsa to the newest version.

This was locked to 1.7.1 because of an error in the elsa release process that has since been fixed. Upgrading has the advantage that the elsa code runs properly in miri, at least with tree borrows.

This was spawned from rust-lang#135870 (comment)
@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (ff31f83): comparison URL.

Overall result: ❌✅ regressions and improvements - please read the text below

Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. While you can manually mark this PR as fit for rollup, we strongly recommend not doing so since this PR may lead to changes in compiler perf.

Next Steps: If you can justify the regressions found in this try perf run, please indicate this with @rustbot label: +perf-regression-triaged along with sufficient written justification. If you cannot justify the regressions please fix the regressions and do another perf run. If the next run shows neutral or positive results, the label will be automatically removed.

@bors rollup=never
@rustbot label: -S-waiting-on-perf +perf-regression

Instruction count

This is the most reliable metric that we have; it was used to determine the overall result at the top of this comment. However, even this metric can sometimes exhibit noise.

mean range count
Regressions ❌
(primary)
0.2% [0.1%, 0.6%] 31
Regressions ❌
(secondary)
0.4% [0.2%, 0.8%] 11
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-0.2% [-0.2%, -0.2%] 2
All ❌✅ (primary) 0.2% [0.1%, 0.6%] 31

Max RSS (memory usage)

Results (primary 1.9%, secondary 3.6%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
2.8% [2.0%, 7.0%] 12
Regressions ❌
(secondary)
4.1% [2.0%, 5.9%] 9
Improvements ✅
(primary)
-1.1% [-1.8%, -0.7%] 4
Improvements ✅
(secondary)
-1.3% [-1.3%, -1.3%] 1
All ❌✅ (primary) 1.9% [-1.8%, 7.0%] 16

Cycles

Results (secondary -3.4%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-3.4% [-3.4%, -3.4%] 1
All ❌✅ (primary) - - 0

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 776.896s -> 775.156s (-0.22%)
Artifact size: 328.47 MiB -> 328.46 MiB (-0.00%)

@rustbot rustbot added perf-regression Performance regression. and removed S-waiting-on-perf Status: Waiting on a perf run to be completed. labels Jan 30, 2025
@davidv1992
Copy link
Contributor Author

Having looked through the performance results, I think in this case, the top line result is somewhat misleading. Yes, this results in more instructions needing execution, however the underlying change of the crate also eliminates a lock on reading from some of its datastructures, meaning that this is likely not the best metric to focus on.

Looking at other metrics such as cycles, wall time and cpu time, it seems that this is overall an improvement, though I haven't done the math to confirm that. Judging from those numbers it seems to me that for larger compile jobs it improves things a bit, and for smaller ones it degrades them a bit, which is not unexpected given that it eliminates lock contention at the cost of some instructions. In particular, the largest negative swings in runtime percentage wise exclusively happen with test cases already running significantly faster than .1s, so I don't think we need to be worried about those.

@rustbot label: +perf-regression-triaged

@rustbot rustbot added the perf-regression-triaged The performance regression has been triaged. label Feb 1, 2025
@oli-obk
Copy link
Contributor

oli-obk commented Feb 1, 2025

We could make the elsa data structures generic over the number of bins, growing each subsequent bin faster to make up for the lower number of bins. Then we can perf the bin size until we find a sweet spot for the compiler. Similarly we can be generic over the bin size of the first bin, because rustc will frequently use these data structures to store more than 3 elements. having a starting point at a multiple of that seems totally fine

@davidv1992
Copy link
Contributor Author

I'd suggest that once we got this merged. Then at least the dependency follows updates again.

@oli-obk
Copy link
Contributor

oli-obk commented Feb 1, 2025

@bors r+

@bors
Copy link
Contributor

bors commented Feb 1, 2025

📌 Commit 1b8a792 has been approved by oli-obk

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Feb 1, 2025
@bors
Copy link
Contributor

bors commented Feb 1, 2025

⌛ Testing commit 1b8a792 with merge 7bfafc7...

bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 1, 2025
Upgrade elsa to the newest version.

This was locked to 1.7.1 because of an error in the elsa release process that has since been fixed. Upgrading has the advantage that the elsa code runs properly in miri, at least with tree borrows.

This was spawned from rust-lang#135870 (comment)
@rust-log-analyzer
Copy link
Collaborator

The job dist-apple-various failed! Check out the build log: (web) (plain)

Click to see the possible cause of the failure (guessed by this bot)
[1577/3409] Building NVPTXGenAsmWriter.inc...
[1578/3409] Building NVPTXGenRegisterInfo.inc...
[1579/3409] Building NVPTXGenDAGISel.inc...
[1580/3409] Building NVPTXGenInstrInfo.inc...
FAILED: lib/Target/NVPTX/NVPTXGenInstrInfo.inc /Users/runner/work/rust/rust/build/x86_64-apple-darwin/llvm/build/lib/Target/NVPTX/NVPTXGenInstrInfo.inc 
cd /Users/runner/work/rust/rust/build/x86_64-apple-darwin/llvm/build && /Users/runner/work/rust/rust/build/x86_64-apple-darwin/llvm/build/bin/llvm-tblgen -gen-instr-info -I /Users/runner/work/rust/rust/src/llvm-project/llvm/lib/Target/NVPTX -I/Users/runner/work/rust/rust/build/x86_64-apple-darwin/llvm/build/include -I/Users/runner/work/rust/rust/src/llvm-project/llvm/include -I /Users/runner/work/rust/rust/src/llvm-project/llvm/lib/Target -no-warn-on-unused-template-args /Users/runner/work/rust/rust/src/llvm-project/llvm/lib/Target/NVPTX/NVPTX.td --write-if-changed -o lib/Target/NVPTX/NVPTXGenInstrInfo.inc -d lib/Target/NVPTX/NVPTXGenInstrInfo.inc.d
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /Users/runner/work/rust/rust/build/x86_64-apple-darwin/llvm/build/bin/llvm-tblgen -gen-instr-info -I /Users/runner/work/rust/rust/src/llvm-project/llvm/lib/Target/NVPTX -I/Users/runner/work/rust/rust/build/x86_64-apple-darwin/llvm/build/include -I/Users/runner/work/rust/rust/src/llvm-project/llvm/include -I /Users/runner/work/rust/rust/src/llvm-project/llvm/lib/Target -no-warn-on-unused-template-args /Users/runner/work/rust/rust/src/llvm-project/llvm/lib/Target/NVPTX/NVPTX.td --write-if-changed -o lib/Target/NVPTX/NVPTXGenInstrInfo.inc -d lib/Target/NVPTX/NVPTXGenInstrInfo.inc.d
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0  llvm-tblgen              0x000000010a5e15b7 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 39
1  llvm-tblgen              0x000000010a5df7a8 llvm::sys::RunSignalHandlers() + 248
2  llvm-tblgen              0x000000010a5e1c50 SignalHandler(int) + 272
3  libsystem_platform.dylib 0x00007ff8154115ed _sigtramp + 29
4  libsystem_platform.dylib 0x0003078d0003077a _sigtramp + 712023616909738
5  libsystem_c.dylib        0x00007ff81530ab45 abort + 123
6  libsystem_malloc.dylib   0x00007ff815221752 malloc_vreport + 888
7  libsystem_malloc.dylib   0x00007ff815224b31 malloc_report + 151
8  llvm-tblgen              0x000000010a39c2d9 llvm::Record::~Record() + 153
9  llvm-tblgen              0x000000010a603d6f std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, std::__1::less<void>, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>>>::destroy(std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, void*>*) + 63
10 llvm-tblgen              0x000000010a603d56 std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, std::__1::less<void>, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>>>::destroy(std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, void*>*) + 38
11 llvm-tblgen              0x000000010a603d4a std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, std::__1::less<void>, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>>>::destroy(std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, void*>*) + 26
12 llvm-tblgen              0x000000010a603d4a std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, std::__1::less<void>, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>>>::destroy(std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, void*>*) + 26
13 llvm-tblgen              0x000000010a603d56 std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, std::__1::less<void>, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>>>::destroy(std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, void*>*) + 38
14 llvm-tblgen              0x000000010a603d4a std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, std::__1::less<void>, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>>>::destroy(std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, void*>*) + 26
15 llvm-tblgen              0x000000010a603d4a std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, std::__1::less<void>, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>>>::destroy(std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, void*>*) + 26
16 llvm-tblgen              0x000000010a603d56 std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, std::__1::less<void>, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>>>::destroy(std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, void*>*) + 38
17 llvm-tblgen              0x000000010a603d4a std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, std::__1::less<void>, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>>>::destroy(std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, void*>*) + 26
18 llvm-tblgen              0x000000010a603d56 std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, std::__1::less<void>, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>>>::destroy(std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, void*>*) + 38
19 llvm-tblgen              0x000000010a603d4a std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, std::__1::less<void>, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>>>::destroy(std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, void*>*) + 26
20 llvm-tblgen              0x000000010a603d56 std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, std::__1::less<void>, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>>>::destroy(std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, void*>*) + 38
21 llvm-tblgen              0x000000010a603d4a std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, std::__1::less<void>, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>>>::destroy(std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::unique_ptr<llvm::Record, std::__1::default_delete<llvm::Record>>>, void*>*) + 26
22 llvm-tblgen              0x000000010a5fca5d llvm::RecordKeeper::~RecordKeeper() + 189
23 llvm-tblgen              0x000000010a5e849a llvm::TableGenMain(char const*, std::__1::function<bool (llvm::raw_ostream&, llvm::RecordKeeper&)>) + 3754
24 llvm-tblgen              0x000000010a582af4 main + 148
25 dyld                     0x00007ff815089418 start + 1896
/bin/sh: line 1: 47849 Abort trap: 6           /Users/runner/work/rust/rust/build/x86_64-apple-darwin/llvm/build/bin/llvm-tblgen -gen-instr-info -I /Users/runner/work/rust/rust/src/llvm-project/llvm/lib/Target/NVPTX -I/Users/runner/work/rust/rust/build/x86_64-apple-darwin/llvm/build/include -I/Users/runner/work/rust/rust/src/llvm-project/llvm/include -I /Users/runner/work/rust/rust/src/llvm-project/llvm/lib/Target -no-warn-on-unused-template-args /Users/runner/work/rust/rust/src/llvm-project/llvm/lib/Target/NVPTX/NVPTX.td --write-if-changed -o lib/Target/NVPTX/NVPTXGenInstrInfo.inc -d lib/Target/NVPTX/NVPTXGenInstrInfo.inc.d
[1582/3409] Building PPCGenAsmMatcher.inc...
[1583/3409] Building PPCGenAsmWriter.inc...
ninja: build stopped: subcommand failed.

@bors
Copy link
Contributor

bors commented Feb 1, 2025

💔 Test failed - checks-actions

@bors bors added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Feb 1, 2025
@davidv1992
Copy link
Contributor Author

davidv1992 commented Feb 3, 2025

Hmm, there seems to be something going wrong with llvm. As far as I can tell this PR shouldn't affect llvm in any way. Not sure what happened here.

@bjorn3
Copy link
Member

bjorn3 commented Feb 5, 2025

Likely spurious

@bors retry llvm-tblgen crashed while building LLVM

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Feb 5, 2025
@bors
Copy link
Contributor

bors commented Feb 5, 2025

⌛ Testing commit 1b8a792 with merge 820bfff...

@jieyouxu
Copy link
Member

jieyouxu commented Feb 5, 2025

Hmm, there seems to be something going wrong with llvm. As far as I can tell this PR shouldn't affect llvm in any way. Not sure what happened here.

That particular one is known as #109624, also tracked in #133959 :P

@bors
Copy link
Contributor

bors commented Feb 5, 2025

☀️ Test successful - checks-actions
Approved by: oli-obk
Pushing 820bfff to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Feb 5, 2025
@bors bors merged commit 820bfff into rust-lang:master Feb 5, 2025
7 checks passed
@rustbot rustbot added this to the 1.86.0 milestone Feb 5, 2025
@rust-timer
Copy link
Collaborator

Finished benchmarking commit (820bfff): comparison URL.

Overall result: ❌ regressions - please read the text below

Our benchmarks found a performance regression caused by this PR.
This might be an actual regression, but it can also be just noise.

Next Steps:

  • If the regression was expected or you think it can be justified,
    please write a comment with sufficient written justification, and add
    @rustbot label: +perf-regression-triaged to it, to mark the regression as triaged.
  • If you think that you know of a way to resolve the regression, try to create
    a new PR with a fix for the regression.
  • If you do not understand the regression or you think that it is just noise,
    you can ask the @rust-lang/wg-compiler-performance working group for help (members of this group
    were already notified of this PR).

@rustbot label: +perf-regression
cc @rust-lang/wg-compiler-performance

Instruction count

This is the most reliable metric that we have; it was used to determine the overall result at the top of this comment. However, even this metric can sometimes exhibit noise.

mean range count
Regressions ❌
(primary)
0.2% [0.1%, 0.4%] 35
Regressions ❌
(secondary)
0.3% [0.0%, 0.6%] 13
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-0.3% [-0.3%, -0.3%] 1
All ❌✅ (primary) 0.2% [0.1%, 0.4%] 35

Max RSS (memory usage)

Results (secondary 2.7%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
4.4% [2.2%, 6.2%] 9
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-2.3% [-5.9%, -0.5%] 3
All ❌✅ (primary) - - 0

Cycles

This benchmark run did not return any relevant results for this metric.

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 779.293s -> 778.541s (-0.10%)
Artifact size: 328.78 MiB -> 328.82 MiB (0.01%)

compiler-errors pushed a commit to compiler-errors/rust that referenced this pull request Feb 5, 2025
Upgrade elsa to the newest version.

This was locked to 1.7.1 because of an error in the elsa release process that has since been fixed. Upgrading has the advantage that the elsa code runs properly in miri, at least with tree borrows.

This was spawned from rust-lang#135870 (comment)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
merged-by-bors This PR was explicitly merged by bors. perf-regression Performance regression. perf-regression-triaged The performance regression has been triaged. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants