| author | |
| committer | |
| log | 66b2477ab668447c6cbff68770de14ec8db991be |
| tree | 8d034ec7f295fca8fb8a79cb89d9f957f97adf0c |
| parent | ed23dad4877cd93fd684852b17e0e554ef71e297 |
3 files changed, 14 insertions(+), 1 deletions(-)
src/ir.cpp+5-1| ... | @@ -21149,7 +21149,11 @@ static IrInstGen *ir_analyze_instruction_elem_ptr(IrAnalyze *ira, IrInstSrcElemP | ... | @@ -21149,7 +21149,11 @@ static IrInstGen *ir_analyze_instruction_elem_ptr(IrAnalyze *ira, IrInstSrcElemP |
| 21149 | 21149 | ||
| 21150 | bool safety_check_on = elem_ptr_instruction->safety_check_on; | 21150 | bool safety_check_on = elem_ptr_instruction->safety_check_on; |
| 21151 | if (instr_is_comptime(casted_elem_index)) { | 21151 | if (instr_is_comptime(casted_elem_index)) { |
| 21152 | uint64_t index = bigint_as_u64(&casted_elem_index->value->data.x_bigint); | 21152 | ZigValue *index_val = ir_resolve_const(ira, casted_elem_index, UndefBad); |
| 21153 | if (index_val == nullptr) | ||
| 21154 | return ira->codegen->invalid_inst_gen; | ||
| 21155 | uint64_t index = bigint_as_u64(&index_val->data.x_bigint); | ||
| 21156 | |||
| 21153 | if (array_type->id == ZigTypeIdArray) { | 21157 | if (array_type->id == ZigTypeIdArray) { |
| 21154 | uint64_t array_len = array_type->data.array.len + | 21158 | uint64_t array_len = array_type->data.array.len + |
| 21155 | (array_type->data.array.sentinel != nullptr); | 21159 | (array_type->data.array.sentinel != nullptr); |
test/stage1/behavior.zig+1| ... | @@ -44,6 +44,7 @@ comptime { | ... | @@ -44,6 +44,7 @@ comptime { |
| 44 | _ = @import("behavior/bugs/4769_a.zig"); | 44 | _ = @import("behavior/bugs/4769_a.zig"); |
| 45 | _ = @import("behavior/bugs/4769_b.zig"); | 45 | _ = @import("behavior/bugs/4769_b.zig"); |
| 46 | _ = @import("behavior/bugs/4769_c.zig"); | 46 | _ = @import("behavior/bugs/4769_c.zig"); |
| 47 | _ = @import("behavior/bugs/4954.zig"); | ||
| 47 | _ = @import("behavior/bugs/394.zig"); | 48 | _ = @import("behavior/bugs/394.zig"); |
| 48 | _ = @import("behavior/bugs/421.zig"); | 49 | _ = @import("behavior/bugs/421.zig"); |
| 49 | _ = @import("behavior/bugs/529.zig"); | 50 | _ = @import("behavior/bugs/529.zig"); |
test/stage1/behavior/bugs/4954.zig created+8| ... | @@ -0,0 +1,8 @@ | ||
| 1 | fn f(buf: []u8) void { | ||
| 2 | var ptr = &buf[@sizeOf(u32)]; | ||
| 3 | } | ||
| 4 | |||
| 5 | test "crash" { | ||
| 6 | var buf: [4096]u8 = undefined; | ||
| 7 | f(&buf); | ||
| 8 | } | ||