bors
c3a1c023c0
Auto merge of #104731 - compiler-errors:early-binder-iter-size-hint, r=cjgillot
...
Add size hints to early binder iterator adapters
probably doesn't do anything, but definitely doesn't hurt
2022-11-26 14:59:30 +00:00
bors
579c993b35
Auto merge of #104935 - matthiaskrgr:rollup-nuca86l, r=matthiaskrgr
...
Rollup of 6 pull requests
Successful merges:
- #104121 (Refine `instruction_set` MIR inline rules)
- #104675 (Unsupported query error now specifies if its unsupported for local or external crate)
- #104839 (improve array_from_fn documenation)
- #104880 ([llvm-wrapper] adapt for LLVM API change)
- #104899 (rustdoc: remove no-op CSS `#help dt { display: block }`)
- #104906 (Remove AscribeUserTypeCx)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
2022-11-26 12:11:32 +00:00
Matthias Krüger
1fe18a5dad
Rollup merge of #104906 - spastorino:remove-ascribeusertypecx, r=compiler-errors
...
Remove AscribeUserTypeCx
r? ``@compiler-errors``
This basically inlines `AscribeUserTypeCx::relate_mir_and_user_ty` into `type_op_ascribe_user_type_with_span` which is the only place where it's used and makes direct use of `ObligationCtxt` API.
2022-11-26 10:39:12 +01:00
Matthias Krüger
0f28e403d4
Rollup merge of #104880 - krasimirgg:llvm-16-ctx, r=cuviper
...
[llvm-wrapper] adapt for LLVM API change
Adapt for the LLVM API changes from 721f975d35
.
Found via our experimental rust + llvm @ HEAD bot: https://buildkite.com/llvm-project/rust-llvm-integrate-prototype/builds/15203#0184ae73-5169-4b9b-92f4-d4e6e9b86ad9/194-531
2022-11-26 10:39:11 +01:00
Matthias Krüger
42010a23f5
Rollup merge of #104675 - SarthakSingh31:issue-101666, r=jyn514
...
Unsupported query error now specifies if its unsupported for local or external crate
Fixes #101666 .
I had to move `keys.rs` from `rustc_query_impl` to `rustc_middle`. I don't know if that is problematic. I couldn't think of any other way to get the needed information inside `rustc_middle`.
r? ```@jyn514```
2022-11-26 10:39:10 +01:00
Matthias Krüger
4733312e09
Rollup merge of #104121 - Lokathor:mir-opt-when-instruction-set-missing-on-callee, r=tmiasko
...
Refine `instruction_set` MIR inline rules
Previously an exact match of the `instruction_set` attribute was required for an MIR inline to be considered. This change checks for an exact match *only* if the callee sets an `instruction_set` in the first place. When the callee does not declare an instruction set then it is considered to be platform agnostic code and it's allowed to be inline'd into the caller.
cc ``@oli-obk``
[Edit] Zulip Context: https://rust-lang.zulipchat.com/#narrow/stream/189540-t-compiler.2Fwg-mir-opt/topic/What.20exactly.20does.20the.20MIR.20optimizer.20do.3F
2022-11-26 10:39:10 +01:00
bors
8841bee954
Auto merge of #103556 - clubby789:specialize-option-partial-eq, r=scottmcm
...
Manually implement PartialEq for Option<T> and specialize non-nullable types
This PR manually implements `PartialEq` and `StructuralPartialEq` for `Option`, which seems to produce slightly better codegen than the automatically derived implementation.
It also allows specializing on the `core::num::NonZero*` and `core::ptr::NonNull` types, taking advantage of the niche optimization by transmuting the `Option<T>` to `T` to be compared directly, which can be done in just two instructions.
A comparison of the original, new and specialized code generation is available [here](https://godbolt.org/z/dE4jxdYsa ).
2022-11-26 08:56:20 +00:00
bors
f8a2e491eb
Auto merge of #104730 - petrochenkov:modchild5, r=cjgillot
...
rustc_metadata: Switch module children decoding to an iterator
Previously https://github.com/rust-lang/rust/pull/103578 , https://github.com/rust-lang/rust/pull/103524 and previous PRs simplified it as much as possible.
A couple of cleanup commits is also added.
r? `@cjgillot`
2022-11-26 05:41:34 +00:00
bors
aff003becd
Auto merge of #99798 - JulianKnodt:ac1, r=BoxyUwU
...
Add `ConstKind::Expr`
Starting to implement `ty::ConstKind::Abstract`, most of the match cases are stubbed out, some I was unsure what to add, others I didn't want to add until a more complete implementation was ready.
r? `@lcnr`
2022-11-25 22:56:59 +00:00
Lokathor
ea47943212
Refine instruction_set inline rules
...
Previously an exact match of the `instruction_set` attribute was required for an MIR inline to be considered. This change checks for an exact match *only* if the callee sets an `instruction_set` in the first place. When the callee does not declare an instruction set then it is considered to be platform agnostic code and it's allowed to be inline'd into the caller.
2022-11-25 15:19:16 -07:00
bors
8681d4cffc
Auto merge of #104902 - matthiaskrgr:rollup-oo27a4u, r=matthiaskrgr
...
Rollup of 8 pull requests
Successful merges:
- #104716 (move 2 candidates into builtin candidate)
- #104760 (Clarify `SyntaxExtensionKind::LegacyDerive`.)
- #104797 (rustc_codegen_ssa: write `.dwp` in a streaming fashion)
- #104835 (Use infcx.partially_normalize_associated_types_in)
- #104853 (Fix typo in miri sysroot)
- #104879 (jsondoclint: Recognise Typedef as valid kind for Type::ResolvedPath)
- #104887 (rustbuild: Don't build doc::SharedAssets when building JSON docs.)
- #104896 (rustdoc: fix broken tooltip CSS)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
2022-11-25 19:09:30 +00:00
Santiago Pastorino
3c9b30e658
Define all clauses as dummy_with_span as the usages are all equivalent
2022-11-25 16:00:08 -03:00
Santiago Pastorino
aaa1db63ce
Remove AscribeUserTypeCx
2022-11-25 15:25:00 -03:00
Matthias Krüger
7fac5048c4
Rollup merge of #104835 - spastorino:use-partially_normalize_associated_types_in, r=lcnr
...
Use infcx.partially_normalize_associated_types_in
r? ``@lcnr``
2022-11-25 18:35:41 +01:00
Matthias Krüger
aec60c6b7c
Rollup merge of #104797 - weihanglo:stream-write-dwp, r=jackh726
...
rustc_codegen_ssa: write `.dwp` in a streaming fashion
When writing a `.dwp` file, rustc writes to a Vec first then to a BufWriter-wrapped file. It seems very likely that we can write in a streaming fashion to avoid double buffering in an intermediate Vec.
On my Linux machine, `.dwp` from the latest rust-lang/cargo is 113MiB. It may worth a stream writer, though I didn't do any benchmark 🙇🏾♂️ .
2022-11-25 18:35:40 +01:00
Matthias Krüger
8f3f4980b4
Rollup merge of #104760 - nnethercote:rm-LegacyDerive, r=petrochenkov
...
Clarify `SyntaxExtensionKind::LegacyDerive`.
It's always treated the same as `SyntaxExtensionKind::Derive`.
2022-11-25 18:35:39 +01:00
Matthias Krüger
9c7dc3e30b
Rollup merge of #104716 - lcnr:selection-candidate, r=jackh726
...
move 2 candidates into builtin candidate
having separate candidates for these isn't too helpful i think
r? types
2022-11-25 18:35:39 +01:00
bors
051cab2b84
Auto merge of #104846 - spastorino:santa-clauses-make-goals-early-christmas- 🎄 , r=oli-obk
...
Branch Clause from Predicate
r? `@oli-obk`
This is part of what's proposed in https://github.com/rust-lang/compiler-team/issues/531
2022-11-25 15:59:31 +00:00
Krasimir Georgiev
e5ccd27e67
[llvm-wrapper] adapt for LLVM API change
...
Adapt for the LLVM API changes from
721f975d35 (diff-5a347903b8412ed1b1b1948c3fce47f9a6ff05dc70bfaeedb6d06b622e399d91)
.
2022-11-25 11:29:00 +00:00
lcnr
84e97907c6
add comment
2022-11-25 11:59:08 +01:00
lcnr
31431ccda9
move 2 candidates into builtin candidate
2022-11-25 11:59:08 +01:00
Matthias Krüger
34f1de8395
Rollup merge of #104841 - compiler-errors:fishy-bound-var, r=jackh726
...
Assert that we don't capture escaping bound vars in `Fn` trait selection
Fixes #104825
2022-11-25 10:44:39 +01:00
kadmin
d0209db157
Fix mk_const_list
2022-11-25 09:35:37 +00:00
Boxy
677bdcb8a9
only emit "enable gce" error if it would fix compile error
2022-11-25 09:28:44 +00:00
Boxy
2ac5d91d63
Make expand_abstract_consts
infallible
2022-11-25 09:28:44 +00:00
Boxy
4085e94ece
super_relate_consts
do not spurriously fail on assoc consts
2022-11-25 09:28:44 +00:00
Boxy
430f7d16e6
add FIXME's
2022-11-25 09:28:44 +00:00
Boxy
95e1a39c04
correctly intern List<Const<'tcx>>
2022-11-25 09:28:44 +00:00
Boxy
5a496aab03
dont skip const evalautable of non unevaluateds
2022-11-25 09:28:44 +00:00
Boxy
e58b932daf
add FIXME for things that I couldn't find ways to trigger
2022-11-25 09:28:44 +00:00
Boxy
4833ce8673
fmt
2022-11-25 09:28:43 +00:00
Boxy
f59b91e8a0
reduce duplicated argument logic
2022-11-25 09:28:43 +00:00
Boxy
fd271ffe28
also handle it in evaluate
2022-11-25 09:28:43 +00:00
Boxy
0ae3c5c609
handle assoc consts in fulfill ConstEquate
2022-11-25 09:28:43 +00:00
Boxy
d75cd5c051
fmt
2022-11-25 09:28:43 +00:00
Boxy
8c729bd0f3
handle nested obligations in satisfied_from_param_env
2022-11-25 09:28:43 +00:00
kadmin
5bb1a9febc
Add expand_abstract_const
...
Adds the ability to directly expand a const to an expr without having to deal with intermediate
steps.
2022-11-25 09:28:43 +00:00
kadmin
f9750c1554
Add empty ConstKind::Abstract
...
Initial pass at expr/abstract const/s
Address comments
Switch to using a list instead of &[ty::Const], rm `AbstractConst`
Remove try_unify_abstract_consts
Update comments
Add edits
Recurse more
More edits
Prevent equating associated consts
Move failing test to ui
Changes this test from incremental to ui, and mark it as failing and a known bug.
Does not cause the compiler to ICE, so should be ok.
2022-11-25 09:28:43 +00:00
bors
41e0363055
Auto merge of #104602 - petrochenkov:effvisperf5, r=oli-obk
...
privacy: Fix more (potential) issues with effective visibilities
Continuation of https://github.com/rust-lang/rust/pull/103965 .
See individual commits for more detailed description of the changes.
The shortcuts removed in https://github.com/rust-lang/rust/pull/104602/commits/4eb63f618e601efee657d24cd4e8833fb03fac4c and https://github.com/rust-lang/rust/pull/104602/commits/c7c7d1672739e38c8d39ae861b284486aefd5b48 could actually be correct (or correct after some tweaks), but they used global reasoning like "we can skip this update because if the code compiles then some other update should do the same thing eventually".
I have some expertise in this area, but I still have doubt whether such global reasoning was correct or not, especially in presence of all possible exotic cases with imports.
After this PR all table changes should be "locally correct" after every update, even if it may be overcautious.
If similar optimizations are introduced again they will need detailed comments explaining why it's legal to do what they do and providing proofs.
Fixes https://github.com/rust-lang/rust/issues/104249 .
Fixes https://github.com/rust-lang/rust/issues/104539 .
2022-11-25 06:14:42 +00:00
Santiago Pastorino
974e2837bb
Introduce PredicateKind::Clause
2022-11-25 00:04:54 -03:00
Oli Scherer
42cc8e8f4e
Simplify a bunch of trait ref obligation creations
2022-11-25 00:04:54 -03:00
Oli Scherer
08afabddac
get rid of to_poly_trait_predicate
2022-11-25 00:04:52 -03:00
bors
65a6e22668
Auto merge of #104845 - matthiaskrgr:rollup-tckj956, r=matthiaskrgr
...
Rollup of 11 pull requests
Successful merges:
- #104514 (Use node_ty_opt to avoid ICE in visit_ty)
- #104704 (Allow power10-vector feature in PowerPC)
- #104747 (resolve: Don't use constructor def ids in the map for field names)
- #104773 (OpaqueCast projections are always overlapping, they can't possibly be disjoint)
- #104774 (Document split{_ascii,}_whitespace() for empty strings)
- #104780 (make `error_reported` check for delayed bugs)
- #104782 (Bump the const eval step limit)
- #104792 (rustdoc: simplify `.search-results-title` CSS)
- #104796 (lint: do not warn unused parens around higher-ranked function pointers)
- #104820 (Remove normalize_projection_type)
- #104822 (with_query_mode -> new)
Failed merges:
- #104716 (move 2 candidates into builtin candidate)
- #104841 (Assert that we don't capture escaping bound vars in `Fn` trait selection)
r? `@ghost`
`@rustbot` modify labels: rollup
2022-11-24 23:45:32 +00:00
Nicholas Nethercote
2c5d3705ec
Clarify SyntaxExtensionKind::LegacyDerive
.
2022-11-25 09:13:27 +11:00
Michael Goulet
d945967779
Remove comment, simplify since we asserted fn ptr Self type has no bound vars
2022-11-24 21:50:04 +00:00
Michael Goulet
c7330c9fe8
Also check that fn pointer candidates don't have escaping bound vars
2022-11-24 21:50:04 +00:00
Michael Goulet
8927135274
Assert that we don't capture escaping bound vars in Fn trait selection
2022-11-24 21:50:04 +00:00
Matthias Krüger
1048a85dbe
Rollup merge of #104822 - spastorino:selctx-new-instead-of-with_query_mode, r=lcnr
...
with_query_mode -> new
r? ```@lcnr```
2022-11-24 21:34:57 +01:00
Matthias Krüger
73f01ffd46
Rollup merge of #104820 - spastorino:remove-normalize_projection_type, r=jackh726
...
Remove normalize_projection_type
r? ``@lcnr``
2022-11-24 21:34:56 +01:00
Matthias Krüger
83d1aab9ff
Rollup merge of #104796 - notriddle:notriddle/unused-issue-104397, r=oli-obk
...
lint: do not warn unused parens around higher-ranked function pointers
Fixes #104397
2022-11-24 21:34:56 +01:00