| ... | ... | @@ -57,7 +57,6 @@ pub const expected_fields_len = 32; |
| 57 | 57 | pub const expected_gep_indices_len = 8; |
| 58 | 58 | pub const expected_cases_len = 8; |
| 59 | 59 | pub const expected_incoming_len = 8; |
| 60 | | pub const expected_intrinsic_name_len = 64; |
| 61 | 60 | |
| 62 | 61 | pub const Options = struct { |
| 63 | 62 | allocator: Allocator, |
| ... | ... | @@ -2180,7 +2179,7 @@ pub const Global = struct { |
| 2180 | 2179 | |
| 2181 | 2180 | return .{ |
| 2182 | 2181 | .offset = builder.string_indices.items[name_index], |
| 2183 | | .size = builder.string_indices.items[name_index + 1] - builder.string_indices.items[name_index] - 1, |
| 2182 | .size = builder.string_indices.items[name_index + 1] - builder.string_indices.items[name_index], |
| 2184 | 2183 | }; |
| 2185 | 2184 | } |
| 2186 | 2185 | |
| ... | ... | @@ -8430,10 +8429,19 @@ pub fn fmt(self: *Builder, comptime fmt_str: []const u8, fmt_args: anytype) Allo |
| 8430 | 8429 | } |
| 8431 | 8430 | |
| 8432 | 8431 | pub fn fmtAssumeCapacity(self: *Builder, comptime fmt_str: []const u8, fmt_args: anytype) String { |
| 8433 | | const start = self.string_bytes.items.len; |
| 8434 | 8432 | self.string_bytes.writer(undefined).print(fmt_str, fmt_args) catch unreachable; |
| 8435 | | const bytes: []const u8 = self.string_bytes.items[start..]; |
| 8433 | return self.trailingStringAssumeCapacity(); |
| 8434 | } |
| 8435 | |
| 8436 | pub fn trailingString(self: *Builder) Allocator.Error!String { |
| 8437 | try self.string_indices.ensureUnusedCapacity(self.gpa, 1); |
| 8438 | try self.string_map.ensureUnusedCapacity(self.gpa, 1); |
| 8439 | return self.trailingStringAssumeCapacity(); |
| 8440 | } |
| 8436 | 8441 | |
| 8442 | pub fn trailingStringAssumeCapacity(self: *Builder) String { |
| 8443 | const start = self.string_indices.getLast(); |
| 8444 | const bytes: []const u8 = self.string_bytes.items[start..]; |
| 8437 | 8445 | const gop = self.string_map.getOrPutAssumeCapacityAdapted(bytes, String.Adapter{ .builder = self }); |
| 8438 | 8446 | if (gop.found_existing) { |
| 8439 | 8447 | self.string_bytes.shrinkRetainingCapacity(start); |
| ... | ... | @@ -8678,7 +8686,6 @@ pub fn getIntrinsic( |
| 8678 | 8686 | overload: []const Type, |
| 8679 | 8687 | ) Allocator.Error!Function.Index { |
| 8680 | 8688 | const ExpectedContents = extern union { |
| 8681 | | name: [expected_intrinsic_name_len]u8, |
| 8682 | 8689 | attrs: extern struct { |
| 8683 | 8690 | params: [expected_args_len]Type, |
| 8684 | 8691 | fn_attrs: [FunctionAttributes.params_index + expected_args_len]Attributes, |
| ... | ... | @@ -8691,12 +8698,10 @@ pub fn getIntrinsic( |
| 8691 | 8698 | const allocator = stack.get(); |
| 8692 | 8699 | |
| 8693 | 8700 | const name = name: { |
| 8694 | | var buffer = std.ArrayList(u8).init(allocator); |
| 8695 | | defer buffer.deinit(); |
| 8696 | | |
| 8697 | | try buffer.writer().print("llvm.{s}", .{@tagName(id)}); |
| 8698 | | for (overload) |ty| try buffer.writer().print(".{m}", .{ty.fmt(self)}); |
| 8699 | | break :name try self.string(buffer.items); |
| 8701 | const writer = self.string_bytes.writer(self.gpa); |
| 8702 | try writer.print("llvm.{s}", .{@tagName(id)}); |
| 8703 | for (overload) |ty| try writer.print(".{m}", .{ty.fmt(self)}); |
| 8704 | break :name try self.trailingString(); |
| 8700 | 8705 | }; |
| 8701 | 8706 | if (self.getGlobal(name)) |global| return global.ptrConst(self).kind.function; |
| 8702 | 8707 | |
| ... | ... | @@ -11750,9 +11755,7 @@ pub fn metadataString(self: *Builder, bytes: []const u8) Allocator.Error!Metadat |
| 11750 | 11755 | |
| 11751 | 11756 | pub fn metadataStringFromString(self: *Builder, str: String) Allocator.Error!MetadataString { |
| 11752 | 11757 | if (str == .none or str == .empty) return MetadataString.none; |
| 11753 | | |
| 11754 | | const slice = str.slice(self) orelse unreachable; |
| 11755 | | return try self.metadataString(slice); |
| 11758 | return try self.metadataString(str.slice(self).?); |
| 11756 | 11759 | } |
| 11757 | 11760 | |
| 11758 | 11761 | pub fn metadataStringFmt(self: *Builder, comptime fmt_str: []const u8, fmt_args: anytype) Allocator.Error!MetadataString { |
| ... | ... | @@ -11763,10 +11766,19 @@ pub fn metadataStringFmt(self: *Builder, comptime fmt_str: []const u8, fmt_args: |
| 11763 | 11766 | } |
| 11764 | 11767 | |
| 11765 | 11768 | pub fn metadataStringFmtAssumeCapacity(self: *Builder, comptime fmt_str: []const u8, fmt_args: anytype) MetadataString { |
| 11766 | | const start = self.metadata_string_bytes.items.len; |
| 11767 | 11769 | self.metadata_string_bytes.writer(undefined).print(fmt_str, fmt_args) catch unreachable; |
| 11768 | | const bytes: []const u8 = self.metadata_string_bytes.items[start..]; |
| 11770 | return self.trailingMetadataStringAssumeCapacity(); |
| 11771 | } |
| 11772 | |
| 11773 | pub fn trailingMetadataString(self: *Builder) Allocator.Error!MetadataString { |
| 11774 | try self.metadata_string_indices.ensureUnusedCapacity(self.gpa, 1); |
| 11775 | try self.metadata_string_map.ensureUnusedCapacity(self.gpa, 1); |
| 11776 | return self.trailingMetadataStringAssumeCapacity(); |
| 11777 | } |
| 11769 | 11778 | |
| 11779 | pub fn trailingMetadataStringAssumeCapacity(self: *Builder) MetadataString { |
| 11780 | const start = self.metadata_string_indices.getLast(); |
| 11781 | const bytes: []const u8 = self.metadata_string_bytes.items[start..]; |
| 11770 | 11782 | const gop = self.metadata_string_map.getOrPutAssumeCapacityAdapted(bytes, String.Adapter{ .builder = self }); |
| 11771 | 11783 | if (gop.found_existing) { |
| 11772 | 11784 | self.metadata_string_bytes.shrinkRetainingCapacity(start); |