]> git.lizzy.rs Git - rust.git/commitdiff
Distinguish different `vfp?` features
authorAndrea Canciani <ranma42@gmail.com>
Thu, 14 Apr 2016 11:02:47 +0000 (13:02 +0200)
committerAndrea Canciani <ranma42@gmail.com>
Tue, 19 Apr 2016 15:48:51 +0000 (17:48 +0200)
The different generations of ARM floating point VFP correspond to the
LLVM CPU features named `vfp2`, `vfp3`, and `vfp4`; they are now
exposed in Rust under the same names.

This commit fixes some crashes that would occour when checking if the
`vfp` feature exists (the crash occurs because the linear scan of the
LLVM feature goes past the end of the features whenever it searches
for a feature that does not exist in the LLVM tables).

src/librustc_driver/target_features.rs

index 7f4375e993dae5965caeae6871bf3c99d57507fe..73b2b85a352ad9f205235cbd5eda228bfc75da7f 100644 (file)
 pub fn add_configuration(cfg: &mut ast::CrateConfig, sess: &Session) {
     let target_machine = create_target_machine(sess);
 
+    // WARNING: the features must be known to LLVM or the feature
+    // detection code will walk past the end of the feature array,
+    // leading to crashes.
+
     let arm_whitelist = [
         "neon\0",
-        "vfp\0",
+        "vfp2\0",
+        "vfp3\0",
+        "vfp4\0",
     ];
 
     let x86_whitelist = [