| ... | ... | @@ -2882,32 +2882,6 @@ static LLVMValueRef ir_render_cast(CodeGen *g, IrExecutable *executable, |
| 2882 | 2882 | gen_store_untyped(g, new_len, dest_len_ptr, 0, false); |
| 2883 | 2883 | |
| 2884 | 2884 | |
| 2885 | | return cast_instruction->tmp_ptr; |
| 2886 | | } |
| 2887 | | case CastOpBytesToSlice: |
| 2888 | | { |
| 2889 | | assert(cast_instruction->tmp_ptr); |
| 2890 | | assert(wanted_type->id == ZigTypeIdStruct); |
| 2891 | | assert(wanted_type->data.structure.is_slice); |
| 2892 | | assert(actual_type->id == ZigTypeIdArray); |
| 2893 | | |
| 2894 | | ZigType *wanted_pointer_type = wanted_type->data.structure.fields[slice_ptr_index].type_entry; |
| 2895 | | ZigType *wanted_child_type = wanted_pointer_type->data.pointer.child_type; |
| 2896 | | |
| 2897 | | |
| 2898 | | size_t wanted_ptr_index = wanted_type->data.structure.fields[0].gen_index; |
| 2899 | | LLVMValueRef dest_ptr_ptr = LLVMBuildStructGEP(g->builder, cast_instruction->tmp_ptr, |
| 2900 | | (unsigned)wanted_ptr_index, ""); |
| 2901 | | LLVMValueRef src_ptr_casted = LLVMBuildBitCast(g->builder, expr_val, wanted_pointer_type->type_ref, ""); |
| 2902 | | gen_store_untyped(g, src_ptr_casted, dest_ptr_ptr, 0, false); |
| 2903 | | |
| 2904 | | size_t wanted_len_index = wanted_type->data.structure.fields[1].gen_index; |
| 2905 | | LLVMValueRef len_ptr = LLVMBuildStructGEP(g->builder, cast_instruction->tmp_ptr, |
| 2906 | | (unsigned)wanted_len_index, ""); |
| 2907 | | LLVMValueRef len_val = LLVMConstInt(g->builtin_types.entry_usize->type_ref, |
| 2908 | | actual_type->data.array.len / type_size(g, wanted_child_type), false); |
| 2909 | | gen_store_untyped(g, len_val, len_ptr, 0, false); |
| 2910 | | |
| 2911 | 2885 | return cast_instruction->tmp_ptr; |
| 2912 | 2886 | } |
| 2913 | 2887 | case CastOpIntToFloat: |