aboutsummaryrefslogtreecommitdiff
path: root/src/codegen.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2016-02-05 14:58:18 -0700
committerAndrew Kelley <superjoe30@gmail.com>2016-02-05 14:58:18 -0700
commit4208435f662030abf24929c90a4bb8c7fb0d2908 (patch)
tree0f46793abfa43eaef53b36a0df755bc85d30f8c3 /src/codegen.cpp
parentdb3b517639db2f4abd3b06a249e95a5e18599126 (diff)
downloadzig-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.cpp6
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);