diff options
| author | Seo Sanghyeon <sanxiyn@gmail.com> | 2016-12-19 16:59:37 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-12-19 16:59:37 +0900 |
| commit | d38beccdc441e6023f084e16281a530e05b6bb0a (patch) | |
| tree | 826864dbdb9f361ac97dd327a85e7b055309fed5 /src | |
| parent | 0c4e1db935eb972c8e3afc7c15f48834dadaae3f (diff) | |
| parent | 9e01f76349ec358009099dd5dc87b921960defc2 (diff) | |
| download | rust-d38beccdc441e6023f084e16281a530e05b6bb0a.tar.gz rust-d38beccdc441e6023f084e16281a530e05b6bb0a.zip | |
Rollup merge of #38413 - rillian:armv7-neon, r=alexcrichton
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.
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_back/target/aarch64_linux_android.rs | 3 | ||||
| -rw-r--r-- | src/librustc_back/target/armv7_linux_androideabi.rs | 7 | ||||
| -rw-r--r-- | src/librustc_back/target/i686_linux_android.rs | 3 |
3 files changed, 11 insertions, 2 deletions
diff --git a/src/librustc_back/target/aarch64_linux_android.rs b/src/librustc_back/target/aarch64_linux_android.rs index 140195c780b..54eead94986 100644 --- a/src/librustc_back/target/aarch64_linux_android.rs +++ b/src/librustc_back/target/aarch64_linux_android.rs @@ -10,6 +10,9 @@ use target::{Target, TargetOptions, TargetResult}; +// See https://developer.android.com/ndk/guides/abis.html#arm64-v8a +// for target ABI requirements. + pub fn target() -> TargetResult { let mut base = super::android_base::opts(); base.max_atomic_width = Some(128); diff --git a/src/librustc_back/target/armv7_linux_androideabi.rs b/src/librustc_back/target/armv7_linux_androideabi.rs index 42f0deaa3fb..36f409b7948 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. // @@ -10,9 +10,12 @@ use target::{Target, TargetOptions, TargetResult}; +// See https://developer.android.com/ndk/guides/abis.html#v7a +// for target ABI requirements. + 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 { diff --git a/src/librustc_back/target/i686_linux_android.rs b/src/librustc_back/target/i686_linux_android.rs index a2c007d4969..f8a8f5a3500 100644 --- a/src/librustc_back/target/i686_linux_android.rs +++ b/src/librustc_back/target/i686_linux_android.rs @@ -10,6 +10,9 @@ use target::{Target, TargetResult}; +// See https://developer.android.com/ndk/guides/abis.html#x86 +// for target ABI requirements. + pub fn target() -> TargetResult { let mut base = super::android_base::opts(); |
