| Age | Commit message (Collapse) | Author | Lines |
|
Optimize region constraints
r? `@lcnr`
|
|
This commit changes it to store a `Region` instead of a `RegionVid` for the `Var` cases:
- We avoid having to call `Region::new_var` to re-create `Region`s from
`RegionVid`s in a few places, avoiding the interning process, giving a
small perf win. (At the cost of the type allowing some invalid
combinations of values.)
- All the cases now store two `Region`s, so the commit also separates
the `ConstraintKind` (a new type) from the `sub` and `sup` arguments
in `Constraint`.
|
|
If the two regions are the same, we can skip it. This is a small perf win.
|
|
`rustc_middle::ty` cleanups
r? `@davidtwco`
|
|
The fields are public, so this doesn't need a method, normal
deconstruction and/or field access is good enough.
|
|
It's only used in `rustc_infer`.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Fast path for WF goals in new solver
Hopefully self-explanatory.
|
|
Rollup of 18 pull requests
Successful merges:
- rust-lang/rust#137843 (make RefCell unstably const)
- rust-lang/rust#140942 (const-eval: allow constants to refer to mutable/external memory, but reject such constants as patterns)
- rust-lang/rust#142549 (small iter.intersperse.fold() optimization)
- rust-lang/rust#142637 (Remove some glob imports from the type system)
- rust-lang/rust#142647 ([perf] Compute hard errors without diagnostics in impl_intersection_has_impossible_obligation)
- rust-lang/rust#142700 (Remove incorrect comments in `Weak`)
- rust-lang/rust#142927 (Add note to `find_const_ty_from_env`)
- rust-lang/rust#142967 (Fix RwLock::try_write documentation for WouldBlock condition)
- rust-lang/rust#142986 (Port `#[export_name]` to the new attribute parsing infrastructure)
- rust-lang/rust#143001 (Rename run always )
- rust-lang/rust#143010 (Update `browser-ui-test` version to `0.20.7`)
- rust-lang/rust#143015 (Add `sym::macro_pin` diagnostic item for `core::pin::pin!()`)
- rust-lang/rust#143033 (Expand const-stabilized API links in relnotes)
- rust-lang/rust#143041 (Remove cache for citool)
- rust-lang/rust#143056 (Move an ACE test out of the GCI directory)
- rust-lang/rust#143059 (Fix 1.88 relnotes)
- rust-lang/rust#143067 (Tracking issue number for `iter_macro`)
- rust-lang/rust#143073 (Fix some fixmes that were waiting for let chains)
Failed merges:
- rust-lang/rust#143020 (codegen_fn_attrs: make comment more precise)
r? `@ghost`
`@rustbot` modify labels: rollup
|
|
[perf] Compute hard errors without diagnostics in impl_intersection_has_impossible_obligation
First compute hard errors without diagnostics, then ambiguities with diagnostics since we need to know if any of them overflowed.
|
|
|
|
|
|
|
|
impl_intersection_has_impossible_obligation
|
|
|
|
|
|
This commit adds a lint to prevent the use of rustc_type_ir in random
compiler crates, except for type system internals traits, which are
explicitly allowed. Moreover, this fixes diagnostic_items() to include
the CRATE_OWNER_ID, otherwise rustc_diagnostic_item attribute is ignored
on the crate root.
|
|
`FIXME(-Znext-solver)` triage
r? `@BoxyUwU`
|
|
Make root vars more stable
Never resolve a ty/ct vid to a higher vid as its root. This should make the optimization in rust-lang/rust#141500 more "stable" when there are a lot of vars flying around.
r? `@ghost`
|
|
|
|
Treat normalizing consts like normalizing types in deeply normalize
...so that we don't end up putting a top-level normalizes-to goal in the fulfillment context, which ICEs. This basically just models the normalize-const code off of the normalize-ty code above it, which uses an alias-relate goal instead.
Fixes rust-lang/rust#140571
r? lcnr
|
|
|
|
|
|
Co-authored-by: Michael Goulet <michael@errs.io>
|
|
|
|
add additional `TypeFlags` fast paths
Some crates, e.g. `diesel`, have items with a lot of where-clauses (more than 150). In these cases checking the `TypeFlags` of the whole `param_env` can be very beneficial.
This adds `fn fold_clauses` to mirror the existing `fn visit_clauses` and then uses this in folders which fold `ParamEnv`s.
Split out from rust-lang/rust#141451, depends on rust-lang/rust#141442.
r? `@compiler-errors`
|
|
|
|
|
|
Rollup of 10 pull requests
Successful merges:
- rust-lang/rust#140898 (minor improvements on running miri)
- rust-lang/rust#141392 (Avoid obligation construction dance with query region constraints)
- rust-lang/rust#141431 (Emit dummy open drop for unsafe binder)
- rust-lang/rust#141433 (Properly analyze captures from unsafe binders)
- rust-lang/rust#141439 (Deduplicate dyn compatibility violations due to coercion)
- rust-lang/rust#141449 (further deduplicate ast visitor code)
- rust-lang/rust#141513 (interpret: add allocation parameters to `AllocBytes`)
- rust-lang/rust#141516 (speed up charsearcher for ascii chars)
- rust-lang/rust#141526 (add a dedicated section for compiler environment variables in the unstable book)
- rust-lang/rust#141550 (Fix `unused_braces` lint suggestion when encountering attributes)
r? `@ghost`
`@rustbot` modify labels: rollup
|
|
|
|
Avoid obligation construction dance with query region constraints
And some renaming...
|
|
Don't rerun goals if none of their vars have changed
r? `@ghost`
Alternative to rust-lang/rust#141488. I'm pretty sure that we don't need to re-run the goal at all if the inputs don't change... 🤔
|
|
Fold predicate fast path in canonicalizer and eager resolver
See individual commits.
r? lcnr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|