Fix comptime evaluation of runtime array access

Fix #3951
This commit is contained in:
LemonBoy 2019-12-20 09:44:10 +01:00 committed by Andrew Kelley
parent 9daa7e1e19
commit f077c3c4cc
2 changed files with 7 additions and 0 deletions

View File

@ -19500,6 +19500,7 @@ static IrInstruction *ir_analyze_instruction_elem_ptr(IrAnalyze *ira, IrInstruct
}
if (orig_array_ptr_val->special != ConstValSpecialRuntime &&
orig_array_ptr_val->data.x_ptr.special != ConstPtrSpecialHardCodedAddr &&
(orig_array_ptr_val->data.x_ptr.mut != ConstPtrMutRuntimeVar ||
array_type->id == ZigTypeIdArray))
{

View File

@ -282,3 +282,9 @@ test "pointer sentinel with +inf" {
S.doTheTest();
comptime S.doTheTest();
}
test "pointer to array at fixed address" {
const array = @intToPtr(*volatile [1]u32, 0x10);
// Silly check just to reference `array`
expect(@ptrToInt(&array[0]) == 0x10);
}