Skip to content
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

Rollup of 5 pull requests #114786

Merged
merged 13 commits into from
Aug 13, 2023
Merged

Rollup of 5 pull requests #114786

merged 13 commits into from
Aug 13, 2023

Commits on Jul 25, 2023

  1. Allow using external builds of the compiler-rt profile lib

    This changes the bootstrap config `target.*.profiler` from a plain bool
    to also allow a string, which will be used as a path to the pre-built
    profiling runtime for that target. Then `profiler_builtins/build.rs`
    reads that in a `LLVM_PROFILER_RT_LIB` environment variable.
    cuviper committed Jul 25, 2023
    Configuration menu
    Copy the full SHA
    d0b58f4 View commit details
    Browse the repository at this point in the history

Commits on Jul 26, 2023

  1. Fix spacing in target.*.profiler docs

    Co-authored-by: Joe ST <joe@fbstj.net>
    cuviper and fbstj authored Jul 26, 2023
    Configuration menu
    Copy the full SHA
    6e05f59 View commit details
    Browse the repository at this point in the history

Commits on Aug 8, 2023

  1. Configuration menu
    Copy the full SHA
    524572d View commit details
    Browse the repository at this point in the history

Commits on Aug 10, 2023

  1. Add Iterator::map_windows

    This is inherited from the old PR.
    
    This method returns an iterator over mapped windows of the starting
    iterator. Adding the more straight-forward `Iterator::windows` is not
    easily possible right now as the items are stored in the iterator type,
    meaning the `next` call would return references to `self`. This is not
    allowed by the current `Iterator` trait design. This might change once
    GATs have landed.
    
    The idea has been brought up by @m-ou-se here:
    https://rust-lang.zulipchat.com/#narrow/stream/219381-t-libs/topic/Iterator.3A.3A.7Bpairwise.2C.20windows.7D/near/224587771
    
    Co-authored-by: Lukas Kalbertodt <lukas.kalbertodt@gmail.com>
    frank-king and LukasKalbertodt committed Aug 10, 2023
    Configuration menu
    Copy the full SHA
    97c953f View commit details
    Browse the repository at this point in the history

