@@ -2272,7 +2272,9 @@ static LLVMValueRef ir_render_call(CodeGen *g, IrExecutable *executable, IrInstr
2272
2272
2273
2273
for (size_t param_i = 0 ; param_i < fn_type_id->param_count ; param_i += 1 ) {
2274
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
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
4025
TypeTableEntry *u8_ptr_type = get_pointer_to_type (g, g->builtin_types .entry_u8 , true );
4024
4026
TypeTableEntry *str_type = get_slice_type (g, u8_ptr_type);
4025
4027
4028
+
4026
4029
for (size_t enum_i = 0 ; enum_i < g->name_table_enums .length ; enum_i += 1 ) {
4027
4030
TypeTableEntry *enum_tag_type = g->name_table_enums .at (enum_i);
4028
4031
assert (enum_tag_type->id == TypeTableEntryIdEnumTag);
@@ -4257,7 +4260,9 @@ static void do_code_gen(CodeGen *g) {
4257
4260
if (param_type->id == TypeTableEntryIdPointer) {
4258
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
4266
addLLVMArgAttr (fn_val, (unsigned )gen_index, " byval" );
4262
4267
}
4263
4268
}
0 commit comments