authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-01-13 17:42:01-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-01-16 21:58:52-05:00
log6a8c9f730686dc572a7ba71f9a22b143da863793
tree5647a66e81f565b896ba3068fd06586d2da39f5c
parentb952b8448648102dbe62fb1b4137c6d57806b78b
signature Commit is signed but in an unrecognized format.

fix regression with optionals and globals


2 files changed, 10 insertions(+), 7 deletions(-)

src/ir.cpp+9-6
...@@ -17606,12 +17606,15 @@ static IrInstruction *ir_resolve_result(IrAnalyze *ira, IrInstruction *suspend_s...@@ -17606,12 +17606,15 @@ static IrInstruction *ir_resolve_result(IrAnalyze *ira, IrInstruction *suspend_s
17606 if (actual_elem_type->id == ZigTypeIdOptional && value_type->id != ZigTypeIdOptional &&17606 if (actual_elem_type->id == ZigTypeIdOptional && value_type->id != ZigTypeIdOptional &&
17607 value_type->id != ZigTypeIdNull)17607 value_type->id != ZigTypeIdNull)
17608 {17608 {
17609 bool has_bits;17609 bool same_comptime_repr = types_have_same_zig_comptime_repr(ira->codegen, actual_elem_type, value_type);
17610 if ((err = type_has_bits2(ira->codegen, value_type, &has_bits)))17610 if (!same_comptime_repr) {
17611 return ira->codegen->invalid_instruction;17611 bool has_bits;
17612 if (has_bits) {17612 if ((err = type_has_bits2(ira->codegen, value_type, &has_bits)))
17613 result_loc_pass1->written = false;17613 return ira->codegen->invalid_instruction;
17614 return ir_analyze_unwrap_optional_payload(ira, suspend_source_instr, result_loc, false, true);17614 if (has_bits) {
17615 result_loc_pass1->written = false;
17616 return ir_analyze_unwrap_optional_payload(ira, suspend_source_instr, result_loc, false, true);
17617 }
17615 }17618 }
17616 } else if (actual_elem_type->id == ZigTypeIdErrorUnion && value_type->id != ZigTypeIdErrorUnion) {17619 } else if (actual_elem_type->id == ZigTypeIdErrorUnion && value_type->id != ZigTypeIdErrorUnion) {
17617 bool has_bits;17620 bool has_bits;
test/stage1/behavior.zig+1-1
...@@ -82,7 +82,7 @@ comptime {...@@ -82,7 +82,7 @@ comptime {
82 _ = @import("behavior/namespace_depends_on_compile_var.zig");82 _ = @import("behavior/namespace_depends_on_compile_var.zig");
83 _ = @import("behavior/new_stack_call.zig");83 _ = @import("behavior/new_stack_call.zig");
84 _ = @import("behavior/null.zig");84 _ = @import("behavior/null.zig");
85 //_ = @import("behavior/optional.zig");85 _ = @import("behavior/optional.zig");
86 _ = @import("behavior/pointers.zig");86 _ = @import("behavior/pointers.zig");
87 _ = @import("behavior/popcount.zig");87 _ = @import("behavior/popcount.zig");
88 _ = @import("behavior/ptrcast.zig");88 _ = @import("behavior/ptrcast.zig");