authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-01-09 20:17:45-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-01-16 21:58:52-05:00
log96d64a40a6cd31b8483c9f2899561c23fa266060
treec3a67625631d734ee49d484a22610a7c9b0f2564
parentb6c8fead00aa5d7b39697aedb0cb1eef53010b83
signature Commit is signed but in an unrecognized format.

fix regression with var ptrs not being const


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

src/ir.cpp+6-4
...@@ -17921,8 +17921,12 @@ static IrInstruction *ir_get_var_ptr(IrAnalyze *ira, IrInstruction *instruction,...@@ -17921,8 +17921,12 @@ static IrInstruction *ir_get_var_ptr(IrAnalyze *ira, IrInstruction *instruction,
17921 var = var->next_var;17921 var = var->next_var;
17922 }17922 }
1792317923
17924 bool is_volatile = false;
17925 ZigType *var_ptr_type = get_pointer_to_type_extra(ira->codegen, var->var_type,
17926 var->src_is_const, is_volatile, PtrLenSingle, var->align_bytes, 0, 0, false);
17927
17924 if (var->ptr_instruction != nullptr) {17928 if (var->ptr_instruction != nullptr) {
17925 return var->ptr_instruction;17929 return ir_implicit_cast(ira, var->ptr_instruction, var_ptr_type);
17926 }17930 }
1792717931
17928 if (var->var_type == nullptr || type_is_invalid(var->var_type))17932 if (var->var_type == nullptr || type_is_invalid(var->var_type))
...@@ -17932,12 +17936,10 @@ static IrInstruction *ir_get_var_ptr(IrAnalyze *ira, IrInstruction *instruction,...@@ -17932,12 +17936,10 @@ static IrInstruction *ir_get_var_ptr(IrAnalyze *ira, IrInstruction *instruction,
1793217936
17933 bool comptime_var_mem = ir_get_var_is_comptime(var);17937 bool comptime_var_mem = ir_get_var_is_comptime(var);
17934 bool linkage_makes_it_runtime = var->decl_node->data.variable_declaration.is_extern;17938 bool linkage_makes_it_runtime = var->decl_node->data.variable_declaration.is_extern;
17935 bool is_volatile = false;
1793617939
17937 IrInstruction *result = ir_build_var_ptr(&ira->new_irb,17940 IrInstruction *result = ir_build_var_ptr(&ira->new_irb,
17938 instruction->scope, instruction->source_node, var);17941 instruction->scope, instruction->source_node, var);
17939 result->value->type = get_pointer_to_type_extra(ira->codegen, var->var_type,17942 result->value->type = var_ptr_type;
17940 var->src_is_const, is_volatile, PtrLenSingle, var->align_bytes, 0, 0, false);
1794117943
17942 if (linkage_makes_it_runtime || var->is_thread_local)17944 if (linkage_makes_it_runtime || var->is_thread_local)
17943 goto no_mem_slot;17945 goto no_mem_slot;
test/stage1/behavior.zig+1-1
...@@ -43,7 +43,7 @@ comptime {...@@ -43,7 +43,7 @@ comptime {
43 _ = @import("behavior/bugs/421.zig");43 _ = @import("behavior/bugs/421.zig");
44 _ = @import("behavior/bugs/529.zig");44 _ = @import("behavior/bugs/529.zig");
45 _ = @import("behavior/bugs/624.zig");45 _ = @import("behavior/bugs/624.zig");
46 //_ = @import("behavior/bugs/655.zig");46 _ = @import("behavior/bugs/655.zig");
47 _ = @import("behavior/bugs/656.zig");47 _ = @import("behavior/bugs/656.zig");
48 _ = @import("behavior/bugs/679.zig");48 _ = @import("behavior/bugs/679.zig");
49 _ = @import("behavior/bugs/704.zig");49 _ = @import("behavior/bugs/704.zig");