disallow C pointers to non-C-ABI-compatible element types

See #1059
This commit is contained in:
Andrew Kelley
2019-02-12 00:51:06 -05:00
parent 0abe6d668e
commit 285e2f62ba
4 changed files with 16 additions and 2 deletions

View File

@@ -21145,6 +21145,10 @@ static IrInstruction *ir_analyze_instruction_ptr_type(IrAnalyze *ira, IrInstruct
} else if (child_type->id == ZigTypeIdOpaque && instruction->ptr_len == PtrLenUnknown) {
ir_add_error(ira, &instruction->base, buf_sprintf("unknown-length pointer to opaque"));
return ira->codegen->invalid_instruction;
} else if (instruction->ptr_len == PtrLenC && !type_allowed_in_extern(ira->codegen, child_type)) {
ir_add_error(ira, &instruction->base,
buf_sprintf("C pointers cannot point to non-C-ABI-compatible type '%s'", buf_ptr(&child_type->name)));
return ira->codegen->invalid_instruction;
}
uint32_t align_bytes;