]> git.lizzy.rs Git - rust.git/commitdiff
Make the feature whitelists constants
authorAndrea Canciani <ranma42@gmail.com>
Wed, 20 Apr 2016 07:08:25 +0000 (09:08 +0200)
committerAndrea Canciani <ranma42@gmail.com>
Wed, 20 Apr 2016 07:08:25 +0000 (09:08 +0200)
This simplifies the code a bit and makes the types nicer, too.

src/librustc_driver/target_features.rs

index 73b2b85a352ad9f205235cbd5eda228bfc75da7f..69d146059c9c010ad0426b76f2403aaea68e5acf 100644 (file)
 use syntax::parse::token::intern_and_get_ident as intern;
 use libc::c_char;
 
+// 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.
+
+const ARM_WHITELIST: &'static [&'static str] = &[
+    "neon\0",
+    "vfp2\0",
+    "vfp3\0",
+    "vfp4\0",
+];
+
+const X86_WHITELIST: &'static [&'static str] = &[
+    "avx\0",
+    "avx2\0",
+    "sse\0",
+    "sse2\0",
+    "sse3\0",
+    "sse4.1\0",
+    "sse4.2\0",
+    "ssse3\0",
+];
+
 /// Add `target_feature = "..."` cfgs for a variety of platform
 /// specific features (SSE, NEON etc.).
 ///
 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",
-        "vfp2\0",
-        "vfp3\0",
-        "vfp4\0",
-    ];
-
-    let x86_whitelist = [
-        "avx\0",
-        "avx2\0",
-        "sse\0",
-        "sse2\0",
-        "sse3\0",
-        "sse4.1\0",
-        "sse4.2\0",
-        "ssse3\0",
-    ];
-
     let whitelist = match &*sess.target.target.arch {
-        "arm" => &arm_whitelist[..],
-        "x86" | "x86_64" => &x86_whitelist[..],
-        _ => &[][..],
+        "arm" => ARM_WHITELIST,
+        "x86" | "x86_64" => X86_WHITELIST,
+        _ => &[],
     };
 
     let tf = InternedString::new("target_feature");