| ... | ... | @@ -23084,17 +23084,22 @@ static IrInstruction *ir_analyze_instruction_slice(IrAnalyze *ira, IrInstruction |
| 23084 | 23084 | zig_unreachable(); |
| 23085 | 23085 | } |
| 23086 | 23086 | |
| 23087 | | uint64_t start_scalar = bigint_as_u64(&casted_start->value.data.x_bigint); |
| 23087 | ConstExprValue *start_val = ir_resolve_const(ira, casted_start, UndefBad); |
| 23088 | if (!start_val) |
| 23089 | return ira->codegen->invalid_instruction; |
| 23090 | |
| 23091 | uint64_t start_scalar = bigint_as_u64(&start_val->data.x_bigint); |
| 23088 | 23092 | if (!ptr_is_undef && start_scalar > rel_end) { |
| 23089 | 23093 | ir_add_error(ira, &instruction->base, buf_sprintf("out of bounds slice")); |
| 23090 | 23094 | return ira->codegen->invalid_instruction; |
| 23091 | 23095 | } |
| 23092 | 23096 | |
| 23093 | | uint64_t end_scalar; |
| 23097 | uint64_t end_scalar = rel_end; |
| 23094 | 23098 | if (end) { |
| 23095 | | end_scalar = bigint_as_u64(&end->value.data.x_bigint); |
| 23096 | | } else { |
| 23097 | | end_scalar = rel_end; |
| 23099 | ConstExprValue *end_val = ir_resolve_const(ira, end, UndefBad); |
| 23100 | if (!end_val) |
| 23101 | return ira->codegen->invalid_instruction; |
| 23102 | end_scalar = bigint_as_u64(&end_val->data.x_bigint); |
| 23098 | 23103 | } |
| 23099 | 23104 | if (!ptr_is_undef) { |
| 23100 | 23105 | if (end_scalar > rel_end) { |