- 09 9月, 2021 1 次提交
-
-
由 Andreas Liljeqvist 提交于
fix fix Remove more refs and clones fix more fix
-
- 30 8月, 2021 1 次提交
-
-
由 Eduard-Mihai Burtescu 提交于
-
- 27 8月, 2021 2 次提交
-
-
由 Eduard-Mihai Burtescu 提交于
-
由 Eduard-Mihai Burtescu 提交于
-
- 24 6月, 2021 2 次提交
- 15 6月, 2021 1 次提交
-
-
由 LeSeulArtichaut 提交于
-
- 29 5月, 2021 1 次提交
-
-
由 Alessandro Decina 提交于
Let LLVM extend to 64 bits when alu32 is not enabled
-
- 23 5月, 2021 2 次提交
-
-
由 Alessandro Decina 提交于
-
由 Alessandro Decina 提交于
This change adds the bpfel-unknown-none and bpfeb-unknown-none targets which can be used to generate little endian and big endian BPF
-
- 19 4月, 2021 1 次提交
-
-
由 klensy 提交于
-
- 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.
-
- 05 4月, 2021 1 次提交
-
-
由 Gus Caplan 提交于
-
- 22 3月, 2021 1 次提交
-
-
由 Nikita Popov 提交于
The frontend shouldn't be deciding whether or not to use mutable noalias attributes, as this is a pure LLVM concern. Only provide the necessary information and do the actual decision in codegen_llvm.
-
- 28 2月, 2021 1 次提交
-
-
由 Nikita Popov 提交于
The first argument to an x86-interrupt ABI function was implicitly treated as byval prior to LLVM 12. Since LLVM 12, it has to be marked as such explicitly: https://github.com/llvm/llvm-project/commit/2e0e03c6a089da39039ec3f464f7cee5df86646b
-
- 02 2月, 2021 2 次提交
-
-
由 Mark Rousskov 提交于
Also switches on formatting of the mir build module
-
由 Hugues de Valon 提交于
This commit adds a new ABI to be selected via `extern "C-cmse-nonsecure-call"` on function pointers in order for the compiler to apply the corresponding cmse_nonsecure_call callsite attribute. For Armv8-M targets supporting TrustZone-M, this will perform a non-secure function call by saving, clearing and calling a non-secure function pointer using the BLXNS instruction. See the page on the unstable book for details. Signed-off-by: NHugues de Valon <hugues.devalon@arm.com>
-
- 30 1月, 2021 1 次提交
-
-
由 Simonas Kazlauskas 提交于
This seems right, given that conceptually bools are unsigned, but the implications of this change may have more action at distance that I'm not sure how to exhaustively consider. For instance there are a number of cases where code attaches range metadata if `scalar.is_bool()` holds. Supposedly it would no longer be attached to the `repr(i8)` enums? Though I'm not sure why booleans are being special-cased here in the first place... Fixes #80556
-
- 28 1月, 2021 1 次提交
-
-
由 Amanieu d'Antras 提交于
On big-endian the values need to be right-aligned within a 64-bit register, as if the value had been read with a 64-bit load instruction.
-
- 26 1月, 2021 5 次提交
- 23 1月, 2021 3 次提交
- 12 1月, 2021 3 次提交
-
-
由 Gus Caplan 提交于
-
由 Gus Caplan 提交于
-
由 Gus Caplan 提交于
Introduces `RUSTC_USE_WASM32_BINDGEN_COMPAT_ABI` env var to use the compat ABI if need.
-
- 22 11月, 2020 5 次提交
-
-
由 bjorn3 提交于
-
由 bjorn3 提交于
-
由 bjorn3 提交于
It is applied exactly when the return value has an indirect pass mode. Except for InReg on x86 fastcall, arg attrs are now only used for optimization purposes and thus are fine to ignore.
-
由 bjorn3 提交于
This makes it clearer that only PassMode::Indirect allows ByVal
-
由 bjorn3 提交于
Both flags are mutually exclusive
-
- 08 11月, 2020 2 次提交
-
-
由 Vadim Petrochenkov 提交于
`target.target_endian` -> `target.endian` `target.target_c_int_width` -> `target.c_int_width` `target.target_os` -> `target.os` `target.target_env` -> `target.env` `target.target_vendor` -> `target.vendor` `target.target_family` -> `target.os_family` `target.target_mcount` -> `target.mcount`
-
由 Vadim Petrochenkov 提交于
with an eye on merging `TargetOptions` into `Target`. `TargetOptions` as a separate structure is mostly an implementation detail of `Target` construction, all its fields logically belong to `Target` and available from `Target` through `Deref` impls.
-
- 30 10月, 2020 1 次提交
-
-
由 Joshua Nelson 提交于
-
- 02 10月, 2020 1 次提交
-
-
由 Jonas Schievink 提交于
-
- 26 9月, 2020 1 次提交
-
-
由 Jonas Schievink 提交于
-