-
Notifications
You must be signed in to change notification settings - Fork 12.8k
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
Remove NtIdent
and NtLifetime
#124256
Remove NtIdent
and NtLifetime
#124256
Conversation
I'm not sure how this compares with #119412. |
@bors try @rust-timer queue |
This comment has been minimized.
This comment has been minimized.
…=<try> Remove `NtIdent` and `NtLifetime` This is one part of the bigger "remove `Nonterminal` and `TokenKind::Interpolated`" change drafted in rust-lang#114647. More details in the individual commit messages. r? `@petrochenkov`
☀️ Try build successful - checks-actions |
This comment has been minimized.
This comment has been minimized.
Finished benchmarking commit (bbd9179): comparison URL. Overall result: ❌✅ regressions and improvements - ACTION NEEDEDBenchmarking 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 @bors rollup=never Instruction countThis is a highly reliable metric that was used to determine the overall result at the top of this comment.
Max RSS (memory usage)ResultsThis 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.
CyclesResultsThis 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.
Binary sizeThis benchmark run did not return any relevant results for this metric. Bootstrap: missing data |
Well, yes. I should have said that I don't understand the status and viability of #119412.
In contrast, this PR eliminates Clearly we can't land both this PR and #119412 as written. Is #119412 viable? If so, what to do about |
#119412 is viable, I just didn't have time to address the regressions (I more or less know how to do that).
It's a continuation of #119673, that migrates
They are orthogonal, if this PR lands first then I'll remove
|
Good to hear! I think this one is mergeable now, and is a good first step towards removing |
First commit LGTM. |
I wonder why this is a perf regression for |
This span records the declaration of the metavariable in the LHS of the macro. It's used in a couple of error messages. Unfortunately, it gets in the way of the long-term goal of removing `TokenKind::Interpolated`. So this commit removes it, which degrades a couple of (obscure) error messages but makes things simpler and enables the next commit.
beced67
to
1af70e2
Compare
I have addressed the comments except where noted above. |
Still not clear about the |
Here is the main part of a Cachegrind diff for tt-muncher:
Having multiple files for each function is due to code from those files being inlined into the function. The diff doesn't show line-by-line differences. It looks like about 3/4 of the increase is due to |
1af70e2
to
e7746b7
Compare
New version is up, addressing the additional comments. |
compiler/rustc_ast/src/token.rs
Outdated
/// Lifetime identifier token. | ||
/// Do not forget about `NtLifetime` when you want to match on lifetime identifiers. | ||
/// Do not forget about `InterpolatedLIfetime` when you want to match on lifetime identifiers. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/// Do not forget about `InterpolatedLIfetime` when you want to match on lifetime identifiers. | |
/// Do not forget about `NtLifetime` when you want to match on lifetime identifiers. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good catch. I overlooked that one because the incorrect upper case I
didn't match when I was searching for places to change.
I see, it looks like the size of r=me with the comment #124256 (comment) updated. |
The extra span is now recorded in the new `TokenKind::NtIdent` and `TokenKind::NtLifetime`. These both consist of a single token, and so there's no operator precedence problems with inserting them directly into the token stream. The other way to do this would be to wrap the ident/lifetime in invisible delimiters, but there's a lot of code that assumes an interpolated ident/lifetime fits in a single token, and changing all that code to work with invisible delimiters would have been a pain. (Maybe it could be done in a follow-up.) This change might not seem like much of a win, but it's a first step toward the much bigger and long-desired removal of `Nonterminal` and `TokenKind::Interpolated`. That change is big and complex enough that it's worth doing this piece separately. (Indeed, this commit is based on part of a late commit in rust-lang#114647, a prior attempt at that big and complex change.)
e7746b7
to
95e519e
Compare
@bors r=petrochenkov |
☀️ Test successful - checks-actions |
Finished benchmarking commit (9105c57): comparison URL. Overall result: ❌✅ regressions and improvements - ACTION NEEDEDNext Steps: If you can justify the regressions found in this perf run, please indicate this with @rustbot label: +perf-regression Instruction countThis is a highly reliable metric that was used to determine the overall result at the top of this comment.
Max RSS (memory usage)ResultsThis 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.
CyclesResultsThis 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.
Binary sizeThis benchmark run did not return any relevant results for this metric. Bootstrap: 678.96s -> 679.239s (0.04%) |
As above, the regressions on the artificial @rustbot label: +perf-regression-triaged |
I think that this was actually a win on |
Update Rust toolchain from nightly-2024-05-14 to nightly-2024-05-15 without any other source changes. This is an automatically generated pull request. If any of the CI checks fail, manual intervention is required. In such a case, review the changes at https://github.com/rust-lang/rust from rust-lang@ab14f94 up to rust-lang@8387315. The log for this commit range is: rust-lang@8387315ab3 Auto merge of rust-lang#125125 - lovesegfault:opt-dist-specify-rustc-perf, r=Mark-Simulacrum rust-lang@c3c9783de2 feat(tools/opt-dist): allow local builds to specify a rustc-perf checkout rust-lang@ac385a5af6 Auto merge of rust-lang#125120 - compiler-errors:rollup-mnjybwv, r=compiler-errors rust-lang@31016d5879 Rollup merge of rust-lang#125118 - GuillaumeGomez:cleanup-run-make, r=jieyouxu rust-lang@d59f430eec Rollup merge of rust-lang#125100 - compiler-errors:faster, r=nnethercote rust-lang@712e7c37f7 Rollup merge of rust-lang#125088 - compiler-errors:uplift-alias-ty, r=lcnr rust-lang@8c64acdbdc Rollup merge of rust-lang#125080 - bvanjoi:fix-124946, r=nnethercote rust-lang@844c7e826e Rollup merge of rust-lang#125047 - Oneirical:test5, r=jieyouxu rust-lang@0458d8a53b Rollup merge of rust-lang#124844 - compiler-errors:shadow-probe, r=lcnr rust-lang@36287830a2 Rollup merge of rust-lang#119838 - joshtriplett:style-guide-binop-indent, r=compiler-errors rust-lang@ade33b02f2 only find segs chain for missing methods when no available candidates rust-lang@bdfd941f4d Auto merge of rust-lang#123816 - tgross35:f16-f128-mangling, r=michaelwoerister rust-lang@f97d915173 Use new utility functions/methods in run-make tests rust-lang@792a9bdd4b Enable v0 mangling tests and add checks for `f16`/`f128` rust-lang@809b84edba Add v0 symbol mangling for `f16` and `f128` rust-lang@31026b7fe3 Auto merge of rust-lang#125023 - morr0ne:linux-none-target, r=Nilstrieb rust-lang@68407f9049 fix typo in x86_64-unknown-linux-none docs rust-lang@c45e831d8f Auto merge of rust-lang#124228 - compiler-errors:lint-overcaptures, r=oli-obk rust-lang@58426f4a5b Auto merge of rust-lang#125026 - Oneirical:clink-tests, r=jieyouxu rust-lang@e098eb14ae Wording improvement rust-lang@e2d9c0d938 Fix missing word rust-lang@57c32a193f style-guide: When breaking binops handle multi-line first operand better rust-lang@dbd2ca6478 Use a proper probe for shadowing impl rust-lang@052de1da4f And finally add tests rust-lang@1529c661e4 Warn against redundant use<...> rust-lang@f3fb727b08 Don't suggest using use<> syntax to capture APITs rust-lang@6afe1352d9 Suggest adding use<> syntax rust-lang@554becc180 Add some commenting rust-lang@d57e57ca1f Implement initial IMPL_TRAIT_OVERCAPTURES lint rust-lang@8f97a2588c Add test to make sure suggestions are still quick rust-lang@fba5f44bd8 Auto merge of rust-lang#125098 - jhpratt:rollup-2qm4gga, r=jhpratt rust-lang@45b50d303c lto function, static_library call, rename rust-lang@9f8cdb286e Remove to_term rust-lang@1ad28a6f53 Uplift AliasTy rust-lang@812f89728a fix fmt rust-lang@2e4c90c3f7 Don't do post-method-probe error reporting steps if we're in a suggestion rust-lang@32d74f1800 Rollup merge of rust-lang#125090 - erickt:bump-fuchsia, r=tmandry rust-lang@209703af85 Rollup merge of rust-lang#125072 - Darksonn:pin-dyn-dispatch-sound, r=jhpratt rust-lang@18d9c039bb Rollup merge of rust-lang#124997 - gurry:124848-ice-should-be-sized, r=Nadrieril rust-lang@74a78af0e2 Rollup merge of rust-lang#116675 - joshlf:patch-10, r=scottmcm rust-lang@9105c57b7f Auto merge of rust-lang#124256 - nnethercote:rm-NtIdent-NtLifetime, r=petrochenkov rust-lang@34582118af Auto merge of rust-lang#125076 - compiler-errors:alias-term, r=lcnr rust-lang@95e519ecbf Remove `NtIdent` and `NtLifetime`. rust-lang@fa84018c2e Apply nits rust-lang@58ee9192e0 Migrate fuchsia docs from `pm` to `ffx` rust-lang@293b5cb1ca [ptr] Document maximum allocation size rust-lang@3bcdf3058e split out AliasTy -> AliasTerm rust-lang@b3a78c1d09 Add test for dynamic dispatch + Pin::new soundness rust-lang@9a63a42cb7 Remove a `Span` from `TokenKind::Interpolated`. rust-lang@71fd2cf5b4 fix function call and import rust-lang@a1b5ea0cc2 make tidy happy rust-lang@f2de5fb2ae rewrite issue-14500 to rmake rust-lang@a6f237ca85 docs: fix typo in platform-support docs rust-lang@923cdb35aa test: Add assembly tests for x86_64-unknown-linux-none target rust-lang@10c358f111 Make tidy happy rust-lang@e37d2989c1 remove trailing whitespace rust-lang@a2e7e79a13 Port c-link-to-rust-va-list-fn to Rust rust-lang@9cf080099d docs: Document x86_64-unknown-linux-none target rust-lang@a3ef01b1fc Add x86_64-unknown-linux-none target rust-lang@fb619ec208 FIx ICE while casting a type with error Co-authored-by: tautschnig <[email protected]>
This is one part of the bigger "remove
Nonterminal
andTokenKind::Interpolated
" change drafted in #114647. More details in the individual commit messages.r? @petrochenkov