diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2016-02-05 14:58:18 -0700 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2016-02-05 14:58:18 -0700 |
| commit | 4208435f662030abf24929c90a4bb8c7fb0d2908 (patch) | |
| tree | 0f46793abfa43eaef53b36a0df755bc85d30f8c3 /src/codegen.cpp | |
| parent | db3b517639db2f4abd3b06a249e95a5e18599126 (diff) | |
| download | zig-4208435f662030abf24929c90a4bb8c7fb0d2908.tar.gz zig-4208435f662030abf24929c90a4bb8c7fb0d2908.zip | |
add nonnull to functions with pointer return type
Diffstat (limited to 'src/codegen.cpp')
| -rw-r--r-- | src/codegen.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/codegen.cpp b/src/codegen.cpp index d002c716ef..b607aa41fe 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -2873,7 +2873,11 @@ static void do_code_gen(CodeGen *g) { TypeTableEntry *fn_type = fn_table_entry->type_entry; - if (handle_is_ptr(fn_type->data.fn.fn_type_id.return_type)) { + if (!type_has_bits(fn_type->data.fn.fn_type_id.return_type)) { + // nothing to do + } else if (fn_type->data.fn.fn_type_id.return_type->id == TypeTableEntryIdPointer) { + LLVMZigAddNonNullAttr(fn_table_entry->fn_value, 0); + } else if (handle_is_ptr(fn_type->data.fn.fn_type_id.return_type)) { LLVMValueRef first_arg = LLVMGetParam(fn_table_entry->fn_value, 0); LLVMAddAttribute(first_arg, LLVMStructRetAttribute); LLVMZigAddNonNullAttr(fn_table_entry->fn_value, 1); |
