-
Notifications
You must be signed in to change notification settings - Fork 13.5k
Stop backends from needing to support nullary intrinsics #142839
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
base: master
Are you sure you want to change the base?
Conversation
Some changes occurred to the intrinsics. Make sure the CTFE / Miri interpreter cc @rust-lang/miri, @RalfJung, @oli-obk, @lcnr Some changes occurred to the CTFE / Miri interpreter cc @rust-lang/miri Some changes occurred in compiler/rustc_codegen_cranelift cc @bjorn3 Some changes occurred to the CTFE machinery Some changes occurred in compiler/rustc_codegen_ssa |
@bors try @rust-timer queue |
This comment has been minimized.
This comment has been minimized.
Stop backends from needing to support nullary intrinsics And then remove our infrastructure special casing them. Further improvements can now be done to them by avoiding the intermediate ConstValue step, but let's leave that to follow up work r? `@ghost` wanna see perf first
This comment has been minimized.
This comment has been minimized.
|
||
match intrinsic_name { | ||
sym::type_name => { |
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.
nit: I see this is a code-move & fixup to work in here, but is it worth sorting these arms into the rest of the match? though I guess the other arms are also not sorted simply... it was mostly that needs_drop
is between type_id
& type_name
that caught my eye hehe
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.
yea, could do that, good point. didn't want to do it in the first commit to kinda make the diff line up
☀️ Try build successful - checks-actions |
This comment has been minimized.
This comment has been minimized.
Finished benchmarking commit (a5e9784): comparison URL. Overall result: ❌✅ regressions and improvements - please read the text belowBenchmarking this pull request means it may be perf-sensitive – we'll automatically label it not fit for rolling up. You can override this, but we strongly advise not to, due to possible changes in compiler perf. Next Steps: If you can justify the regressions found in this try perf run, please do so in sufficient writing along with @bors rollup=never Instruction countOur most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.
Max RSS (memory usage)Results (primary 3.7%)A less reliable metric. May be of interest, but not used to determine the overall result above.
CyclesResults (primary 2.7%, secondary -6.5%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Binary sizeResults (primary 0.4%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Bootstrap: 691.091s -> 687.91s (-0.46%) |
a44843e
to
1dd711a
Compare
This comment has been minimized.
This comment has been minimized.
1dd711a
to
93129de
Compare
This comment has been minimized.
This comment has been minimized.
93129de
to
5952269
Compare
Some changes occurred in compiler/rustc_codegen_gcc |
5952269
to
2082fe8
Compare
This comment has been minimized.
This comment has been minimized.
2082fe8
to
cdb3a21
Compare
This comment has been minimized.
This comment has been minimized.
cdb3a21
to
7c1059f
Compare
This comment has been minimized.
This comment has been minimized.
In my view, the goal of this PR is to establish a new invariant -- nullary intrinsics must be invoked in const blocks only, codegen should never see them. So before this PR there wasn't any invariant to worry about. I like the plan, it's a lightweight version of "nullary intrinsics are consts, really" without having to figure out how to shove that into a |
We already have nullary intrinsics that can't be a constant:
Tho technically |
Ah... well I guess then we don't actually have a new invariant here, and we'd have to rely on comments to ensure this will be consistent. I am quite confident this won't be enough, but OTOH if a nullary intrinsic creeps back in we can always fix that again later. |
b2442f2
to
856b771
Compare
This comment has been minimized.
This comment has been minimized.
856b771
to
f98b42e
Compare
f98b42e
to
11a98df
Compare
This comment has been minimized.
This comment has been minimized.
11a98df
to
c57d350
Compare
This comment has been minimized.
This comment has been minimized.
c57d350
to
c6d611b
Compare
…itly deciding not to
c6d611b
to
b144fa6
Compare
@rustbot author |
Reminder, once the PR becomes ready for a review, use |
This comment has been minimized.
This comment has been minimized.
The Miri subtree was changed cc @rust-lang/miri |
@rustbot ready |
The core parts LGTM, but I have no idea how to review the stable MIR test changes. |
☔ The latest upstream changes (presumably #143091) made this pull request unmergeable. Please resolve the merge conflicts. |
The test changes make sense to me. Thanks for checking! |
Thanks! r=RalfJung,celinval after a rebase. |
And then remove our infrastructure special casing them. Further improvements can now be done to them by avoiding the intermediate ConstValue step, but let's leave that to follow up work
r? @RalfJung