| ... | @@ -649,12 +649,14 @@ const Stage2TargetDetails = struct { | ... | @@ -649,12 +649,14 @@ const Stage2TargetDetails = struct { |
| 649 | try builtin_str_buffer.append(cpu.name); | 649 | try builtin_str_buffer.append(cpu.name); |
| 650 | try builtin_str_buffer.append("};"); | 650 | try builtin_str_buffer.append("};"); |
| 651 | | 651 | |
| | 652 | const cpu_string = cpu.llvm_name orelse ""; |
| | 653 | |
| 652 | return Self{ | 654 | return Self{ |
| 653 | .allocator = allocator, | 655 | .allocator = allocator, |
| 654 | .target_details = .{ | 656 | .target_details = .{ |
| 655 | .cpu = cpu, | 657 | .cpu = cpu, |
| 656 | }, | 658 | }, |
| 657 | .llvm_cpu_str = try toNullTerminatedStringAlloc(allocator, cpu.llvm_name), | 659 | .llvm_cpu_str = try toNullTerminatedStringAlloc(allocator, cpu_string), |
| 658 | .llvm_features_str = null_terminated_empty_string, | 660 | .llvm_features_str = null_terminated_empty_string, |
| 659 | .builtin_str = builtin_str_buffer.toSliceConst(), | 661 | .builtin_str = builtin_str_buffer.toSliceConst(), |
| 660 | }; | 662 | }; |
| ... | @@ -670,21 +672,25 @@ const Stage2TargetDetails = struct { | ... | @@ -670,21 +672,25 @@ const Stage2TargetDetails = struct { |
| 670 | // First, disable all features. | 672 | // First, disable all features. |
| 671 | // This way, we only get the ones the user requests. | 673 | // This way, we only get the ones the user requests. |
| 672 | for (std.target.getFeaturesForArch(arch)) |feature| { | 674 | for (std.target.getFeaturesForArch(arch)) |feature| { |
| 673 | try llvm_features_buffer.append("-"); | 675 | if (feature.llvm_name) |llvm_name| { |
| 674 | try llvm_features_buffer.append(feature.llvm_name); | 676 | try llvm_features_buffer.append("-"); |
| 675 | try llvm_features_buffer.append(","); | 677 | try llvm_features_buffer.append(llvm_name); |
| | 678 | try llvm_features_buffer.append(","); |
| | 679 | } |
| 676 | } | 680 | } |
| 677 | | 681 | |
| 678 | for (features) |feature| { | 682 | for (features) |feature| { |
| 679 | try llvm_features_buffer.append("+"); | 683 | if (feature.llvm_name) |llvm_name| { |
| 680 | try llvm_features_buffer.append(feature.llvm_name); | 684 | try llvm_features_buffer.append("+"); |
| 681 | try llvm_features_buffer.append(","); | 685 | try llvm_features_buffer.append(llvm_name); |
| 682 | | 686 | try llvm_features_buffer.append(","); |
| 683 | try builtin_str_buffer.append("&@import(\"std\").target."); | 687 | |
| 684 | try builtin_str_buffer.append(@tagName(arch)); | 688 | try builtin_str_buffer.append("&@import(\"std\").target."); |
| 685 | try builtin_str_buffer.append(".feature_"); | 689 | try builtin_str_buffer.append(@tagName(arch)); |
| 686 | try builtin_str_buffer.append(feature.name); | 690 | try builtin_str_buffer.append(".feature_"); |
| 687 | try builtin_str_buffer.append(","); | 691 | try builtin_str_buffer.append(feature.name); |
| | 692 | try builtin_str_buffer.append(","); |
| | 693 | } |
| 688 | } | 694 | } |
| 689 | | 695 | |
| 690 | try builtin_str_buffer.append("}};"); | 696 | try builtin_str_buffer.append("}};"); |