From 49838a9f3eee0df33d2994b92875314363b32dfc Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Wed, 20 Feb 2019 00:20:04 +0100 Subject: Fix generation of comptime slices By erasing the global_refs field we'd trip any codepath using const_values_equal_ptr to figure if two slices were different. --- src/ir.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/ir.cpp') diff --git a/src/ir.cpp b/src/ir.cpp index e7b1f2f40e..26bc375003 100644 --- a/src/ir.cpp +++ b/src/ir.cpp @@ -17329,7 +17329,9 @@ static IrInstruction *ir_analyze_instruction_container_init_list(IrAnalyze *ira, if (const_val.special == ConstValSpecialStatic) { IrInstruction *result = ir_const(ira, &instruction->base, nullptr); ConstExprValue *out_val = &result->value; - copy_const_val(out_val, &const_val, true); + // Make sure to pass same_global_refs=false here in order not to + // zero the global_refs field for `result` (#1608) + copy_const_val(out_val, &const_val, false); result->value.type = fixed_size_array_type; for (size_t i = 0; i < elem_count; i += 1) { ConstExprValue *elem_val = &out_val->data.x_array.data.s_none.elements[i]; -- cgit v1.2.3