| ... | ... | @@ -5771,6 +5771,7 @@ pub const FuncGen = struct { |
| 5771 | 5771 | try o.builder.intValue(.i8, 0xaa), |
| 5772 | 5772 | len, |
| 5773 | 5773 | if (ptr_ty.isVolatilePtr(zcu)) .@"volatile" else .normal, |
| 5774 | self.ng.ownerModule().no_builtin, |
| 5774 | 5775 | ); |
| 5775 | 5776 | const owner_mod = self.ng.ownerModule(); |
| 5776 | 5777 | if (owner_mod.valgrind) { |
| ... | ... | @@ -5821,6 +5822,7 @@ pub const FuncGen = struct { |
| 5821 | 5822 | try o.builder.intValue(.i8, 0xaa), |
| 5822 | 5823 | len, |
| 5823 | 5824 | .normal, |
| 5825 | self.ng.ownerModule().no_builtin, |
| 5824 | 5826 | ); |
| 5825 | 5827 | const owner_mod = self.ng.ownerModule(); |
| 5826 | 5828 | if (owner_mod.valgrind) { |
| ... | ... | @@ -5902,7 +5904,7 @@ pub const FuncGen = struct { |
| 5902 | 5904 | const result_alignment = va_list_ty.abiAlignment(pt.zcu).toLlvm(); |
| 5903 | 5905 | const dest_list = try self.buildAllocaWorkaround(va_list_ty, result_alignment); |
| 5904 | 5906 | |
| 5905 | | _ = try self.wip.callIntrinsic(.normal, .none, .va_copy, &.{}, &.{ dest_list, src_list }, ""); |
| 5907 | _ = try self.wip.callIntrinsic(.normal, .none, .va_copy, &.{dest_list.typeOfWip(&self.wip)}, &.{ dest_list, src_list }, ""); |
| 5906 | 5908 | return if (isByRef(va_list_ty, zcu)) |
| 5907 | 5909 | dest_list |
| 5908 | 5910 | else |
| ... | ... | @@ -5913,7 +5915,7 @@ pub const FuncGen = struct { |
| 5913 | 5915 | const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op; |
| 5914 | 5916 | const src_list = try self.resolveInst(un_op); |
| 5915 | 5917 | |
| 5916 | | _ = try self.wip.callIntrinsic(.normal, .none, .va_end, &.{}, &.{src_list}, ""); |
| 5918 | _ = try self.wip.callIntrinsic(.normal, .none, .va_end, &.{src_list.typeOfWip(&self.wip)}, &.{src_list}, ""); |
| 5917 | 5919 | return .none; |
| 5918 | 5920 | } |
| 5919 | 5921 | |
| ... | ... | @@ -5927,7 +5929,7 @@ pub const FuncGen = struct { |
| 5927 | 5929 | const result_alignment = va_list_ty.abiAlignment(pt.zcu).toLlvm(); |
| 5928 | 5930 | const dest_list = try self.buildAllocaWorkaround(va_list_ty, result_alignment); |
| 5929 | 5931 | |
| 5930 | | _ = try self.wip.callIntrinsic(.normal, .none, .va_start, &.{}, &.{dest_list}, ""); |
| 5932 | _ = try self.wip.callIntrinsic(.normal, .none, .va_start, &.{dest_list.typeOfWip(&self.wip)}, &.{dest_list}, ""); |
| 5931 | 5933 | return if (isByRef(va_list_ty, zcu)) |
| 5932 | 5934 | dest_list |
| 5933 | 5935 | else |
| ... | ... | @@ -9734,6 +9736,7 @@ pub const FuncGen = struct { |
| 9734 | 9736 | if (safety) try o.builder.intValue(.i8, 0xaa) else try o.builder.undefValue(.i8), |
| 9735 | 9737 | len, |
| 9736 | 9738 | if (ptr_ty.isVolatilePtr(zcu)) .@"volatile" else .normal, |
| 9739 | self.ng.ownerModule().no_builtin, |
| 9737 | 9740 | ); |
| 9738 | 9741 | if (safety and owner_mod.valgrind) { |
| 9739 | 9742 | try self.valgrindMarkUndef(dest_ptr, len); |
| ... | ... | @@ -10041,9 +10044,22 @@ pub const FuncGen = struct { |
| 10041 | 10044 | try o.builder.undefValue(.i8); |
| 10042 | 10045 | const len = try self.sliceOrArrayLenInBytes(dest_slice, ptr_ty); |
| 10043 | 10046 | if (intrinsic_len0_traps) { |
| 10044 | | try self.safeWasmMemset(dest_ptr, fill_byte, len, dest_ptr_align, access_kind); |
| 10047 | try self.safeWasmMemset( |
| 10048 | dest_ptr, |
| 10049 | fill_byte, |
| 10050 | len, |
| 10051 | dest_ptr_align, |
| 10052 | access_kind, |
| 10053 | ); |
| 10045 | 10054 | } else { |
| 10046 | | _ = try self.wip.callMemSet(dest_ptr, dest_ptr_align, fill_byte, len, access_kind); |
| 10055 | _ = try self.wip.callMemSet( |
| 10056 | dest_ptr, |
| 10057 | dest_ptr_align, |
| 10058 | fill_byte, |
| 10059 | len, |
| 10060 | access_kind, |
| 10061 | self.ng.ownerModule().no_builtin, |
| 10062 | ); |
| 10047 | 10063 | } |
| 10048 | 10064 | const owner_mod = self.ng.ownerModule(); |
| 10049 | 10065 | if (safety and owner_mod.valgrind) { |
| ... | ... | @@ -10060,9 +10076,22 @@ pub const FuncGen = struct { |
| 10060 | 10076 | const fill_byte = try o.builder.intValue(.i8, byte_val); |
| 10061 | 10077 | const len = try self.sliceOrArrayLenInBytes(dest_slice, ptr_ty); |
| 10062 | 10078 | if (intrinsic_len0_traps) { |
| 10063 | | try self.safeWasmMemset(dest_ptr, fill_byte, len, dest_ptr_align, access_kind); |
| 10079 | try self.safeWasmMemset( |
| 10080 | dest_ptr, |
| 10081 | fill_byte, |
| 10082 | len, |
| 10083 | dest_ptr_align, |
| 10084 | access_kind, |
| 10085 | ); |
| 10064 | 10086 | } else { |
| 10065 | | _ = try self.wip.callMemSet(dest_ptr, dest_ptr_align, fill_byte, len, access_kind); |
| 10087 | _ = try self.wip.callMemSet( |
| 10088 | dest_ptr, |
| 10089 | dest_ptr_align, |
| 10090 | fill_byte, |
| 10091 | len, |
| 10092 | access_kind, |
| 10093 | self.ng.ownerModule().no_builtin, |
| 10094 | ); |
| 10066 | 10095 | } |
| 10067 | 10096 | return .none; |
| 10068 | 10097 | } |
| ... | ... | @@ -10077,9 +10106,22 @@ pub const FuncGen = struct { |
| 10077 | 10106 | const len = try self.sliceOrArrayLenInBytes(dest_slice, ptr_ty); |
| 10078 | 10107 | |
| 10079 | 10108 | if (intrinsic_len0_traps) { |
| 10080 | | try self.safeWasmMemset(dest_ptr, fill_byte, len, dest_ptr_align, access_kind); |
| 10109 | try self.safeWasmMemset( |
| 10110 | dest_ptr, |
| 10111 | fill_byte, |
| 10112 | len, |
| 10113 | dest_ptr_align, |
| 10114 | access_kind, |
| 10115 | ); |
| 10081 | 10116 | } else { |
| 10082 | | _ = try self.wip.callMemSet(dest_ptr, dest_ptr_align, fill_byte, len, access_kind); |
| 10117 | _ = try self.wip.callMemSet( |
| 10118 | dest_ptr, |
| 10119 | dest_ptr_align, |
| 10120 | fill_byte, |
| 10121 | len, |
| 10122 | access_kind, |
| 10123 | self.ng.ownerModule().no_builtin, |
| 10124 | ); |
| 10083 | 10125 | } |
| 10084 | 10126 | return .none; |
| 10085 | 10127 | } |
| ... | ... | @@ -10131,6 +10173,7 @@ pub const FuncGen = struct { |
| 10131 | 10173 | elem_abi_align.toLlvm(), |
| 10132 | 10174 | try o.builder.intValue(llvm_usize_ty, elem_abi_size), |
| 10133 | 10175 | access_kind, |
| 10176 | self.ng.ownerModule().no_builtin, |
| 10134 | 10177 | ); |
| 10135 | 10178 | } else _ = try self.wip.store(access_kind, value, it_ptr.toValue(), it_ptr_align); |
| 10136 | 10179 | const next_ptr = try self.wip.gep(.inbounds, elem_llvm_ty, it_ptr.toValue(), &.{ |
| ... | ... | @@ -10158,7 +10201,14 @@ pub const FuncGen = struct { |
| 10158 | 10201 | const end_block = try self.wip.block(2, "MemsetTrapEnd"); |
| 10159 | 10202 | _ = try self.wip.brCond(cond, memset_block, end_block, .none); |
| 10160 | 10203 | self.wip.cursor = .{ .block = memset_block }; |
| 10161 | | _ = try self.wip.callMemSet(dest_ptr, dest_ptr_align, fill_byte, len, access_kind); |
| 10204 | _ = try self.wip.callMemSet( |
| 10205 | dest_ptr, |
| 10206 | dest_ptr_align, |
| 10207 | fill_byte, |
| 10208 | len, |
| 10209 | access_kind, |
| 10210 | self.ng.ownerModule().no_builtin, |
| 10211 | ); |
| 10162 | 10212 | _ = try self.wip.br(end_block); |
| 10163 | 10213 | self.wip.cursor = .{ .block = end_block }; |
| 10164 | 10214 | } |
| ... | ... | @@ -10200,6 +10250,7 @@ pub const FuncGen = struct { |
| 10200 | 10250 | src_ptr_ty.ptrAlignment(zcu).toLlvm(), |
| 10201 | 10251 | len, |
| 10202 | 10252 | access_kind, |
| 10253 | self.ng.ownerModule().no_builtin, |
| 10203 | 10254 | ); |
| 10204 | 10255 | _ = try self.wip.br(end_block); |
| 10205 | 10256 | self.wip.cursor = .{ .block = end_block }; |
| ... | ... | @@ -10213,6 +10264,7 @@ pub const FuncGen = struct { |
| 10213 | 10264 | src_ptr_ty.ptrAlignment(zcu).toLlvm(), |
| 10214 | 10265 | len, |
| 10215 | 10266 | access_kind, |
| 10267 | self.ng.ownerModule().no_builtin, |
| 10216 | 10268 | ); |
| 10217 | 10269 | return .none; |
| 10218 | 10270 | } |
| ... | ... | @@ -11346,6 +11398,7 @@ pub const FuncGen = struct { |
| 11346 | 11398 | ptr_alignment, |
| 11347 | 11399 | try o.builder.intValue(try o.lowerType(Type.usize), size_bytes), |
| 11348 | 11400 | access_kind, |
| 11401 | fg.ng.ownerModule().no_builtin, |
| 11349 | 11402 | ); |
| 11350 | 11403 | return result_ptr; |
| 11351 | 11404 | } |
| ... | ... | @@ -11513,6 +11566,7 @@ pub const FuncGen = struct { |
| 11513 | 11566 | elem_ty.abiAlignment(zcu).toLlvm(), |
| 11514 | 11567 | try o.builder.intValue(try o.lowerType(Type.usize), elem_ty.abiSize(zcu)), |
| 11515 | 11568 | access_kind, |
| 11569 | self.ng.ownerModule().no_builtin, |
| 11516 | 11570 | ); |
| 11517 | 11571 | } |
| 11518 | 11572 | |