Commits on Aug 13, 2023

  1. Rename helper struct BcbCounters to MakeBcbCounters

    This avoids confusion with data structures that actually hold BCB counter
    information.
    Zalathar committed Aug 13, 2023
    Configuration menu
    Copy the full SHA
    c74db79 View commit details
    Browse the repository at this point in the history
  2. Accumulate intermediate expressions into CoverageCounters

    This avoids the need to pass around a separate vector to accumulate into, and
    avoids the need to create a fake empty vector when failure occurs.
    Zalathar committed Aug 13, 2023
    Configuration menu
    Copy the full SHA
    5302c9d View commit details
    Browse the repository at this point in the history
  3. Store BCB counters externally, not directly in the BCB graph

    Storing coverage counter information in `CoverageCounters` has a few advantages
    over storing it directly inside BCB graph nodes:
    
    - The graph doesn't need to be mutable when making the counters, making it
    easier to see that the graph itself is not modified during this step.
    
    - All of the counter data is clearly visible in one place.
    
    - It becomes possible to use a representation that doesn't correspond 1:1 to
    graph nodes, e.g. storing all the edge counters in a single hashmap instead of
    several.
    Zalathar committed Aug 13, 2023
    Configuration menu
    Copy the full SHA
    5ca30c4 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    245d351 View commit details
    Browse the repository at this point in the history
  5. Rollup merge of rust-lang#94667 - frank-king:feature/iter_map_windows…

    …, r=Mark-Simulacrum
    
    Add `Iterator::map_windows`
    
    Tracking issue:  rust-lang#87155.
    
    This is inherited from the old PR  rust-lang#82413.
    
    Unlike rust-lang#82413, this PR implements the `MapWindows` to be lazy: only when pulling from the outer iterator, `.next()` of the inner iterator will be called.
    
    ## Implementaion Steps
    - [x] Implement `MapWindows` to keep the iterators' [*Laziness*](https://doc.rust-lang.org/std/iter/index.html#laziness) contract.
    - [x] Fix the known bug of memory access error.
    - [ ] Full specialization of iterator-related traits for `MapWindows`.
        - [x] `Iterator::size_hint`,
        - [x] ~`Iterator::count`~,
        - [x] `ExactSizeIterator` (when `I: ExactSizeIterator`),
        - [x] ~`TrustedLen` (when `I: TrustedLen`)~,
        - [x] `FusedIterator`,
        - [x] ~`Iterator::advance_by`~,
        - [x] ~`Iterator::nth`~,
        - [ ] ...
    - [ ] More tests and docs.
    
    ## Unresolved Questions:
    - [ ] Is there any more iterator-related traits should be specialized?
    - [ ] Is the double-space buffer worth?
    - [ ] Should there be `rmap_windows` or something else?
    - [ ] Taking GAT for consideration, should the mapper function be `FnMut(&[I::Item; N]) -> R` or something like `FnMut(ArrayView<'_, I::Item, N>) -> R`? Where `ArrayView` is mentioned in rust-lang/generic-associated-types-initiative#2.
        - It can save memory, only the same size as the array window is needed,
        - It is more efficient, which requires less data copies,
        - It is possibly compatible with the GATified version of `LendingIterator::windows`.
        - But it prevents the array pattern matching like `iter.map_windows(|_arr: [_; N]| ())`, unless we extend the array pattern to allow matching the `ArrayView`.
    GuillaumeGomez authored Aug 13, 2023
    Configuration menu
    Copy the full SHA
    7f787e3 View commit details
    Browse the repository at this point in the history
  6. Rollup merge of rust-lang#114069 - cuviper:profiler-path, r=Mark-Simu…

    …lacrum
    
    Allow using external builds of the compiler-rt profile lib
    
    This changes the bootstrap config `target.*.profiler` from a plain bool
    to also allow a string, which will be used as a path to the pre-built
    profiling runtime for that target. Then `profiler_builtins/build.rs`
    reads that in a `LLVM_PROFILER_RT_LIB` environment variable.
    GuillaumeGomez authored Aug 13, 2023
    Configuration menu
    Copy the full SHA
    99144c3 View commit details
    Browse the repository at this point in the history
  7. Rollup merge of rust-lang#114354 - Zalathar:external-counters, r=jack…

    …h726
    
    coverage: Store BCB counter info externally, not directly in the BCB graph
    
    When deciding how to instrument the underlying MIR for coverage, the `InstrumentCoverage` pass builds a simplified “Basic Counter Block” graph, and then allocates coverage counters/expressions to various nodes/edges in the BCB graph as necessary. Those counters/expressions are then injected into the function's MIR.
    
    The awkward thing here is that the code for doing this needs `&mut` access to the graph, in order to associate coverage info with individual nodes, even though it isn't making any structural changes to the graph itself. That makes it harder to understand and modify the instrumentation code.
    
    In addition, the graph alone can't hold all the information that is needed. There ends up being an extra vector of “intermediate expressions” that needs to be passed around separately anyway.
    
    ---
    
    This PR simplifies things by instead storing all of that temporary coverage information in a number of side-tables inside `CoverageCounters`.
    
    This makes it easier to see all of the information produced by the make-counters step, and how it is used by the inject-into-mir step.
    
    ---
    
    Looking at the combined changes is possible, but I recommend reviewing the commits individually, because the big changes are mostly independent of each other (despite being conceptually related).
    GuillaumeGomez authored Aug 13, 2023
    Configuration menu
    Copy the full SHA
    2442c9b View commit details
    Browse the repository at this point in the history
  8. Rollup merge of rust-lang#114625 - klensy:ci-pr-workers, r=Mark-Simul…

    …acrum
    
    CI: use smaller machines in PR runs
    
    mingw-check job-linux-16c -> job-linux-4c
    ~job-linux-4c 20 min in auto job
    ~job-linux-16c 13 min in pr job
    with current pr regressed to almost 21 min, it's ok.
    
    mingw-check-tidy job-linux-16c -> job-linux-4c small enough, so reduce to minimal
    ~ job-linux-16c 3 min
    with current pr regressed to almost 5 min, it's ok.
    
    x86_64-gnu-tools job-linux-16c this is top job by time in PR, so don't touch it
    ~ job-linux-8c 1.30 hour in auto job
    ~ job-linux-16c 1 hour in pr job (affected by rust-lang#114613, actual time ~ 30 min)
    
    x86_64-gnu-llvm-15 job-linux-16c don't change too
    ~ job-linux-8c 1.30 hour in auto job
    ~ job-linux-16c 30 min in pr job
    
    Noticed while working on rust-lang#114621, so current time affected by always rebuilded docker images (but pr images always rebuilded before too, so nvm)
    GuillaumeGomez authored Aug 13, 2023
    Configuration menu
    Copy the full SHA
    d868276 View commit details
    Browse the repository at this point in the history
  9. Rollup merge of rust-lang#114777 - GuillaumeGomez:migrate-gui-test-co…

    …lor-32, r=notriddle
    
    Migrate GUI colors test to original CSS color format
    
    Follow-up of rust-lang#111459.
    
    r? `@notriddle`
    GuillaumeGomez authored Aug 13, 2023
    Configuration menu
    Copy the full SHA
    be6cda1 View commit details
    Browse the repository at this point in the history