100 lines
4.0 KiB
Diff
100 lines
4.0 KiB
Diff
# This modified patch is to disable the hunk applying to LLVM, unbundled in Guix.
|
|
|
|
# Add mrustc slice length intrinsics
|
|
--- src/libcore/intrinsics.rs
|
|
+++ src/libcore/intrinsics.rs
|
|
@@ -685,4 +685,8 @@
|
|
pub fn min_align_of_val<T: ?Sized>(_: &T) -> usize;
|
|
|
|
+ /// Obtain the length of a slice pointer
|
|
+ #[cfg(rust_compiler="mrustc")]
|
|
+ pub fn mrustc_slice_len<T>(pointer: *const [T]) -> usize;
|
|
+
|
|
/// Gets a static string slice containing the name of a type.
|
|
pub fn type_name<T: ?Sized>() -> &'static str;
|
|
|
|
--- src/libcore/slice/mod.rs
|
|
+++ src/libcore/slice/mod.rs
|
|
@@ -68,5 +68,8 @@
|
|
pub const fn len(&self) -> usize {
|
|
- unsafe {
|
|
- crate::ptr::Repr { rust: self }.raw.len
|
|
- }
|
|
+ #[cfg(not(rust_compiler="mrustc"))]
|
|
+ #[cfg_attr(not(bootstrap), allow_internal_unstable(const_fn_union))]
|
|
+ const fn len_inner<T>(s: &[T]) -> usize { unsafe { crate::ptr::Repr { rust: s }.raw.len } };
|
|
+ #[cfg(rust_compiler="mrustc")]
|
|
+ const fn len_inner<T>(s: &[T]) -> usize { unsafe { crate::intrinsics::mrustc_slice_len(s) } }
|
|
+ len_inner(self)
|
|
}
|
|
#
|
|
# Static-link rustc_codegen_llvm so the generated rustc is standalone
|
|
# > Note: Interacts with `rustc-1.39.0-overrides.toml`
|
|
#
|
|
--- src/librustc_interface/util.rs
|
|
+++ src/librustc_interface/util.rs
|
|
@@ -421,2 +421,4 @@
|
|
pub fn get_codegen_sysroot(backend_name: &str) -> fn() -> Box<dyn CodegenBackend> {
|
|
+ #[cfg(rust_compiler="mrustc")]
|
|
+ { if(backend_name == "llvm") { extern "Rust" { fn __rustc_codegen_backend() -> Box<dyn CodegenBackend>; } return || unsafe { __rustc_codegen_backend() } } }
|
|
// For now we only allow this function to be called once as it'll dlopen a
|
|
# Disable most architecture intrinsics
|
|
--- src/stdarch/crates/std_detect/src/detect/mod.rs
|
|
+++ src/stdarch/crates/std_detect/src/detect/mod.rs
|
|
@@ -74,4 +74,7 @@
|
|
// this run-time detection logic is never called.
|
|
#[path = "os/other.rs"]
|
|
mod os;
|
|
+ } else if #[cfg(rust_compiler="mrustc")] {
|
|
+ #[path = "os/other.rs"]
|
|
+ mod os;
|
|
} else if #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] {
|
|
--- vendor/ppv-lite86/src/lib.rs
|
|
+++ vendor/ppv-lite86/src/lib.rs
|
|
@@ -12,10 +12,10 @@
|
|
-#[cfg(all(feature = "simd", target_arch = "x86_64", not(miri)))]
|
|
+#[cfg(all(feature = "simd", target_arch = "x86_64", not(miri), not(rust_compiler="mrustc")))]
|
|
pub mod x86_64;
|
|
-#[cfg(all(feature = "simd", target_arch = "x86_64", not(miri)))]
|
|
+#[cfg(all(feature = "simd", target_arch = "x86_64", not(miri), not(rust_compiler="mrustc")))]
|
|
use self::x86_64 as arch;
|
|
|
|
-#[cfg(any(miri, not(all(feature = "simd", any(target_arch = "x86_64")))))]
|
|
+#[cfg(any(miri, rust_compiler="mrustc", not(all(feature = "simd", any(target_arch = "x86_64")))))]
|
|
pub mod generic;
|
|
-#[cfg(any(miri, not(all(feature = "simd", any(target_arch = "x86_64")))))]
|
|
+#[cfg(any(miri, rust_compiler="mrustc", not(all(feature = "simd", any(target_arch = "x86_64")))))]
|
|
use self::generic as arch;
|
|
|
|
# diff --git a/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h b/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h
|
|
# index da9d9d5bfdc0..3d47471f0ef0 100644
|
|
# --- src/llvm-project/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h
|
|
# +++ src/llvm-project/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h
|
|
# @@ -16,6 +16,8 @@
|
|
# #include "llvm/Demangle/DemangleConfig.h"
|
|
# #include "llvm/Demangle/StringView.h"
|
|
# #include <array>
|
|
# +#include <cstdint>
|
|
# +#include <string>
|
|
|
|
# namespace llvm {
|
|
# namespace itanium_demangle {
|
|
##
|
|
## gcc (used by mrustc) has 16-byte uint128_t alignment, while rustc uses 8
|
|
##
|
|
#--- src/libsyntax/ast.rs
|
|
#+++ src/libsyntax/ast.rs
|
|
#@@ -986,2 +986,2 @@
|
|
#-#[cfg(target_arch = "x86_64")]
|
|
#-static_assert_size!(Expr, 96);
|
|
#+//#[cfg(target_arch = "x86_64")]
|
|
#+//static_assert_size!(Expr, 96);
|
|
#--- src/librustc/ty/sty.rs
|
|
#+++ src/librustc/ty/sty.rs
|
|
#@@ -2258,2 +2258,2 @@
|
|
#-#[cfg(target_arch = "x86_64")]
|
|
#-static_assert_size!(Const<'_>, 40);
|
|
#+//#[cfg(target_arch = "x86_64")]
|
|
#+//static_assert_size!(Const<'_>, 40);
|
|
|