aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2017-10-06 12:41:14 -0400
committerAndrew Kelley <superjoe30@gmail.com>2017-10-06 12:41:14 -0400
commitb4e42042cf27177479f448248601b9be92ca6345 (patch)
treec01e6aef384cd51ece2baa1c437272eb2c3a2c5a /src
parent569cf286ff79a10126b9f20f39fa8c64df9b8b25 (diff)
downloadzig-b4e42042cf27177479f448248601b9be92ca6345.tar.gz
zig-b4e42042cf27177479f448248601b9be92ca6345.zip
fix compiler crash when invalid value used
closes #527
Diffstat (limited to 'src')
-rw-r--r--src/ir.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/ir.cpp b/src/ir.cpp
index 570783872f..2c2a8d282d 100644
--- a/src/ir.cpp
+++ b/src/ir.cpp
@@ -11314,6 +11314,8 @@ static TypeTableEntry *ir_analyze_container_field_ptr(IrAnalyze *ira, Buf *field
if (ptr_val->data.x_ptr.special != ConstPtrSpecialHardCodedAddr) {
ConstExprValue *struct_val = const_ptr_pointee(ira->codegen, ptr_val);
+ if (type_is_invalid(struct_val->type))
+ return ira->codegen->builtin_types.entry_invalid;
ConstExprValue *field_val = &struct_val->data.x_struct.fields[field->src_index];
TypeTableEntry *ptr_type = get_pointer_to_type_extra(ira->codegen, field_val->type,
is_const, is_volatile, align_bytes,
@@ -11732,6 +11734,9 @@ static TypeTableEntry *ir_analyze_instruction_store_ptr(IrAnalyze *ira, IrInstru
}
ir_add_error(ira, &store_ptr_instruction->base,
buf_sprintf("cannot store runtime value in compile time variable"));
+ ConstExprValue *dest_val = const_ptr_pointee(ira->codegen, &ptr->value);
+ dest_val->type = ira->codegen->builtin_types.entry_invalid;
+
return ira->codegen->builtin_types.entry_invalid;
}
}