about summary refs log tree commit diff
path: root/src/libcompiler_builtins
diff options
context:
space:
mode:
authorest31 <MTest31@outlook.com>2016-12-04 07:58:49 +0100
committerest31 <MTest31@outlook.com>2016-12-30 15:17:28 +0100
commit317810d4c4371b8fcaf884d4918b15a55701fc1d (patch)
treea11669a5a48d5d8d296dd22c2252c556fe04d86d /src/libcompiler_builtins
parentc79aba71d5a0573a6f9cd270dac60d92c611236c (diff)
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).
Diffstat (limited to 'src/libcompiler_builtins')
-rw-r--r--src/libcompiler_builtins/lib.rs6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/libcompiler_builtins/lib.rs b/src/libcompiler_builtins/lib.rs
index f139a00e2a4..790de76cad6 100644
--- a/src/libcompiler_builtins/lib.rs
+++ b/src/libcompiler_builtins/lib.rs
@@ -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)]