1
Fork 0
Empowering everyone to build reliable and efficient software. Gabriel's commits. https://www.rust-lang.org/
Find a file
bors dfa88b328f Auto merge of #120500 - oli-obk:intrinsics2.0, r=WaffleLapkin
Implement intrinsics with fallback bodies

fixes #93145 (though we can port many more intrinsics)
cc #63585

The way this works is that the backend logic for generating custom code for intrinsics has been made fallible. The only failure path is "this intrinsic is unknown". The `Instance` (that was `InstanceDef::Intrinsic`) then gets converted to `InstanceDef::Item`, which represents the fallback body. A regular function call to that body is then codegenned. This is currently implemented for

* codegen_ssa (so llvm and gcc)
* codegen_cranelift

other backends will need to adjust, but they can just keep doing what they were doing if they prefer (though adding new intrinsics to the compiler will then require them to implement them, instead of getting the fallback body).

cc `@scottmcm` `@WaffleLapkin`

### todo

* [ ] miri support
* [x] default intrinsic name to name of function instead of requiring it to be specified in attribute
* [x] make sure that the bodies are always available (must be collected for metadata)
2024-02-16 09:53:01 +00:00
.github Downgrade Xcode from the default (15.0) to 14.3.1. 2024-02-10 20:59:20 -08:00
.reuse Rollup merge of #119189 - henrispriet:move-installing-from-source, r=Mark-Simulacrum 2024-01-13 22:35:08 +01:00
compiler Auto merge of #120500 - oli-obk:intrinsics2.0, r=WaffleLapkin 2024-02-16 09:53:01 +00:00
library Auto merge of #120500 - oli-obk:intrinsics2.0, r=WaffleLapkin 2024-02-16 09:53:01 +00:00
LICENSES
src Auto merge of #120500 - oli-obk:intrinsics2.0, r=WaffleLapkin 2024-02-16 09:53:01 +00:00
tests Auto merge of #120500 - oli-obk:intrinsics2.0, r=WaffleLapkin 2024-02-16 09:53:01 +00:00
.editorconfig
.git-blame-ignore-revs
.gitattributes
.gitignore
.gitmodules Update to LLVM 18 2024-02-13 10:33:40 +01:00
.mailmap correct my mailmap entry 2024-01-21 20:47:26 -05:00
Cargo.lock Rollup merge of #120982 - momvart:smir-61-foreign_kind, r=oli-obk 2024-02-15 09:20:18 +01:00
Cargo.toml clippy: Enable str_to_string rule 2024-02-10 01:00:41 +09:00
CODE_OF_CONDUCT.md
config.example.toml add a new optimized_compiler_builtins option 2024-01-07 13:04:40 +03:00
configure
CONTRIBUTING.md
COPYRIGHT
INSTALL.md Move section "Installing from Source" to seperate file 2024-01-13 17:22:55 +01:00
LICENSE-APACHE
LICENSE-MIT
README.md Update Readme 2024-01-15 13:57:29 -08:00
RELEASES.md Remove duplicate release note 2024-02-09 12:31:32 -05:00
rust-bors.toml
rustfmt.toml rustfmt.toml: don't ignore just any tests path, only root one 2024-01-11 14:59:59 +03:00
triagebot.toml Rollup merge of #121043 - lcnr:lcnr-compiler-assign, r=fmease 2024-02-13 22:51:56 +01:00
x
x.ps1
x.py

The Rust Programming Language

Rust Community

This is the main source code repository for Rust. It contains the compiler, standard library, and documentation.

Note: this README is for users rather than contributors. If you wish to contribute to the compiler, you should read CONTRIBUTING.md instead.

Table of Contents

Quick Start

Read "Installation" from The Book.

Installing from Source

If you really want to install from source (though this is not recommended), see INSTALL.md.

Getting Help

See https://www.rust-lang.org/community for a list of chat platforms and forums.

Contributing

See CONTRIBUTING.md.

License

Rust is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0), with portions covered by various BSD-like licenses.

See LICENSE-APACHE, LICENSE-MIT, and COPYRIGHT for details.

Trademark

The Rust Foundation owns and protects the Rust and Cargo trademarks and logos (the "Rust Trademarks").

If you want to use these names or brands, please read the media guide.

Third-party logos may be subject to third-party copyrights and trademarks. See Licenses for details.