authorgravatar for michael.dusan@gmail.comMichael Dusan <michael.dusan@gmail.com> 2020-03-11 19:33:11-04:00
committergravatar for michael.dusan@gmail.comMichael Dusan <michael.dusan@gmail.com> 2020-03-11 19:33:11-04:00
logc988167377c92359fed42f12ad32b5f349f9ffb8
tree0821b489194873baee11da9eb9c0ca6c2e85c75f
parente0fe0f7f1e26c7cc0266b3f0168363135ec75ff4
signaturelock-open Commit is signed but in an unrecognized format.

update/apply CPU features when -mcpu native

- fix: features were not applied if cpu is specified as native

1 files changed, 6 insertions(+), 15 deletions(-)

lib/std/zig/system.zig+6-15
......@@ -325,22 +325,19 @@ pub const NativeTargetInfo = struct {
325325 // native CPU architecture as being different than the current target), we use this:
326326 const cpu_arch = cross_target.getCpuArch();
327327
328 const cpu = switch (cross_target.cpu_model) {
328 var cpu = switch (cross_target.cpu_model) {
329329 .native => detectNativeCpuAndFeatures(cpu_arch, os, cross_target),
330 .baseline => baselineCpuAndFeatures(cpu_arch, cross_target),
330 .baseline => Target.Cpu.baseline(cpu_arch),
331331 .determined_by_cpu_arch => if (cross_target.cpu_arch == null)
332332 detectNativeCpuAndFeatures(cpu_arch, os, cross_target)
333333 else
334 baselineCpuAndFeatures(cpu_arch, cross_target),
335 .explicit => |model| blk: {
336 var adjusted_model = model.toCpu(cpu_arch);
337 cross_target.updateCpuFeatures(&adjusted_model.features);
338 break :blk adjusted_model;
339 },
334 Target.Cpu.baseline(cpu_arch),
335 .explicit => |model| model.toCpu(cpu_arch),
340336 } orelse backup_cpu_detection: {
341337 cpu_detection_unimplemented = true;
342 break :backup_cpu_detection baselineCpuAndFeatures(cpu_arch, cross_target);
338 break :backup_cpu_detection Target.Cpu.baseline(cpu_arch);
343339 };
340 cross_target.updateCpuFeatures(&cpu.features);
344341
345342 var target = try detectAbiAndDynamicLinker(allocator, cpu, os, cross_target);
346343 target.cpu_detection_unimplemented = cpu_detection_unimplemented;
......@@ -884,10 +881,4 @@ pub const NativeTargetInfo = struct {
884881 },
885882 }
886883 }
887
888 fn baselineCpuAndFeatures(cpu_arch: Target.Cpu.Arch, cross_target: CrossTarget) Target.Cpu {
889 var adjusted_baseline = Target.Cpu.baseline(cpu_arch);
890 cross_target.updateCpuFeatures(&adjusted_baseline.features);
891 return adjusted_baseline;
892 }
893884};