| ... | ... | @@ -10982,7 +10982,6 @@ static IrInstruction *ir_get_deref(IrAnalyze *ira, IrInstruction *source_instruc |
| 10982 | 10982 | ptr->value.data.x_ptr.mut == ConstPtrMutComptimeVar) |
| 10983 | 10983 | { |
| 10984 | 10984 | ConstExprValue *pointee = const_ptr_pointee(ira->codegen, &ptr->value); |
| 10985 | | if (!pointee) return ira->codegen->invalid_instruction; |
| 10986 | 10985 | if (pointee->special != ConstValSpecialRuntime) { |
| 10987 | 10986 | IrInstruction *result = ir_create_const(&ira->new_irb, source_instruction->scope, |
| 10988 | 10987 | source_instruction->source_node, child_type); |
| ... | ... | @@ -13656,7 +13655,6 @@ static TypeTableEntry *ir_analyze_dereference(IrAnalyze *ira, IrInstructionUnOp |
| 13656 | 13655 | return ira->codegen->builtin_types.entry_invalid; |
| 13657 | 13656 | |
| 13658 | 13657 | ConstExprValue *pointee = const_ptr_pointee(ira->codegen, comptime_value); |
| 13659 | | if (!pointee) return ira->codegen->builtin_types.entry_invalid; |
| 13660 | 13658 | if (pointee->type == child_type) { |
| 13661 | 13659 | ConstExprValue *out_val = ir_build_const_from(ira, &un_op_instruction->base); |
| 13662 | 13660 | copy_const_val(out_val, pointee, value->value.data.x_ptr.mut == ConstPtrMutComptimeConst); |
| ... | ... | @@ -14060,7 +14058,6 @@ static TypeTableEntry *ir_analyze_instruction_elem_ptr(IrAnalyze *ira, IrInstruc |
| 14060 | 14058 | ptr_type = ptr_type->data.pointer.child_type; |
| 14061 | 14059 | if (orig_array_ptr_val->special != ConstValSpecialRuntime) { |
| 14062 | 14060 | orig_array_ptr_val = const_ptr_pointee(ira->codegen, orig_array_ptr_val); |
| 14063 | | if (!orig_array_ptr_val) return ira->codegen->builtin_types.entry_invalid; |
| 14064 | 14061 | } |
| 14065 | 14062 | } |
| 14066 | 14063 | if (array_type->data.array.len == 0) { |
| ... | ... | @@ -14102,7 +14099,6 @@ static TypeTableEntry *ir_analyze_instruction_elem_ptr(IrAnalyze *ira, IrInstruc |
| 14102 | 14099 | if (!ptr_val) |
| 14103 | 14100 | return ira->codegen->builtin_types.entry_invalid; |
| 14104 | 14101 | ConstExprValue *args_val = const_ptr_pointee(ira->codegen, ptr_val); |
| 14105 | | if (!args_val) return ira->codegen->builtin_types.entry_invalid; |
| 14106 | 14102 | size_t start = args_val->data.x_arg_tuple.start_index; |
| 14107 | 14103 | size_t end = args_val->data.x_arg_tuple.end_index; |
| 14108 | 14104 | uint64_t elem_index_val; |
| ... | ... | @@ -14384,7 +14380,6 @@ static IrInstruction *ir_analyze_container_field_ptr(IrAnalyze *ira, Buf *field_ |
| 14384 | 14380 | |
| 14385 | 14381 | if (ptr_val->data.x_ptr.special != ConstPtrSpecialHardCodedAddr) { |
| 14386 | 14382 | ConstExprValue *struct_val = const_ptr_pointee(ira->codegen, ptr_val); |
| 14387 | | if (!struct_val) return ira->codegen->invalid_instruction; |
| 14388 | 14383 | if (type_is_invalid(struct_val->type)) |
| 14389 | 14384 | return ira->codegen->invalid_instruction; |
| 14390 | 14385 | ConstExprValue *field_val = &struct_val->data.x_struct.fields[field->src_index]; |
| ... | ... | @@ -14427,7 +14422,6 @@ static IrInstruction *ir_analyze_container_field_ptr(IrAnalyze *ira, Buf *field_ |
| 14427 | 14422 | |
| 14428 | 14423 | if (ptr_val->data.x_ptr.special != ConstPtrSpecialHardCodedAddr) { |
| 14429 | 14424 | ConstExprValue *union_val = const_ptr_pointee(ira->codegen, ptr_val); |
| 14430 | | if (!union_val) return ira->codegen->invalid_instruction; |
| 14431 | 14425 | if (type_is_invalid(union_val->type)) |
| 14432 | 14426 | return ira->codegen->invalid_instruction; |
| 14433 | 14427 | |
| ... | ... | @@ -14624,7 +14618,6 @@ static TypeTableEntry *ir_analyze_instruction_field_ptr(IrAnalyze *ira, IrInstru |
| 14624 | 14618 | |
| 14625 | 14619 | assert(container_ptr->value.type->id == TypeTableEntryIdPointer); |
| 14626 | 14620 | ConstExprValue *child_val = const_ptr_pointee(ira->codegen, container_ptr_val); |
| 14627 | | if (!child_val) return ira->codegen->builtin_types.entry_invalid; |
| 14628 | 14621 | |
| 14629 | 14622 | if (buf_eql_str(field_name, "len")) { |
| 14630 | 14623 | ConstExprValue *len_val = create_const_vals(1); |
| ... | ... | @@ -14649,7 +14642,6 @@ static TypeTableEntry *ir_analyze_instruction_field_ptr(IrAnalyze *ira, IrInstru |
| 14649 | 14642 | |
| 14650 | 14643 | assert(container_ptr->value.type->id == TypeTableEntryIdPointer); |
| 14651 | 14644 | ConstExprValue *child_val = const_ptr_pointee(ira->codegen, container_ptr_val); |
| 14652 | | if (!child_val) return ira->codegen->builtin_types.entry_invalid; |
| 14653 | 14645 | TypeTableEntry *child_type = child_val->data.x_type; |
| 14654 | 14646 | |
| 14655 | 14647 | if (type_is_invalid(child_type)) { |
| ... | ... | @@ -14918,7 +14910,6 @@ static TypeTableEntry *ir_analyze_instruction_field_ptr(IrAnalyze *ira, IrInstru |
| 14918 | 14910 | return ira->codegen->builtin_types.entry_invalid; |
| 14919 | 14911 | |
| 14920 | 14912 | ConstExprValue *namespace_val = const_ptr_pointee(ira->codegen, container_ptr_val); |
| 14921 | | if (!namespace_val) return ira->codegen->builtin_types.entry_invalid; |
| 14922 | 14913 | assert(namespace_val->special == ConstValSpecialStatic); |
| 14923 | 14914 | |
| 14924 | 14915 | ImportTableEntry *namespace_import = namespace_val->data.x_import; |
| ... | ... | @@ -14995,7 +14986,6 @@ static TypeTableEntry *ir_analyze_instruction_store_ptr(IrAnalyze *ira, IrInstru |
| 14995 | 14986 | if (ptr->value.data.x_ptr.mut == ConstPtrMutComptimeVar) { |
| 14996 | 14987 | if (instr_is_comptime(casted_value)) { |
| 14997 | 14988 | ConstExprValue *dest_val = const_ptr_pointee(ira->codegen, &ptr->value); |
| 14998 | | if (!dest_val) return ira->codegen->builtin_types.entry_invalid; |
| 14999 | 14989 | if (dest_val->special != ConstValSpecialRuntime) { |
| 15000 | 14990 | *dest_val = casted_value->value; |
| 15001 | 14991 | if (!ira->new_irb.current_basic_block->must_be_comptime_source_instr) { |
| ... | ... | @@ -15007,7 +14997,6 @@ static TypeTableEntry *ir_analyze_instruction_store_ptr(IrAnalyze *ira, IrInstru |
| 15007 | 14997 | ir_add_error(ira, &store_ptr_instruction->base, |
| 15008 | 14998 | buf_sprintf("cannot store runtime value in compile time variable")); |
| 15009 | 14999 | ConstExprValue *dest_val = const_ptr_pointee(ira->codegen, &ptr->value); |
| 15010 | | if (!dest_val) return ira->codegen->builtin_types.entry_invalid; |
| 15011 | 15000 | dest_val->type = ira->codegen->builtin_types.entry_invalid; |
| 15012 | 15001 | |
| 15013 | 15002 | return ira->codegen->builtin_types.entry_invalid; |
| ... | ... | @@ -15861,7 +15850,7 @@ static TypeTableEntry *ir_analyze_instruction_switch_target(IrAnalyze *ira, |
| 15861 | 15850 | ConstExprValue *pointee_val = nullptr; |
| 15862 | 15851 | if (instr_is_comptime(target_value_ptr)) { |
| 15863 | 15852 | pointee_val = const_ptr_pointee(ira->codegen, &target_value_ptr->value); |
| 15864 | | if (pointee_val && pointee_val->special == ConstValSpecialRuntime) |
| 15853 | if (pointee_val->special == ConstValSpecialRuntime) |
| 15865 | 15854 | pointee_val = nullptr; |
| 15866 | 15855 | } |
| 15867 | 15856 | if ((err = ensure_complete_type(ira->codegen, target_type))) |
| ... | ... | @@ -15992,7 +15981,6 @@ static TypeTableEntry *ir_analyze_instruction_switch_var(IrAnalyze *ira, IrInstr |
| 15992 | 15981 | return ira->codegen->builtin_types.entry_invalid; |
| 15993 | 15982 | |
| 15994 | 15983 | ConstExprValue *pointee_val = const_ptr_pointee(ira->codegen, target_val_ptr); |
| 15995 | | if (!pointee_val) return ira->codegen->builtin_types.entry_invalid; |
| 15996 | 15984 | ConstExprValue *out_val = ir_build_const_from(ira, &instruction->base); |
| 15997 | 15985 | out_val->data.x_ptr.special = ConstPtrSpecialRef; |
| 15998 | 15986 | out_val->data.x_ptr.mut = target_val_ptr->data.x_ptr.mut; |
| ... | ... | @@ -18744,14 +18732,11 @@ static TypeTableEntry *ir_analyze_instruction_slice(IrAnalyze *ira, IrInstructio |
| 18744 | 18732 | TypeTableEntry *child_array_type = array_type->data.pointer.child_type; |
| 18745 | 18733 | assert(child_array_type->id == TypeTableEntryIdArray); |
| 18746 | 18734 | parent_ptr = const_ptr_pointee(ira->codegen, &ptr_ptr->value); |
| 18747 | | if (!parent_ptr) return ira->codegen->builtin_types.entry_invalid; |
| 18748 | 18735 | array_val = const_ptr_pointee(ira->codegen, parent_ptr); |
| 18749 | | if (!array_val) return ira->codegen->builtin_types.entry_invalid; |
| 18750 | 18736 | rel_end = child_array_type->data.array.len; |
| 18751 | 18737 | abs_offset = 0; |
| 18752 | 18738 | } else { |
| 18753 | 18739 | array_val = const_ptr_pointee(ira->codegen, &ptr_ptr->value); |
| 18754 | | if (!array_val) return ira->codegen->builtin_types.entry_invalid; |
| 18755 | 18740 | rel_end = array_type->data.array.len; |
| 18756 | 18741 | parent_ptr = nullptr; |
| 18757 | 18742 | abs_offset = 0; |
| ... | ... | @@ -18759,7 +18744,6 @@ static TypeTableEntry *ir_analyze_instruction_slice(IrAnalyze *ira, IrInstructio |
| 18759 | 18744 | } else if (array_type->id == TypeTableEntryIdPointer) { |
| 18760 | 18745 | assert(array_type->data.pointer.ptr_len == PtrLenUnknown); |
| 18761 | 18746 | parent_ptr = const_ptr_pointee(ira->codegen, &ptr_ptr->value); |
| 18762 | | if (!parent_ptr) return ira->codegen->builtin_types.entry_invalid; |
| 18763 | 18747 | if (parent_ptr->special == ConstValSpecialUndef) { |
| 18764 | 18748 | array_val = nullptr; |
| 18765 | 18749 | abs_offset = 0; |
| ... | ... | @@ -18791,7 +18775,6 @@ static TypeTableEntry *ir_analyze_instruction_slice(IrAnalyze *ira, IrInstructio |
| 18791 | 18775 | } |
| 18792 | 18776 | } else if (is_slice(array_type)) { |
| 18793 | 18777 | ConstExprValue *slice_ptr = const_ptr_pointee(ira->codegen, &ptr_ptr->value); |
| 18794 | | if (!slice_ptr) return ira->codegen->builtin_types.entry_invalid; |
| 18795 | 18778 | parent_ptr = &slice_ptr->data.x_struct.fields[slice_ptr_index]; |
| 18796 | 18779 | ConstExprValue *len_val = &slice_ptr->data.x_struct.fields[slice_len_index]; |
| 18797 | 18780 | |
| ... | ... | @@ -19192,7 +19175,6 @@ static TypeTableEntry *ir_analyze_instruction_overflow_op(IrAnalyze *ira, IrInst |
| 19192 | 19175 | BigInt *op1_bigint = &casted_op1->value.data.x_bigint; |
| 19193 | 19176 | BigInt *op2_bigint = &casted_op2->value.data.x_bigint; |
| 19194 | 19177 | ConstExprValue *pointee_val = const_ptr_pointee(ira->codegen, &casted_result_ptr->value); |
| 19195 | | if (!pointee_val) return ira->codegen->builtin_types.entry_invalid; |
| 19196 | 19178 | BigInt *dest_bigint = &pointee_val->data.x_bigint; |
| 19197 | 19179 | switch (instruction->op) { |
| 19198 | 19180 | case IrOverflowOpAdd: |
| ... | ... | @@ -19293,7 +19275,6 @@ static TypeTableEntry *ir_analyze_instruction_unwrap_err_code(IrAnalyze *ira, |
| 19293 | 19275 | if (!ptr_val) |
| 19294 | 19276 | return ira->codegen->builtin_types.entry_invalid; |
| 19295 | 19277 | ConstExprValue *err_union_val = const_ptr_pointee(ira->codegen, ptr_val); |
| 19296 | | if (!err_union_val) return ira->codegen->builtin_types.entry_invalid; |
| 19297 | 19278 | if (err_union_val->special != ConstValSpecialRuntime) { |
| 19298 | 19279 | ErrorTableEntry *err = err_union_val->data.x_err_union.err; |
| 19299 | 19280 | assert(err); |
| ... | ... | @@ -19342,7 +19323,6 @@ static TypeTableEntry *ir_analyze_instruction_unwrap_err_payload(IrAnalyze *ira, |
| 19342 | 19323 | if (!ptr_val) |
| 19343 | 19324 | return ira->codegen->builtin_types.entry_invalid; |
| 19344 | 19325 | ConstExprValue *err_union_val = const_ptr_pointee(ira->codegen, ptr_val); |
| 19345 | | if (!err_union_val) return ira->codegen->builtin_types.entry_invalid; |
| 19346 | 19326 | if (err_union_val->special != ConstValSpecialRuntime) { |
| 19347 | 19327 | ErrorTableEntry *err = err_union_val->data.x_err_union.err; |
| 19348 | 19328 | if (err != nullptr) { |