1. 09 9月, 2021 1 次提交
  2. 30 8月, 2021 1 次提交
  3. 27 8月, 2021 2 次提交
  4. 24 6月, 2021 2 次提交
  5. 15 6月, 2021 1 次提交
  6. 29 5月, 2021 1 次提交
  7. 23 5月, 2021 2 次提交
  8. 19 4月, 2021 1 次提交
  9. 08 4月, 2021 1 次提交
    • A
      rustc: Add a new `wasm` ABI · 482a3d06
      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.
      482a3d06
  10. 05 4月, 2021 1 次提交
  11. 22 3月, 2021 1 次提交
    • N
      Move decision aboute noalias into codegen_llvm · dfc4cafe
      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.
      dfc4cafe
  12. 28 2月, 2021 1 次提交
  13. 02 2月, 2021 2 次提交
    • M
      Bump rustfmt version · d5b760ba
      Mark Rousskov 提交于
      Also switches on formatting of the mir build module
      d5b760ba
    • H
      Add a new ABI to support cmse_nonsecure_call · ce9818f2
      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>
      ce9818f2
  14. 30 1月, 2021 1 次提交
    • S
      Consider Scalar to be a bool only if its unsigned · 915a04e2
      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
      915a04e2
  15. 28 1月, 2021 1 次提交
  16. 26 1月, 2021 5 次提交
  17. 23 1月, 2021 3 次提交
  18. 12 1月, 2021 3 次提交
  19. 22 11月, 2020 5 次提交
  20. 08 11月, 2020 2 次提交
    • V
      rustc_target: Rename some target options to avoid tautology · dc004d48
      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`
      dc004d48
    • V
      Collapse all uses of `target.options.foo` into `target.foo` · bf66988a
      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.
      bf66988a
  21. 30 10月, 2020 1 次提交
  22. 02 10月, 2020 1 次提交
  23. 26 9月, 2020 1 次提交