| ... | @@ -2272,7 +2272,9 @@ static LLVMValueRef ir_render_call(CodeGen *g, IrExecutable *executable, IrInstr | ... | @@ -2272,7 +2272,9 @@ static LLVMValueRef ir_render_call(CodeGen *g, IrExecutable *executable, IrInstr |
| 2272 | | 2272 | |
| 2273 | for (size_t param_i = 0; param_i < fn_type_id->param_count; param_i += 1) { | 2273 | for (size_t param_i = 0; param_i < fn_type_id->param_count; param_i += 1) { |
| 2274 | FnGenParamInfo *gen_info = &fn_type->data.fn.gen_param_info[param_i]; | 2274 | FnGenParamInfo *gen_info = &fn_type->data.fn.gen_param_info[param_i]; |
| 2275 | if (gen_info->is_byval) { | 2275 | // Note: byval is disabled on windows due to an LLVM bug: |
| | 2276 | // https://github.com/zig-lang/zig/issues/536 |
| | 2277 | if (gen_info->is_byval && g->zig_target.os != ZigLLVM_Win32) { |
| 2276 | addLLVMCallsiteAttr(result, (unsigned)gen_info->gen_index, "byval"); | 2278 | addLLVMCallsiteAttr(result, (unsigned)gen_info->gen_index, "byval"); |
| 2277 | } | 2279 | } |
| 2278 | } | 2280 | } |
| ... | @@ -4023,6 +4025,7 @@ static void generate_enum_name_tables(CodeGen *g) { | ... | @@ -4023,6 +4025,7 @@ static void generate_enum_name_tables(CodeGen *g) { |
| 4023 | TypeTableEntry *u8_ptr_type = get_pointer_to_type(g, g->builtin_types.entry_u8, true); | 4025 | TypeTableEntry *u8_ptr_type = get_pointer_to_type(g, g->builtin_types.entry_u8, true); |
| 4024 | TypeTableEntry *str_type = get_slice_type(g, u8_ptr_type); | 4026 | TypeTableEntry *str_type = get_slice_type(g, u8_ptr_type); |
| 4025 | | 4027 | |
| | 4028 | |
| 4026 | for (size_t enum_i = 0; enum_i < g->name_table_enums.length; enum_i += 1) { | 4029 | for (size_t enum_i = 0; enum_i < g->name_table_enums.length; enum_i += 1) { |
| 4027 | TypeTableEntry *enum_tag_type = g->name_table_enums.at(enum_i); | 4030 | TypeTableEntry *enum_tag_type = g->name_table_enums.at(enum_i); |
| 4028 | assert(enum_tag_type->id == TypeTableEntryIdEnumTag); | 4031 | assert(enum_tag_type->id == TypeTableEntryIdEnumTag); |
| ... | @@ -4257,7 +4260,9 @@ static void do_code_gen(CodeGen *g) { | ... | @@ -4257,7 +4260,9 @@ static void do_code_gen(CodeGen *g) { |
| 4257 | if (param_type->id == TypeTableEntryIdPointer) { | 4260 | if (param_type->id == TypeTableEntryIdPointer) { |
| 4258 | addLLVMArgAttr(fn_val, (unsigned)gen_index, "nonnull"); | 4261 | addLLVMArgAttr(fn_val, (unsigned)gen_index, "nonnull"); |
| 4259 | } | 4262 | } |
| 4260 | if (is_byval) { | 4263 | // Note: byval is disabled on windows due to an LLVM bug: |
| | 4264 | // https://github.com/zig-lang/zig/issues/536 |
| | 4265 | if (is_byval && g->zig_target.os != ZigLLVM_Win32) { |
| 4261 | addLLVMArgAttr(fn_val, (unsigned)gen_index, "byval"); | 4266 | addLLVMArgAttr(fn_val, (unsigned)gen_index, "byval"); |
| 4262 | } | 4267 | } |
| 4263 | } | 4268 | } |