authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-02-05 14:58:18-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-02-05 14:58:18-07:00
log4208435f662030abf24929c90a4bb8c7fb0d2908
tree0f46793abfa43eaef53b36a0df755bc85d30f8c3
parentdb3b517639db2f4abd3b06a249e95a5e18599126

add nonnull to functions with pointer return type


1 files changed, 5 insertions(+), 1 deletions(-)

src/codegen.cpp+5-1
...@@ -2873,7 +2873,11 @@ static void do_code_gen(CodeGen *g) {...@@ -2873,7 +2873,11 @@ static void do_code_gen(CodeGen *g) {
28732873
2874 TypeTableEntry *fn_type = fn_table_entry->type_entry;2874 TypeTableEntry *fn_type = fn_table_entry->type_entry;
28752875
2876 if (handle_is_ptr(fn_type->data.fn.fn_type_id.return_type)) {2876 if (!type_has_bits(fn_type->data.fn.fn_type_id.return_type)) {
2877 // nothing to do
2878 } else if (fn_type->data.fn.fn_type_id.return_type->id == TypeTableEntryIdPointer) {
2879 LLVMZigAddNonNullAttr(fn_table_entry->fn_value, 0);
2880 } else if (handle_is_ptr(fn_type->data.fn.fn_type_id.return_type)) {
2877 LLVMValueRef first_arg = LLVMGetParam(fn_table_entry->fn_value, 0);2881 LLVMValueRef first_arg = LLVMGetParam(fn_table_entry->fn_value, 0);
2878 LLVMAddAttribute(first_arg, LLVMStructRetAttribute);2882 LLVMAddAttribute(first_arg, LLVMStructRetAttribute);
2879 LLVMZigAddNonNullAttr(fn_table_entry->fn_value, 1);2883 LLVMZigAddNonNullAttr(fn_table_entry->fn_value, 1);