From 3227aec848bfe13d7a592eb887824e23e018aba9 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Wed, 22 Jan 2020 17:35:57 -0500 Subject: [PATCH] fix not respecting sub-arch feature --- lib/std/target.zig | 4 +--- src-self-hosted/stage1.zig | 4 ++++ src/codegen.cpp | 1 + 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/std/target.zig b/lib/std/target.zig index f23fc78df2..1292626f24 100644 --- a/lib/std/target.zig +++ b/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; } diff --git a/src-self-hosted/stage1.zig b/src-self-hosted/stage1.zig index a6a3bc013c..961b95d481 100644 --- a/src-self-hosted/stage1.zig +++ b/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, diff --git a/src/codegen.cpp b/src/codegen.cpp index 6fffcc6fdf..7ad19fdfcb 100644 --- a/src/codegen.cpp +++ b/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;