about summary refs log tree commit diff
path: root/compiler/rustc_index/src/interval.rs
AgeCommit message (Collapse)AuthorLines
2025-09-07Do not use prepend to avoid quadratic behaviour.Camille Gillot-35/+9
2025-09-07Use regular MaybeLiveLocals.Camille Gillot-2/+5
2025-09-07Reimplement DestinationPropagation according to live ranges.Camille GILLOT-0/+26
2025-09-07Introduce fast insertion at extremities to IntervalSet.Camille GILLOT-0/+51
2025-02-22Greatly simplify lifetime captures in edition 2024Michael Goulet-2/+2
2025-01-19Run `clippy --fix` for `unnecessary_map_or` lintYotam Ofek-1/+1
2024-09-08IntervalSet: add comment about representationRalf Jung-1/+1
2024-08-24Avoid double-handling of attributes in `collect_tokens`.Nicholas Nethercote-1/+1
By keeping track of attributes that have been previously processed. This fixes the `macro-rules-derive-cfg.stdout` test, and is necessary for #124141 which removes nonterminals. Also shrink the `SmallVec` inline size used in `IntervalSet`. 2 gives slightly better perf than 4 now that there's an `IntervalSet` in `Parser`, which is cloned reasonably often.
2024-07-29Reformat `use` declarations.Nicholas Nethercote-2/+1
The previous commit updated `rustfmt.toml` appropriately. This commit is the outcome of running `x fmt --all` with the new formatting options.
2024-01-16Merge into larger interval setMark Rousskov-0/+6
This reduces the work done while merging rows. In at least one case (issue 50450), we have thousands of union([range], [20,000 ranges]), which previously inserted each of the 20,000 ranges one by one. Now we only insert one range into the right hand set after copying the set over.
2023-05-25Auto merge of #111925 - Manishearth:rollup-z6z6l2v, r=Manishearthbors-2/+2
Rollup of 5 pull requests Successful merges: - #111741 (Use `ObligationCtxt` in custom type ops) - #111840 (Expose more information in `get_body_with_borrowck_facts`) - #111876 (Roll compiler_builtins to 0.1.92) - #111912 (Use `Option::is_some_and` and `Result::is_ok_and` in the compiler ) - #111915 (libtest: Improve error when missing `-Zunstable-options`) r? `@ghost` `@rustbot` modify labels: rollup
2023-05-24Use `Option::is_some_and` and `Result::is_ok_and` in the compilerMaybe Waffle-2/+2
2023-05-19Leverage the interval property to precompute borrow kill points.Camille GILLOT-0/+24
2023-04-24Split `{Idx, IndexVec, IndexSlice}` into their own modulesMaybe Waffle-2/+3
2023-04-17Make `IndexVec::ensure_contains_elem` return a reference to the elementMaybe Waffle-2/+1
2023-01-05Fix `uninlined_format_args` for some compiler cratesnils-4/+1
Convert all the crates that have had their diagnostic migration completed (except save_analysis because that will be deleted soon and apfloat because of the licensing problem).
2022-06-08fix the impl error in `insert_all`SparrowLii-1/+3
2022-06-08add `check_invariants` methodSparrowLii-7/+33
2022-06-08optimize `superset` method of `IntervalSet`SparrowLii-4/+21
2022-05-10optimize `insert_range` method of `IntervalSet`SparrowLii-48/+45
2022-02-19Adopt let else in more placesest31-12/+6
2021-12-30Introduce IntervalSetMark Rousskov-0/+269
This is a compact, fast storage for variable-sized sets, typically consisting of larger ranges. It is less efficient than a bitset if ranges are both small and the domain size is small, but will still perform acceptably. With enormous domain sizes and large ranges, the interval set performs much better, as it can be much more densely packed in memory than the uncompressed bit set alternative.