- 20 4月, 2021 3 次提交
-
-
由 Oli Scherer 提交于
-
由 Oli Scherer 提交于
-
由 Oli Scherer 提交于
-
- 19 4月, 2021 1 次提交
-
-
由 klensy 提交于
-
- 17 4月, 2021 2 次提交
-
-
由 Aaron Hill 提交于
Fixes #84252 This query reads from untracked global state in `CStore`.
-
由 bjorn3 提交于
-
- 12 4月, 2021 1 次提交
-
-
由 bjorn3 提交于
-
- 09 4月, 2021 2 次提交
-
-
由 Esteban Küber 提交于
-
由 pierwill 提交于
Changes `librustc_X` to `rustc_X`, only in documentation comments. Plain code comments are left unchanged. Also fix incorrect file paths.
-
- 08 4月, 2021 1 次提交
-
-
由 Alex Crichton 提交于
This commit implements the idea of a new ABI for the WebAssembly target, one called `"wasm"`. This ABI is entirely of my own invention and has no current precedent, but I think that the addition of this ABI might help solve a number of issues with the WebAssembly targets. When `wasm32-unknown-unknown` was first added to Rust I naively "implemented an abi" for the target. I then went to write `wasm-bindgen` which accidentally relied on details of this ABI. Turns out the ABI definition didn't match C, which is causing issues for C/Rust interop. Currently the compiler has a "wasm32 bindgen compat" ABI which is the original implementation I added, and it's purely there for, well, `wasm-bindgen`. Another issue with the WebAssembly target is that it's not clear to me when and if the default C ABI will change to account for WebAssembly's multi-value feature (a feature that allows functions to return multiple values). Even if this does happen, though, it seems like the C ABI will be guided based on the performance of WebAssembly code and will likely not match even what the current wasm-bindgen-compat ABI is today. This leaves a hole in Rust's expressivity in binding WebAssembly where given a particular import type, Rust may not be able to import that signature with an updated C ABI for multi-value. To fix these issues I had the idea of a new ABI for WebAssembly, one called `wasm`. The definition of this ABI is "what you write maps straight to wasm". The goal here is that whatever you write down in the parameter list or in the return values goes straight into the function's signature in the WebAssembly file. This special ABI is for intentionally matching the ABI of an imported function from the environment or exporting a function with the right signature. With the addition of a new ABI, this enables rustc to: * Eventually remove the "wasm-bindgen compat hack". Once this ABI is stable wasm-bindgen can switch to using it everywhere. Afterwards the wasm32-unknown-unknown target can have its default ABI updated to match C. * Expose the ability to precisely match an ABI signature for a WebAssembly function, regardless of what the C ABI that clang chooses turns out to be. * Continue to evolve the definition of the default C ABI to match what clang does on all targets, since the purpose of that ABI will be explicitly matching C rather than generating particular function imports/exports. Naturally this is implemented as an unstable feature initially, but it would be nice for this to get stabilized (if it works) in the near-ish future to remove the wasm32-unknown-unknown incompatibility with the C ABI. Doing this, however, requires the feature to be on stable because wasm-bindgen works with stable Rust.
-
- 07 4月, 2021 3 次提交
-
-
由 Griffin Smith 提交于
I would like to propose cmp::{min_by, min_by_key, max_by, max_by_key} for stabilization. These are relatively simple and seemingly uncontroversial functions and have been unchanged in unstable for a while now.
-
由 Esteban Küber 提交于
-
由 Esteban Küber 提交于
-
- 06 4月, 2021 2 次提交
-
-
由 Amanieu d'Antras 提交于
-
由 Wesley Norris 提交于
-
- 05 4月, 2021 1 次提交
-
-
由 Jack Huey 提交于
-
- 04 4月, 2021 1 次提交
-
-
由 Vadim Petrochenkov 提交于
-
- 03 4月, 2021 4 次提交
-
-
由 Rich Kadel 提交于
A colleague contacted me and asked why Rust's counters start at 1, when Clangs appear to start at 0. There is a reason why Rust's internal counters start at 1 (see the docs), and I tried to keep them consistent when codegenned to LLVM's coverage mapping format. LLVM should be tolerant of missing counters, but as my colleague pointed out, `llvm-cov` will silently fail to generate a coverage report for a function based on LLVM's assumption that the counters are 0-based. See: https://github.com/llvm/llvm-project/blob/main/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp#L170 Apparently, if, for example, a function has no branches, it would have exactly 1 counter. `CounterValues.size()` would be 1, and (with the 1-based index), the counter ID would be 1. This would fail the check and abort reporting coverage for the function. It turns out that by correcting for this during coverage map generation, by subtracting 1 from the Rust Counter ID (both when generating the counter increment intrinsic call, and when adding counters to the map), some uncovered functions (including in tests) now appear covered! This corrects the coverage for a few tests!
-
由 Roxane 提交于
-
由 Roxane 提交于
-
由 Simonas Kazlauskas 提交于
-
- 01 4月, 2021 3 次提交
-
-
由 Oli Scherer 提交于
-
由 Oli Scherer 提交于
-
由 b-naber 提交于
-
- 31 3月, 2021 15 次提交
-
-
由 Jack Huey 提交于
-
由 Jack Huey 提交于
-
由 Jack Huey 提交于
-
由 Jack Huey 提交于
-
由 Jack Huey 提交于
-
由 Jack Huey 提交于
-
由 Jack Huey 提交于
-
由 Jack Huey 提交于
-
由 Jack Huey 提交于
-
由 Jack Huey 提交于
-
由 Oli Scherer 提交于
-
由 Oli Scherer 提交于
-
由 Camille GILLOT 提交于
-
由 Joshua Nelson 提交于
-
由 Camille GILLOT 提交于
-
- 30 3月, 2021 1 次提交
-
-
由 Amanieu d'Antras 提交于
This matches the behavior of Clang and allows us to remove several hacks which were needed to ensure functions weren't optimized away before reaching the instrumentation pass.
-