Always use Rust based intrinsics on Windows

The check inside compiler-rt file int_types.h to #define CRT_HAS_128BIT
looks like:

 #if (defined(__LP64__) || defined(__wasm__)) && \
     !(defined(__mips__) && defined(__clang__))
 #define CRT_HAS_128BIT
 #endif

Windows uses LLP64 instead of LP64, so it doesn't ship with the C based
intrinsics.

Also, add libcompiler_builtins to the list of crates that may have platform
specific checks (like the ones we just added).
This commit is contained in:
est31 2016-12-04 07:58:49 +01:00
parent c79aba71d5
commit 317810d4c4
2 changed files with 6 additions and 2 deletions

View File

@ -17,14 +17,16 @@
#![crate_name = "compiler_builtins"]
#![crate_type = "rlib"]
#![feature(staged_api)]
#![cfg_attr(any(target_pointer_width="32", target_pointer_width="16"),
#![cfg_attr(any(target_pointer_width="32", target_pointer_width="16", target_os="windows",
target_arch="mips64"),
feature(core_intrinsics, core_float))]
#![feature(associated_consts)]
#![cfg_attr(not(stage0), feature(i128_type))]
#![allow(non_camel_case_types, unused_variables)]
#[cfg(any(target_pointer_width="32", target_pointer_width="16"))]
#[cfg(any(target_pointer_width="32", target_pointer_width="16", target_os="windows",
target_arch="mips64"))]
pub mod reimpls {
#![allow(unused_comparisons)]

View File

@ -26,6 +26,7 @@
//! exceptions:
//!
//! - core may not have platform-specific code
//! - libcompiler_builtins may have platform-specific code
//! - liballoc_system may have platform-specific code
//! - liballoc_jemalloc may have platform-specific code
//! - libpanic_abort may have platform-specific code
@ -53,6 +54,7 @@ const EXCEPTION_PATHS: &'static [&'static str] = &[
// std crates
"src/liballoc_jemalloc",
"src/liballoc_system",
"src/libcompiler_builtins",
"src/liblibc",
"src/libpanic_abort",
"src/libpanic_unwind",