-
Notifications
You must be signed in to change notification settings - Fork 13.4k
Merge compiler-builtins into core #49380
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
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 |
Uh oh!
There was an error while loading. Please reload this page.
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: