| ... | ... | @@ -1276,16 +1276,16 @@ static LLVMValueRef get_add_error_return_trace_addr_fn(CodeGen *g) { |
| 1276 | 1276 | ZigType *slice_type = g->stack_trace_type->data.structure.fields[1]->type_entry; |
| 1277 | 1277 | size_t ptr_field_index = slice_type->data.structure.fields[slice_ptr_index]->gen_index; |
| 1278 | 1278 | LLVMValueRef ptr_field_ptr = LLVMBuildStructGEP2(g->builder, |
| 1279 | | LLVMGetGEPSourceElementType(addresses_field_ptr), |
| 1279 | ZigLLVMGetGEPResultElementType(addresses_field_ptr), |
| 1280 | 1280 | addresses_field_ptr, (unsigned)ptr_field_index, ""); |
| 1281 | 1281 | size_t len_field_index = slice_type->data.structure.fields[slice_len_index]->gen_index; |
| 1282 | 1282 | LLVMValueRef len_field_ptr = LLVMBuildStructGEP2(g->builder, |
| 1283 | | LLVMGetGEPSourceElementType(addresses_field_ptr), |
| 1283 | ZigLLVMGetGEPResultElementType(addresses_field_ptr), |
| 1284 | 1284 | addresses_field_ptr, (unsigned)len_field_index, ""); |
| 1285 | 1285 | |
| 1286 | | LLVMValueRef len_value = gen_load_untyped(g, LLVMGetGEPSourceElementType(len_field_ptr), |
| 1286 | LLVMValueRef len_value = gen_load_untyped(g, ZigLLVMGetGEPResultElementType(len_field_ptr), |
| 1287 | 1287 | len_field_ptr, 0, false, ""); |
| 1288 | | LLVMValueRef index_val = gen_load_untyped(g, LLVMGetGEPSourceElementType(index_field_ptr), |
| 1288 | LLVMValueRef index_val = gen_load_untyped(g, ZigLLVMGetGEPResultElementType(index_field_ptr), |
| 1289 | 1289 | index_field_ptr, 0, false, ""); |
| 1290 | 1290 | LLVMValueRef len_val_minus_one = LLVMBuildSub(g->builder, len_value, LLVMConstInt(usize_type_ref, 1, false), ""); |
| 1291 | 1291 | LLVMValueRef masked_val = LLVMBuildAnd(g->builder, index_val, len_val_minus_one, ""); |
| ... | ... | @@ -1293,7 +1293,7 @@ static LLVMValueRef get_add_error_return_trace_addr_fn(CodeGen *g) { |
| 1293 | 1293 | masked_val, |
| 1294 | 1294 | }; |
| 1295 | 1295 | |
| 1296 | | LLVMValueRef ptr_value = gen_load_untyped(g, LLVMGetGEPSourceElementType(ptr_field_ptr), |
| 1296 | LLVMValueRef ptr_value = gen_load_untyped(g, ZigLLVMGetGEPResultElementType(ptr_field_ptr), |
| 1297 | 1297 | ptr_field_ptr, 0, false, ""); |
| 1298 | 1298 | LLVMValueRef address_slot = LLVMBuildInBoundsGEP2(g->builder, usize_type_ref, ptr_value, address_indices, 1, ""); |
| 1299 | 1299 | |
| ... | ... | @@ -1455,22 +1455,19 @@ static LLVMValueRef get_safety_crash_err_fn(CodeGen *g) { |
| 1455 | 1455 | } |
| 1456 | 1456 | |
| 1457 | 1457 | // Fetch the error name from the global table |
| 1458 | | LLVMValueRef err_table_indices[] = { |
| 1459 | | LLVMConstNull(usize_ty->llvm_type), |
| 1460 | | err_val, |
| 1461 | | }; |
| 1458 | LLVMValueRef err_table_indices[] = { err_val }; |
| 1462 | 1459 | LLVMValueRef err_name_val = LLVMBuildInBoundsGEP2(g->builder, |
| 1463 | 1460 | get_llvm_type(g, str_type), |
| 1464 | 1461 | g->err_name_table, err_table_indices, 2, ""); |
| 1465 | 1462 | |
| 1466 | 1463 | LLVMValueRef ptr_field_ptr = LLVMBuildStructGEP2(g->builder, |
| 1467 | | LLVMGetGEPSourceElementType(err_name_val), err_name_val, slice_ptr_index, ""); |
| 1468 | | LLVMValueRef err_name_ptr = gen_load_untyped(g, LLVMGetGEPSourceElementType(ptr_field_ptr), |
| 1464 | ZigLLVMGetGEPResultElementType(err_name_val), err_name_val, slice_ptr_index, ""); |
| 1465 | LLVMValueRef err_name_ptr = gen_load_untyped(g, ZigLLVMGetGEPResultElementType(ptr_field_ptr), |
| 1469 | 1466 | ptr_field_ptr, 0, false, ""); |
| 1470 | 1467 | |
| 1471 | 1468 | LLVMValueRef len_field_ptr = LLVMBuildStructGEP2(g->builder, |
| 1472 | | LLVMGetGEPSourceElementType(err_name_val), err_name_val, slice_len_index, ""); |
| 1473 | | LLVMValueRef err_name_len = gen_load_untyped(g, LLVMGetGEPSourceElementType(len_field_ptr), |
| 1469 | ZigLLVMGetGEPResultElementType(err_name_val), err_name_val, slice_len_index, ""); |
| 1470 | LLVMValueRef err_name_len = gen_load_untyped(g, ZigLLVMGetGEPResultElementType(len_field_ptr), |
| 1474 | 1471 | len_field_ptr, 0, false, ""); |
| 1475 | 1472 | |
| 1476 | 1473 | LLVMValueRef msg_prefix_len = LLVMConstInt(usize_ty->llvm_type, strlen(unwrap_err_msg_text), false); |
| ... | ... | @@ -2374,7 +2371,7 @@ static bool iter_function_params_c_abi(CodeGen *g, ZigType *fn_type, FnWalk *fn_ |
| 2374 | 2371 | LLVMValueRef adjusted_ptr_to_struct = LLVMBuildStructGEP2(g->builder, |
| 2375 | 2372 | abi_type, val, i, ""); |
| 2376 | 2373 | LLVMValueRef loaded = LLVMBuildLoad2(g->builder, |
| 2377 | | LLVMGetGEPSourceElementType(adjusted_ptr_to_struct), |
| 2374 | ZigLLVMGetGEPResultElementType(adjusted_ptr_to_struct), |
| 2378 | 2375 | adjusted_ptr_to_struct, ""); |
| 2379 | 2376 | fn_walk->data.call.gen_param_values->append(loaded); |
| 2380 | 2377 | } |
| ... | ... | @@ -2621,18 +2618,18 @@ static LLVMValueRef get_merge_err_ret_traces_fn_val(CodeGen *g) { |
| 2621 | 2618 | ZigType *slice_type = g->stack_trace_type->data.structure.fields[1]->type_entry; |
| 2622 | 2619 | size_t ptr_field_index = slice_type->data.structure.fields[slice_ptr_index]->gen_index; |
| 2623 | 2620 | LLVMValueRef src_ptr_field_ptr = LLVMBuildStructGEP2(g->builder, |
| 2624 | | LLVMGetGEPSourceElementType(src_addresses_field_ptr), |
| 2621 | ZigLLVMGetGEPResultElementType(src_addresses_field_ptr), |
| 2625 | 2622 | src_addresses_field_ptr, (unsigned)ptr_field_index, ""); |
| 2626 | 2623 | size_t len_field_index = slice_type->data.structure.fields[slice_len_index]->gen_index; |
| 2627 | 2624 | LLVMValueRef src_len_field_ptr = LLVMBuildStructGEP2(g->builder, |
| 2628 | | LLVMGetGEPSourceElementType(src_addresses_field_ptr), |
| 2625 | ZigLLVMGetGEPResultElementType(src_addresses_field_ptr), |
| 2629 | 2626 | src_addresses_field_ptr, (unsigned)len_field_index, ""); |
| 2630 | 2627 | LLVMValueRef src_index_val = LLVMBuildLoad2(g->builder, |
| 2631 | | LLVMGetGEPSourceElementType(src_index_field_ptr), src_index_field_ptr, ""); |
| 2628 | ZigLLVMGetGEPResultElementType(src_index_field_ptr), src_index_field_ptr, ""); |
| 2632 | 2629 | LLVMValueRef src_ptr_val = LLVMBuildLoad2(g->builder, |
| 2633 | | LLVMGetGEPSourceElementType(src_ptr_field_ptr), src_ptr_field_ptr, ""); |
| 2630 | ZigLLVMGetGEPResultElementType(src_ptr_field_ptr), src_ptr_field_ptr, ""); |
| 2634 | 2631 | LLVMValueRef src_len_val = LLVMBuildLoad2(g->builder, |
| 2635 | | LLVMGetGEPSourceElementType(src_len_field_ptr), src_len_field_ptr, ""); |
| 2632 | ZigLLVMGetGEPResultElementType(src_len_field_ptr), src_len_field_ptr, ""); |
| 2636 | 2633 | LLVMValueRef no_wrap_bit = LLVMBuildICmp(g->builder, LLVMIntULT, src_index_val, src_len_val, ""); |
| 2637 | 2634 | LLVMBasicBlockRef no_wrap_block = LLVMAppendBasicBlock(fn_val, "NoWrap"); |
| 2638 | 2635 | LLVMBasicBlockRef yes_wrap_block = LLVMAppendBasicBlock(fn_val, "YesWrap"); |
| ... | ... | @@ -2658,7 +2655,7 @@ static LLVMValueRef get_merge_err_ret_traces_fn_val(CodeGen *g) { |
| 2658 | 2655 | LLVMValueRef ptr_index = LLVMBuildLoad2(g->builder, usize_type_ref, frame_index_ptr, ""); |
| 2659 | 2656 | LLVMValueRef addr_ptr = LLVMBuildInBoundsGEP2(g->builder, |
| 2660 | 2657 | usize_type_ref, src_ptr_val, &ptr_index, 1, ""); |
| 2661 | | LLVMValueRef this_addr_val = LLVMBuildLoad2(g->builder, LLVMGetGEPSourceElementType(addr_ptr), |
| 2658 | LLVMValueRef this_addr_val = LLVMBuildLoad2(g->builder, ZigLLVMGetGEPResultElementType(addr_ptr), |
| 2662 | 2659 | addr_ptr, ""); |
| 2663 | 2660 | LLVMValueRef args[] = {dest_stack_trace_ptr, this_addr_val}; |
| 2664 | 2661 | ZigLLVMBuildCall(g->builder, LLVMGlobalGetValueType(add_error_return_trace_addr_fn_val), |
| ... | ... | @@ -4793,7 +4790,7 @@ static LLVMValueRef ir_render_elem_ptr(CodeGen *g, Stage1Air *executable, Stage1 |
| 4793 | 4790 | assert(len_index != SIZE_MAX); |
| 4794 | 4791 | LLVMValueRef len_ptr = LLVMBuildStructGEP2(g->builder, get_llvm_type(g, array_type), |
| 4795 | 4792 | array_ptr, (unsigned)len_index, ""); |
| 4796 | | LLVMValueRef len = gen_load_untyped(g, LLVMGetGEPSourceElementType(len_ptr), len_ptr, |
| 4793 | LLVMValueRef len = gen_load_untyped(g, ZigLLVMGetGEPResultElementType(len_ptr), len_ptr, |
| 4797 | 4794 | 0, false, ""); |
| 4798 | 4795 | LLVMIntPredicate upper_op = (ptr_type->data.pointer.sentinel != nullptr) ? LLVMIntULE : LLVMIntULT; |
| 4799 | 4796 | add_bounds_check(g, subscript_value, LLVMIntEQ, nullptr, upper_op, len); |
| ... | ... | @@ -4803,7 +4800,7 @@ static LLVMValueRef ir_render_elem_ptr(CodeGen *g, Stage1Air *executable, Stage1 |
| 4803 | 4800 | assert(ptr_index != SIZE_MAX); |
| 4804 | 4801 | LLVMValueRef ptr_ptr = LLVMBuildStructGEP2(g->builder, get_llvm_type(g, array_type), |
| 4805 | 4802 | array_ptr, (unsigned)ptr_index, ""); |
| 4806 | | LLVMValueRef ptr = gen_load_untyped(g, LLVMGetGEPSourceElementType(ptr_ptr), ptr_ptr, 0, |
| 4803 | LLVMValueRef ptr = gen_load_untyped(g, ZigLLVMGetGEPResultElementType(ptr_ptr), ptr_ptr, 0, |
| 4807 | 4804 | false, ""); |
| 4808 | 4805 | LLVMTypeRef elem_llvm_ty = get_llvm_type(g, ptr_type->data.pointer.child_type); |
| 4809 | 4806 | return LLVMBuildInBoundsGEP2(g->builder, elem_llvm_ty, ptr, &subscript_value, 1, ""); |
| ... | ... | @@ -4820,9 +4817,9 @@ static LLVMValueRef get_new_stack_addr(CodeGen *g, LLVMTypeRef new_stack_llvm_ty |
| 4820 | 4817 | LLVMValueRef ptr_field_ptr = LLVMBuildStructGEP2(g->builder, new_stack_llvm_ty, new_stack, (unsigned)slice_ptr_index, ""); |
| 4821 | 4818 | LLVMValueRef len_field_ptr = LLVMBuildStructGEP2(g->builder, new_stack_llvm_ty, new_stack, (unsigned)slice_len_index, ""); |
| 4822 | 4819 | |
| 4823 | | LLVMValueRef ptr_value = gen_load_untyped(g, LLVMGetGEPSourceElementType(ptr_field_ptr), |
| 4820 | LLVMValueRef ptr_value = gen_load_untyped(g, ZigLLVMGetGEPResultElementType(ptr_field_ptr), |
| 4824 | 4821 | ptr_field_ptr, 0, false, ""); |
| 4825 | | LLVMValueRef len_value = gen_load_untyped(g, LLVMGetGEPSourceElementType(len_field_ptr), |
| 4822 | LLVMValueRef len_value = gen_load_untyped(g, ZigLLVMGetGEPResultElementType(len_field_ptr), |
| 4826 | 4823 | len_field_ptr, 0, false, ""); |
| 4827 | 4824 | |
| 4828 | 4825 | LLVMValueRef ptr_addr = LLVMBuildPtrToInt(g->builder, ptr_value, LLVMTypeOf(len_value), ""); |
| ... | ... | @@ -4962,7 +4959,7 @@ static void gen_init_stack_trace(CodeGen *g, LLVMValueRef trace_field_ptr, LLVMV |
| 4962 | 4959 | |
| 4963 | 4960 | LLVMValueRef addrs_slice_ptr = LLVMBuildStructGEP2(g->builder, stack_trace_llvm_ty, trace_field_ptr, 1, ""); |
| 4964 | 4961 | LLVMValueRef addrs_ptr_ptr = LLVMBuildStructGEP2(g->builder, |
| 4965 | | LLVMGetGEPSourceElementType(addrs_slice_ptr), |
| 4962 | ZigLLVMGetGEPResultElementType(addrs_slice_ptr), |
| 4966 | 4963 | addrs_slice_ptr, slice_ptr_index, ""); |
| 4967 | 4964 | LLVMValueRef indices[] = { LLVMConstNull(usize_type_ref), LLVMConstNull(usize_type_ref) }; |
| 4968 | 4965 | LLVMValueRef trace_field_addrs_as_ptr = LLVMBuildInBoundsGEP2(g->builder, |
| ... | ... | @@ -4970,7 +4967,7 @@ static void gen_init_stack_trace(CodeGen *g, LLVMValueRef trace_field_ptr, LLVMV |
| 4970 | 4967 | LLVMBuildStore(g->builder, trace_field_addrs_as_ptr, addrs_ptr_ptr); |
| 4971 | 4968 | |
| 4972 | 4969 | LLVMValueRef addrs_len_ptr = LLVMBuildStructGEP2(g->builder, |
| 4973 | | LLVMGetGEPSourceElementType(addrs_slice_ptr), |
| 4970 | ZigLLVMGetGEPResultElementType(addrs_slice_ptr), |
| 4974 | 4971 | addrs_slice_ptr, slice_len_index, ""); |
| 4975 | 4972 | LLVMBuildStore(g->builder, LLVMConstInt(usize_type_ref, stack_trace_ptr_count, false), addrs_len_ptr); |
| 4976 | 4973 | } |
| ... | ... | @@ -5064,7 +5061,7 @@ static LLVMValueRef ir_render_call(CodeGen *g, Stage1Air *executable, Stage1AirI |
| 5064 | 5061 | LLVMValueRef frame_ptr_ptr = LLVMBuildStructGEP2(g->builder, frame_slice_llvm_ty, |
| 5065 | 5062 | frame_slice_ptr, slice_ptr_index, ""); |
| 5066 | 5063 | LLVMValueRef frame_ptr = LLVMBuildLoad2(g->builder, |
| 5067 | | LLVMGetGEPSourceElementType(frame_ptr_ptr), frame_ptr_ptr, ""); |
| 5064 | ZigLLVMGetGEPResultElementType(frame_ptr_ptr), frame_ptr_ptr, ""); |
| 5068 | 5065 | if (instruction->fn_entry == nullptr) { |
| 5069 | 5066 | anyframe_type = get_any_frame_type(g, src_return_type); |
| 5070 | 5067 | frame_result_loc = LLVMBuildBitCast(g->builder, frame_ptr, get_llvm_type(g, anyframe_type), ""); |
| ... | ... | @@ -5127,7 +5124,7 @@ static LLVMValueRef ir_render_call(CodeGen *g, Stage1Air *executable, Stage1AirI |
| 5127 | 5124 | |
| 5128 | 5125 | // Store a zero in the awaiter's result ptr to indicate we do not need a copy made. |
| 5129 | 5126 | LLVMValueRef awaiter_ret_ptr = LLVMBuildStructGEP2(g->builder, frame_struct_llvm_ty, frame_result_loc, frame_ret_start + 1, ""); |
| 5130 | | LLVMValueRef zero_ptr = LLVMConstNull(LLVMGetGEPSourceElementType(awaiter_ret_ptr)); |
| 5127 | LLVMValueRef zero_ptr = LLVMConstNull(ZigLLVMGetGEPResultElementType(awaiter_ret_ptr)); |
| 5131 | 5128 | LLVMBuildStore(g->builder, zero_ptr, awaiter_ret_ptr); |
| 5132 | 5129 | } |
| 5133 | 5130 | |
| ... | ... | @@ -5145,7 +5142,7 @@ static LLVMValueRef ir_render_call(CodeGen *g, Stage1Air *executable, Stage1AirI |
| 5145 | 5142 | |
| 5146 | 5143 | LLVMValueRef fn_ptr_ptr = LLVMBuildStructGEP2(g->builder, frame_struct_llvm_ty, frame_result_loc, frame_fn_ptr_index, ""); |
| 5147 | 5144 | LLVMValueRef bitcasted_fn_val = LLVMBuildBitCast(g->builder, fn_val, |
| 5148 | | LLVMGetGEPSourceElementType(fn_ptr_ptr), ""); |
| 5145 | ZigLLVMGetGEPResultElementType(fn_ptr_ptr), ""); |
| 5149 | 5146 | LLVMBuildStore(g->builder, bitcasted_fn_val, fn_ptr_ptr); |
| 5150 | 5147 | |
| 5151 | 5148 | LLVMValueRef resume_index_ptr = LLVMBuildStructGEP2(g->builder, frame_struct_llvm_ty, frame_result_loc, frame_resume_index, ""); |
| ... | ... | @@ -5362,7 +5359,7 @@ static LLVMValueRef ir_render_call(CodeGen *g, Stage1Air *executable, Stage1AirI |
| 5362 | 5359 | get_llvm_type(g, instruction->new_stack->value->type->data.pointer.child_type), |
| 5363 | 5360 | frame_slice_ptr, slice_ptr_index, ""); |
| 5364 | 5361 | frame_result_loc_uncasted = LLVMBuildLoad2(g->builder, |
| 5365 | | LLVMGetGEPSourceElementType(frame_ptr_ptr), frame_ptr_ptr, ""); |
| 5362 | ZigLLVMGetGEPResultElementType(frame_ptr_ptr), frame_ptr_ptr, ""); |
| 5366 | 5363 | } |
| 5367 | 5364 | if (frame_result_loc_uncasted != nullptr) { |
| 5368 | 5365 | if (instruction->fn_entry != nullptr) { |
| ... | ... | @@ -5551,7 +5548,7 @@ static LLVMValueRef ir_render_union_field_ptr(CodeGen *g, Stage1Air *executable, |
| 5551 | 5548 | LLVMValueRef tag_field_ptr = LLVMBuildStructGEP2(g->builder, |
| 5552 | 5549 | get_llvm_type(g, union_type), |
| 5553 | 5550 | union_ptr, union_type->data.unionation.gen_tag_index, ""); |
| 5554 | | LLVMValueRef tag_value = gen_load_untyped(g, LLVMGetGEPSourceElementType(tag_field_ptr), |
| 5551 | LLVMValueRef tag_value = gen_load_untyped(g, ZigLLVMGetGEPResultElementType(tag_field_ptr), |
| 5555 | 5552 | tag_field_ptr, 0, false, ""); |
| 5556 | 5553 | |
| 5557 | 5554 | |
| ... | ... | @@ -5787,7 +5784,7 @@ static LLVMValueRef gen_non_null_bit(CodeGen *g, ZigType *maybe_type, LLVMValueR |
| 5787 | 5784 | |
| 5788 | 5785 | LLVMValueRef maybe_field_ptr = LLVMBuildStructGEP2(g->builder, |
| 5789 | 5786 | get_llvm_type(g, maybe_type), maybe_handle, maybe_null_index, ""); |
| 5790 | | return gen_load_untyped(g, LLVMGetGEPSourceElementType(maybe_field_ptr), maybe_field_ptr, 0, false, ""); |
| 5787 | return gen_load_untyped(g, ZigLLVMGetGEPResultElementType(maybe_field_ptr), maybe_field_ptr, 0, false, ""); |
| 5791 | 5788 | } |
| 5792 | 5789 | |
| 5793 | 5790 | static LLVMValueRef ir_render_test_non_null(CodeGen *g, Stage1Air *executable, |
| ... | ... | @@ -6272,7 +6269,7 @@ static LLVMValueRef ir_render_align_cast(CodeGen *g, Stage1Air *executable, Stag |
| 6272 | 6269 | LLVMValueRef ptr_val_ptr = LLVMBuildStructGEP2(g->builder, |
| 6273 | 6270 | get_llvm_type(g, instruction->target->value->type->data.pointer.child_type), |
| 6274 | 6271 | target_val, (unsigned)ptr_index, ""); |
| 6275 | | ptr_val = gen_load_untyped(g, LLVMGetGEPSourceElementType(ptr_val_ptr), ptr_val_ptr, 0, false, ""); |
| 6272 | ptr_val = gen_load_untyped(g, ZigLLVMGetGEPResultElementType(ptr_val_ptr), ptr_val_ptr, 0, false, ""); |
| 6276 | 6273 | } else { |
| 6277 | 6274 | zig_unreachable(); |
| 6278 | 6275 | } |
| ... | ... | @@ -6759,7 +6756,7 @@ static LLVMValueRef ir_render_slice(CodeGen *g, Stage1Air *executable, Stage1Air |
| 6759 | 6756 | if (!instruction->end || want_runtime_safety) { |
| 6760 | 6757 | LLVMValueRef src_len_ptr = LLVMBuildStructGEP2(g->builder, |
| 6761 | 6758 | get_llvm_type(g, array_type), array_ptr, gen_len_index, ""); |
| 6762 | | prev_end = gen_load_untyped(g, LLVMGetGEPSourceElementType(src_len_ptr), src_len_ptr, 0, false, ""); |
| 6759 | prev_end = gen_load_untyped(g, ZigLLVMGetGEPResultElementType(src_len_ptr), src_len_ptr, 0, false, ""); |
| 6763 | 6760 | } |
| 6764 | 6761 | |
| 6765 | 6762 | LLVMValueRef start_val = ir_llvm_value(g, instruction->start); |
| ... | ... | @@ -6804,7 +6801,7 @@ static LLVMValueRef ir_render_slice(CodeGen *g, Stage1Air *executable, Stage1Air |
| 6804 | 6801 | |
| 6805 | 6802 | LLVMValueRef src_ptr_ptr = LLVMBuildStructGEP2(g->builder, |
| 6806 | 6803 | get_llvm_type(g, array_type), array_ptr, gen_ptr_index, ""); |
| 6807 | | LLVMValueRef src_ptr = gen_load_untyped(g, LLVMGetGEPSourceElementType(src_ptr_ptr), |
| 6804 | LLVMValueRef src_ptr = gen_load_untyped(g, ZigLLVMGetGEPResultElementType(src_ptr_ptr), |
| 6808 | 6805 | src_ptr_ptr, 0, false, ""); |
| 6809 | 6806 | |
| 6810 | 6807 | if (sentinel != nullptr) { |
| ... | ... | @@ -7005,7 +7002,7 @@ static LLVMValueRef ir_render_test_err(CodeGen *g, Stage1Air *executable, Stage1 |
| 7005 | 7002 | if (type_has_bits(g, payload_type)) { |
| 7006 | 7003 | LLVMValueRef err_val_ptr = LLVMBuildStructGEP2(g->builder, |
| 7007 | 7004 | get_llvm_type(g, err_union_type), err_union_handle, err_union_err_index, ""); |
| 7008 | | err_val = gen_load_untyped(g, LLVMGetGEPSourceElementType(err_val_ptr), err_val_ptr, 0, false, ""); |
| 7005 | err_val = gen_load_untyped(g, ZigLLVMGetGEPResultElementType(err_val_ptr), err_val_ptr, 0, false, ""); |
| 7009 | 7006 | } else { |
| 7010 | 7007 | err_val = err_union_handle; |
| 7011 | 7008 | } |
| ... | ... | @@ -7077,7 +7074,7 @@ static LLVMValueRef ir_render_unwrap_err_payload(CodeGen *g, Stage1Air *executab |
| 7077 | 7074 | if (type_has_bits(g, payload_type)) { |
| 7078 | 7075 | LLVMValueRef err_val_ptr = LLVMBuildStructGEP2(g->builder, err_union_llvm_ty, |
| 7079 | 7076 | err_union_handle, err_union_err_index, ""); |
| 7080 | | err_val = gen_load_untyped(g, LLVMGetGEPSourceElementType(err_val_ptr), err_val_ptr, 0, false, ""); |
| 7077 | err_val = gen_load_untyped(g, ZigLLVMGetGEPResultElementType(err_val_ptr), err_val_ptr, 0, false, ""); |
| 7081 | 7078 | } else { |
| 7082 | 7079 | err_val = err_union_handle; |
| 7083 | 7080 | } |
| ... | ... | @@ -7602,7 +7599,7 @@ static LLVMValueRef gen_await_early_return(CodeGen *g, Stage1AirInst *source_ins |
| 7602 | 7599 | LLVMValueRef their_result_ptr_ptr = LLVMBuildStructGEP2(g->builder, |
| 7603 | 7600 | target_frame_struct_llvm_ty, target_frame_ptr, frame_ret_start, ""); |
| 7604 | 7601 | their_result_ptr = LLVMBuildLoad2(g->builder, |
| 7605 | | LLVMGetGEPSourceElementType(their_result_ptr_ptr), their_result_ptr_ptr, ""); |
| 7602 | ZigLLVMGetGEPResultElementType(their_result_ptr_ptr), their_result_ptr_ptr, ""); |
| 7606 | 7603 | if (result_loc != nullptr) { |
| 7607 | 7604 | LLVMTypeRef ptr_u8 = LLVMPointerType(LLVMInt8Type(), 0); |
| 7608 | 7605 | LLVMValueRef dest_ptr_casted = LLVMBuildBitCast(g->builder, result_loc, ptr_u8, ""); |
| ... | ... | @@ -7620,7 +7617,7 @@ static LLVMValueRef gen_await_early_return(CodeGen *g, Stage1AirInst *source_ins |
| 7620 | 7617 | target_frame_struct_llvm_ty, target_frame_ptr, |
| 7621 | 7618 | frame_index_trace_arg(g, result_type), ""); |
| 7622 | 7619 | LLVMValueRef src_trace_ptr = LLVMBuildLoad2(g->builder, |
| 7623 | | LLVMGetGEPSourceElementType(their_trace_ptr_ptr), their_trace_ptr_ptr, ""); |
| 7620 | ZigLLVMGetGEPResultElementType(their_trace_ptr_ptr), their_trace_ptr_ptr, ""); |
| 7624 | 7621 | bool is_llvm_alloca; |
| 7625 | 7622 | LLVMValueRef dest_trace_ptr = get_cur_err_ret_trace_val(g, source_instr->scope, &is_llvm_alloca); |
| 7626 | 7623 | LLVMValueRef args[] = { dest_trace_ptr, src_trace_ptr }; |
| ... | ... | @@ -7668,7 +7665,7 @@ static LLVMValueRef ir_render_await(CodeGen *g, Stage1Air *executable, Stage1Air |
| 7668 | 7665 | target_frame_ptr, frame_ret_start + 1, ""); |
| 7669 | 7666 | if (result_loc == nullptr) { |
| 7670 | 7667 | // no copy needed |
| 7671 | | LLVMBuildStore(g->builder, LLVMConstNull(LLVMGetGEPSourceElementType(awaiter_ret_ptr_ptr)), |
| 7668 | LLVMBuildStore(g->builder, LLVMConstNull(ZigLLVMGetGEPResultElementType(awaiter_ret_ptr_ptr)), |
| 7672 | 7669 | awaiter_ret_ptr_ptr); |
| 7673 | 7670 | } else { |
| 7674 | 7671 | LLVMBuildStore(g->builder, result_loc, awaiter_ret_ptr_ptr); |
| ... | ... | @@ -9353,7 +9350,7 @@ static void do_code_gen(CodeGen *g) { |
| 9353 | 9350 | ZigType *slice_type = g->stack_trace_type->data.structure.fields[1]->type_entry; |
| 9354 | 9351 | size_t ptr_field_index = slice_type->data.structure.fields[slice_ptr_index]->gen_index; |
| 9355 | 9352 | LLVMValueRef ptr_field_ptr = LLVMBuildStructGEP2(g->builder, |
| 9356 | | LLVMGetGEPSourceElementType(addresses_field_ptr), |
| 9353 | ZigLLVMGetGEPResultElementType(addresses_field_ptr), |
| 9357 | 9354 | addresses_field_ptr, (unsigned)ptr_field_index, ""); |
| 9358 | 9355 | LLVMValueRef zero = LLVMConstNull(usize->llvm_type); |
| 9359 | 9356 | LLVMValueRef indices[] = {zero, zero}; |
| ... | ... | @@ -9364,7 +9361,7 @@ static void do_code_gen(CodeGen *g) { |
| 9364 | 9361 | |
| 9365 | 9362 | size_t len_field_index = slice_type->data.structure.fields[slice_len_index]->gen_index; |
| 9366 | 9363 | LLVMValueRef len_field_ptr = LLVMBuildStructGEP2(g->builder, |
| 9367 | | LLVMGetGEPSourceElementType(addresses_field_ptr), |
| 9364 | ZigLLVMGetGEPResultElementType(addresses_field_ptr), |
| 9368 | 9365 | addresses_field_ptr, (unsigned)len_field_index, ""); |
| 9369 | 9366 | gen_store(g, LLVMConstInt(usize->llvm_type, stack_trace_ptr_count, false), len_field_ptr, get_pointer_to_type(g, usize, false)); |
| 9370 | 9367 | } |
| ... | ... | @@ -9443,7 +9440,7 @@ static void do_code_gen(CodeGen *g) { |
| 9443 | 9440 | get_llvm_type(g, get_fn_frame_type(g, g->cur_fn)), |
| 9444 | 9441 | g->cur_frame_ptr, |
| 9445 | 9442 | frame_index_trace_arg(g, fn_type_id->return_type), ""); |
| 9446 | | LLVMValueRef zero_ptr = LLVMConstNull(LLVMGetGEPSourceElementType(trace_ptr_ptr)); |
| 9443 | LLVMValueRef zero_ptr = LLVMConstNull(ZigLLVMGetGEPResultElementType(trace_ptr_ptr)); |
| 9447 | 9444 | LLVMBuildStore(g->builder, zero_ptr, trace_ptr_ptr); |
| 9448 | 9445 | } |
| 9449 | 9446 | |