| ... | ... | @@ -643,20 +643,20 @@ const Stage2TargetDetails = struct { |
| 643 | 643 | var builtin_str_buffer = try std.Buffer.init( |
| 644 | 644 | allocator, |
| 645 | 645 | "@import(\"std\").target.TargetDetails{.cpu=&@import(\"std\").target."); |
| 646 | | defer builtin_str_buffer.deinit(); |
| 647 | 646 | |
| 648 | 647 | try builtin_str_buffer.append(@tagName(arch)); |
| 649 | 648 | try builtin_str_buffer.append(".cpu_"); |
| 650 | 649 | try builtin_str_buffer.append(cpu.name); |
| 651 | 650 | try builtin_str_buffer.append("};"); |
| 651 | |
| 652 | 652 | return Self{ |
| 653 | 653 | .allocator = allocator, |
| 654 | 654 | .target_details = .{ |
| 655 | 655 | .cpu = cpu, |
| 656 | 656 | }, |
| 657 | | .llvm_cpu_str = try toNullTerminatedStringAlloc(allocator, cpu.name), |
| 657 | .llvm_cpu_str = try toNullTerminatedStringAlloc(allocator, cpu.llvm_name), |
| 658 | 658 | .llvm_features_str = null_terminated_empty_string, |
| 659 | | .builtin_str = builtin_str_buffer.toOwnedSlice(), |
| 659 | .builtin_str = builtin_str_buffer.toSliceConst(), |
| 660 | 660 | }; |
| 661 | 661 | } |
| 662 | 662 | |
| ... | ... | @@ -664,10 +664,8 @@ const Stage2TargetDetails = struct { |
| 664 | 664 | var builtin_str_buffer = try std.Buffer.init( |
| 665 | 665 | allocator, |
| 666 | 666 | "@import(\"std\").target.TargetDetails{.features=&[_]*const @import(\"std\").target.Feature{\n"); |
| 667 | | defer builtin_str_buffer.deinit(); |
| 668 | 667 | |
| 669 | 668 | var llvm_features_buffer = try std.Buffer.initSize(allocator, 0); |
| 670 | | defer llvm_features_buffer.deinit(); |
| 671 | 669 | |
| 672 | 670 | // First, disable all features. |
| 673 | 671 | // This way, we only get the ones the user requests. |
| ... | ... | @@ -691,17 +689,14 @@ const Stage2TargetDetails = struct { |
| 691 | 689 | |
| 692 | 690 | try builtin_str_buffer.append("}};"); |
| 693 | 691 | |
| 694 | | // This is needed here because llvm_features_buffer.len() is no longer valid after toOwnedSlice(). |
| 695 | | const llvm_features_buffer_len = llvm_features_buffer.len(); |
| 696 | | |
| 697 | 692 | return Self{ |
| 698 | 693 | .allocator = allocator, |
| 699 | 694 | .target_details = std.target.TargetDetails{ |
| 700 | 695 | .features = features, |
| 701 | 696 | }, |
| 702 | 697 | .llvm_cpu_str = null_terminated_empty_string, |
| 703 | | .llvm_features_str = llvm_features_buffer.toOwnedSlice()[0..llvm_features_buffer_len :0], |
| 704 | | .builtin_str = builtin_str_buffer.toOwnedSlice(), |
| 698 | .llvm_features_str = llvm_features_buffer.toSliceConst(), |
| 699 | .builtin_str = builtin_str_buffer.toSliceConst(), |
| 705 | 700 | }; |
| 706 | 701 | } |
| 707 | 702 | }; |