Commit 3227aec848

Andrew Kelley <andrew@ziglang.org>
2020-01-22 23:35:57
fix not respecting sub-arch feature
1 parent 48c7e6c
Changed files (3)
lib
src
src-self-hosted
lib/std/target.zig
@@ -181,7 +181,7 @@ pub const Target = union(enum) {
             };
         }
 
-        pub fn subArchFeature(arch: Arch) ?u8 {
+        pub fn subArchFeature(arch: Arch) ?Cpu.Feature.Set.Index {
             return switch (arch) {
                 .arm, .armeb, .thumb, .thumbeb => |arm32| switch (arm32) {
                     .v8_5a => @enumToInt(arm.Feature.armv8_5_a),
@@ -295,8 +295,6 @@ pub const Target = union(enum) {
                     return error.UnknownCpuFeature;
                 }
             }
-
-            set.populateDependencies(all_features);
             return set;
         }
 
src/codegen.cpp
@@ -10679,6 +10679,7 @@ CodeGen *create_child_codegen(CodeGen *parent_gen, Buf *root_src_path, OutType o
     child_gen->verbose_llvm_ir = parent_gen->verbose_llvm_ir;
     child_gen->verbose_cimport = parent_gen->verbose_cimport;
     child_gen->verbose_cc = parent_gen->verbose_cc;
+    child_gen->verbose_llvm_cpu_features = parent_gen->verbose_llvm_cpu_features;
     child_gen->llvm_argv = parent_gen->llvm_argv;
     child_gen->dynamic_linker_path = parent_gen->dynamic_linker_path;
 
src-self-hosted/stage1.zig
@@ -790,7 +790,11 @@ fn stage2ParseCpuFeatures(
         };
     } else cpu.features;
 
+    if (arch.subArchFeature()) |index| {
+        set.addFeature(index);
+    }
     set.populateDependencies(arch.allFeaturesList());
+
     return Stage2CpuFeatures.createFromCpuFeatures(std.heap.c_allocator, arch, .{
         .cpu = cpu,
         .features = set,