| ... | @@ -8441,7 +8441,7 @@ fn zirErrorFromInt(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstD | ... | @@ -8441,7 +8441,7 @@ fn zirErrorFromInt(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstD |
| 8441 | const is_lt_len = try block.addUnOp(.cmp_lt_errors_len, operand); | 8441 | const is_lt_len = try block.addUnOp(.cmp_lt_errors_len, operand); |
| 8442 | const zero_val = Air.internedToRef((try mod.intValue(Type.err_int, 0)).toIntern()); | 8442 | const zero_val = Air.internedToRef((try mod.intValue(Type.err_int, 0)).toIntern()); |
| 8443 | const is_non_zero = try block.addBinOp(.cmp_neq, operand, zero_val); | 8443 | const is_non_zero = try block.addBinOp(.cmp_neq, operand, zero_val); |
| 8444 | const ok = try block.addBinOp(.bit_and, is_lt_len, is_non_zero); | 8444 | const ok = try block.addBinOp(.bool_and, is_lt_len, is_non_zero); |
| 8445 | try sema.addSafetyCheck(block, src, ok, .invalid_error_code); | 8445 | try sema.addSafetyCheck(block, src, ok, .invalid_error_code); |
| 8446 | } | 8446 | } |
| 8447 | return block.addInst(.{ | 8447 | return block.addInst(.{ |
| ... | @@ -21903,7 +21903,7 @@ fn zirErrorCast(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstData | ... | @@ -21903,7 +21903,7 @@ fn zirErrorCast(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstData |
| 21903 | } else { | 21903 | } else { |
| 21904 | // Error must be in destination set or zero. | 21904 | // Error must be in destination set or zero. |
| 21905 | const has_value = try block.addTyOp(.error_set_has_value, dest_ty, err_code); | 21905 | const has_value = try block.addTyOp(.error_set_has_value, dest_ty, err_code); |
| 21906 | const ok = try block.addBinOp(.bit_or, has_value, is_zero); | 21906 | const ok = try block.addBinOp(.bool_or, has_value, is_zero); |
| 21907 | try sema.addSafetyCheck(block, src, ok, .invalid_error_code); | 21907 | try sema.addSafetyCheck(block, src, ok, .invalid_error_code); |
| 21908 | } | 21908 | } |
| 21909 | } else { | 21909 | } else { |
| ... | @@ -22268,7 +22268,7 @@ fn ptrCastFull( | ... | @@ -22268,7 +22268,7 @@ fn ptrCastFull( |
| 22268 | const ok = if (src_info.flags.size == .Slice and dest_info.flags.size == .Slice) ok: { | 22268 | const ok = if (src_info.flags.size == .Slice and dest_info.flags.size == .Slice) ok: { |
| 22269 | const len = try sema.analyzeSliceLen(block, operand_src, ptr); | 22269 | const len = try sema.analyzeSliceLen(block, operand_src, ptr); |
| 22270 | const len_zero = try block.addBinOp(.cmp_eq, len, .zero_usize); | 22270 | const len_zero = try block.addBinOp(.cmp_eq, len, .zero_usize); |
| 22271 | break :ok try block.addBinOp(.bit_or, len_zero, is_non_zero); | 22271 | break :ok try block.addBinOp(.bool_or, len_zero, is_non_zero); |
| 22272 | } else is_non_zero; | 22272 | } else is_non_zero; |
| 22273 | try sema.addSafetyCheck(block, src, ok, .cast_to_null); | 22273 | try sema.addSafetyCheck(block, src, ok, .cast_to_null); |
| 22274 | } | 22274 | } |
| ... | @@ -22285,7 +22285,7 @@ fn ptrCastFull( | ... | @@ -22285,7 +22285,7 @@ fn ptrCastFull( |
| 22285 | const ok = if (src_info.flags.size == .Slice and dest_info.flags.size == .Slice) ok: { | 22285 | const ok = if (src_info.flags.size == .Slice and dest_info.flags.size == .Slice) ok: { |
| 22286 | const len = try sema.analyzeSliceLen(block, operand_src, ptr); | 22286 | const len = try sema.analyzeSliceLen(block, operand_src, ptr); |
| 22287 | const len_zero = try block.addBinOp(.cmp_eq, len, .zero_usize); | 22287 | const len_zero = try block.addBinOp(.cmp_eq, len, .zero_usize); |
| 22288 | break :ok try block.addBinOp(.bit_or, len_zero, is_aligned); | 22288 | break :ok try block.addBinOp(.bool_or, len_zero, is_aligned); |
| 22289 | } else is_aligned; | 22289 | } else is_aligned; |
| 22290 | try sema.addSafetyCheck(block, src, ok, .incorrect_alignment); | 22290 | try sema.addSafetyCheck(block, src, ok, .incorrect_alignment); |
| 22291 | } | 22291 | } |
| ... | @@ -24633,7 +24633,7 @@ fn zirMemcpy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void | ... | @@ -24633,7 +24633,7 @@ fn zirMemcpy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void |
| 24633 | const dest_plus_len = try sema.analyzePtrArithmetic(block, src, raw_dest_ptr, len, .ptr_add, dest_src, src); | 24633 | const dest_plus_len = try sema.analyzePtrArithmetic(block, src, raw_dest_ptr, len, .ptr_add, dest_src, src); |
| 24634 | const ok1 = try block.addBinOp(.cmp_gte, raw_dest_ptr, src_plus_len); | 24634 | const ok1 = try block.addBinOp(.cmp_gte, raw_dest_ptr, src_plus_len); |
| 24635 | const ok2 = try block.addBinOp(.cmp_gte, new_src_ptr, dest_plus_len); | 24635 | const ok2 = try block.addBinOp(.cmp_gte, new_src_ptr, dest_plus_len); |
| 24636 | const ok = try block.addBinOp(.bit_or, ok1, ok2); | 24636 | const ok = try block.addBinOp(.bool_or, ok1, ok2); |
| 24637 | try sema.addSafetyCheck(block, src, ok, .memcpy_alias); | 24637 | try sema.addSafetyCheck(block, src, ok, .memcpy_alias); |
| 24638 | } | 24638 | } |
| 24639 | | 24639 | |
| ... | @@ -30985,7 +30985,7 @@ fn coerceCompatiblePtrs( | ... | @@ -30985,7 +30985,7 @@ fn coerceCompatiblePtrs( |
| 30985 | const ok = if (inst_ty.isSlice(mod)) ok: { | 30985 | const ok = if (inst_ty.isSlice(mod)) ok: { |
| 30986 | const len = try sema.analyzeSliceLen(block, inst_src, inst); | 30986 | const len = try sema.analyzeSliceLen(block, inst_src, inst); |
| 30987 | const len_zero = try block.addBinOp(.cmp_eq, len, .zero_usize); | 30987 | const len_zero = try block.addBinOp(.cmp_eq, len, .zero_usize); |
| 30988 | break :ok try block.addBinOp(.bit_or, len_zero, is_non_zero); | 30988 | break :ok try block.addBinOp(.bool_or, len_zero, is_non_zero); |
| 30989 | } else is_non_zero; | 30989 | } else is_non_zero; |
| 30990 | try sema.addSafetyCheck(block, inst_src, ok, .cast_to_null); | 30990 | try sema.addSafetyCheck(block, inst_src, ok, .cast_to_null); |
| 30991 | } | 30991 | } |