From 0c037a85616400424a8489be0ff150e5bdd496e5 Mon Sep 17 00:00:00 2001 From: George Roman Date: Fri, 24 Apr 2020 15:48:24 +0300 Subject: [PATCH] Pass each target feature flag separately --- src/codegen.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/codegen.cpp b/src/codegen.cpp index 7d3e008a22..1b7d8e7013 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -9362,10 +9362,16 @@ void add_cc_args(CodeGen *g, ZigList &args, const char *out_dep_pa args.append(g->zig_target->llvm_cpu_name); } if (g->zig_target->llvm_cpu_features != nullptr) { - args.append("-Xclang"); - args.append("-target-feature"); - args.append("-Xclang"); - args.append(g->zig_target->llvm_cpu_features); + // https://github.com/ziglang/zig/issues/5017 + SplitIterator it = memSplit(str(g->zig_target->llvm_cpu_features), str(",")); + Optional> flag = SplitIterator_next(&it); + while (flag.is_some) { + args.append("-Xclang"); + args.append("-target-feature"); + args.append("-Xclang"); + args.append(buf_ptr(buf_create_from_slice(flag.value))); + flag = SplitIterator_next(&it); + } } if (translate_c) { // this gives us access to preprocessing entities, presumably at