about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRalph Giles <giles@mozilla.com>2016-12-16 10:54:48 -0800
committerRalph Giles <giles@mozilla.com>2016-12-16 10:54:48 -0800
commite900f6c7fe8c077f3a94500c70eee9cfaaa8eff5 (patch)
treec255e7f8d5c0cc7f41b79a72f66b71761fbbe775
parentd250169cb5a96481a3e7c8f9fe05de49f60e5ae5 (diff)
downloadrust-e900f6c7fe8c077f3a94500c70eee9cfaaa8eff5.tar.gz
rust-e900f6c7fe8c077f3a94500c70eee9cfaaa8eff5.zip
rustc: Disable NEON on armv7 android.
We thought Google's ABI for arvm7 required neon, but it is
currently optional, perhaps because there is a significant
population of Tegra 2 devices still in use.

This turns off neon code generation outside #[target-feature]
blocks just like we do on armv7-unknown-linux-gnu, but unlike
most other armv7 targets. LLVM defaults to +neon for this target,
so an explicit disable is necessary.

See https://developer.android.com/ndk/guides/abis.html#v7a
for instruction set extension requirements.

Closes #38402.
-rw-r--r--src/librustc_back/target/armv7_linux_androideabi.rs4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/librustc_back/target/armv7_linux_androideabi.rs b/src/librustc_back/target/armv7_linux_androideabi.rs
index 42f0deaa3fb..598b961a304 100644
--- a/src/librustc_back/target/armv7_linux_androideabi.rs
+++ b/src/librustc_back/target/armv7_linux_androideabi.rs
@@ -1,4 +1,4 @@
-// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
+// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
 // file at the top-level directory of this distribution and at
 // http://rust-lang.org/COPYRIGHT.
 //
@@ -12,7 +12,7 @@ use target::{Target, TargetOptions, TargetResult};
 
 pub fn target() -> TargetResult {
     let mut base = super::android_base::opts();
-    base.features = "+v7,+thumb2,+vfp3,+d16".to_string();
+    base.features = "+v7,+thumb2,+vfp3,+d16,-neon".to_string();
     base.max_atomic_width = Some(64);
 
     Ok(Target {