me
/
guix
Archived
1
0
Fork 0
This repository has been archived on 2024-08-07. You can view files and clone it, but cannot push or open issues/pull-requests.
guix/gnu/packages/patches/rustc-1.39.0-src.patch

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);