-
Notifications
You must be signed in to change notification settings - Fork 12.8k
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
Merge compiler-builtins into core #49380
Comments
Alternative options discussed during meeting 1:
|
@japaric What about the |
@whitequark we are going to go ahead with the first approach in @jamesmunns' comment. (a) There's not going to be a compiler-builtins / core merge, (b) the expansion of |
With this approach we can still do the merge sometime in the future. |
Sounds great! |
#49503 has landed so I'm going to remove the WG-embedded request label. @alexcrichton you expressed interest in seeing the compiler-builtins / core merge implemented. Do you want to keep this ticket open to track that? |
We'll still need this to avoid mentioning compiler-builtins on the Cargo file, so yeah I hope work continues. |
@japaric indeed! I don't think the need is pressing though so I'm fine closing this and making a new issue if it ever becomes pressing |
This is a P-high embedded-WG issue that needs to be fixed to make embedded Rust work on stable.
Background:
The
compiler-builtins
crate contains compiler intrinsics that LLVM may call when lowering operations likei64
multiplication to machine code. This crate currently is its own crate due to these requirements: its object file needs to appear at the end of the linker argument list and it needs be marked with the#![compiler_builtins]
attribute (symbol visibility, etc.).On
#![no_std]
compiler-builtins
needs to appear in the dependency graph to avoid linker errors but that requires the#[feature(compiler_builtins_lib)]
feature gate because the crate is unstable -- it's a compiler implementation detail.The fix is to put the compiler intrinsics into
core
and eliminate thecompiler-builtins
crate from thestd
facade. This has become possible thanks to recent progress in multiple codegen units.What roughly needs to be done
Include
compiler-builtins
as source code intocore
using something like#[path = "../compiler-builtins/src/lib.rs"] mod intrinsics
.Create some attribute to mark the whole
intrinsics
module as#![compiler_builtins]
and to force the whole module to be into its own codegen unit so it gets its own object file.cc @michaelwoerister @eddyb @alexcrichton
The text was updated successfully, but these errors were encountered: