//! Our own `compiler_builtins`. //! //! Rust provides [`compiler_builtins`] as a port of LLVM's [`compiler-rt`]. //! Since we do not need the vast majority of them, we avoid the dependency //! by providing this file. //! //! At the moment, some builtins are required that should not be. For instance, //! [`core`] has 128-bit integers functionality which we should not be compiling //! in. We will work with upstream [`core`] to provide feature flags to disable //! the parts we do not need. For the moment, we define them to [`panic!`] at //! runtime for simplicity to catch mistakes, instead of performing surgery //! on `core.o`. //! //! In any case, all these symbols are weakened to ensure we do not override //! those that may be provided by the rest of the kernel. //! //! [`compiler_builtins`]: https://github.com/rust-lang/compiler-builtins //! [`compiler-rt`]: https://compiler-rt.llvm.org/
define_panicking_intrinsics!("`f32` should not be used", {
__addsf3,
__eqsf2,
__extendsfdf2,
__gesf2,
__lesf2,
__ltsf2,
__mulsf3,
__nesf2,
__truncdfsf2,
__unordsf2,
});
define_panicking_intrinsics!("`f64` should not be used", {
__adddf3,
__eqdf2,
__ledf2,
__ltdf2,
__muldf3,
__unorddf2,
});
define_panicking_intrinsics!("`i128` should not be used", {
__ashrti3,
__muloti4,
__multi3,
});
define_panicking_intrinsics!("`u128` should not be used", {
__ashlti3,
__lshrti3,
__udivmodti4,
__udivti3,
__umodti3,
});
#[cfg(target_arch = "arm")]
define_panicking_intrinsics!("`f32` should not be used", {
__aeabi_fadd,
__aeabi_fmul,
__aeabi_fcmpeq,
__aeabi_fcmple,
__aeabi_fcmplt,
__aeabi_fcmpun,
});
#[cfg(target_arch = "arm")]
define_panicking_intrinsics!("`f64` should not be used", {
__aeabi_dadd,
__aeabi_dmul,
__aeabi_dcmple,
__aeabi_dcmplt,
__aeabi_dcmpun,
});
#[cfg(target_arch = "arm")]
define_panicking_intrinsics!("`u64` division/modulo should not be used", {
__aeabi_uldivmod,
});
// NOTE: if you are adding a new intrinsic here, you should also add it to // `redirect-intrinsics` in `rust/Makefile`.
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet am 2026-06-17)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.