aboutsummaryrefslogtreecommitdiff
path: root/src/codegen.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2016-02-05 14:48:23 -0700
committerAndrew Kelley <superjoe30@gmail.com>2016-02-05 14:48:23 -0700
commit2ee80858b42796c931fb2fe0b45e0ebb6f8ffb30 (patch)
treead0ca7cf585ebadc106bd31b21e543b4d43c981e /src/codegen.cpp
parent54fbe7560ec0f3a9d5016f2058b07463767bf6e1 (diff)
downloadzig-2ee80858b42796c931fb2fe0b45e0ebb6f8ffb30.tar.gz
zig-2ee80858b42796c931fb2fe0b45e0ebb6f8ffb30.zip
codegen: use gen_index for nonnull attribute
also put nonnull on sret params closes #82
Diffstat (limited to 'src/codegen.cpp')
-rw-r--r--src/codegen.cpp8
1 files changed, 2 insertions, 6 deletions
diff --git a/src/codegen.cpp b/src/codegen.cpp
index 2965c8e593..d002c716ef 100644
--- a/src/codegen.cpp
+++ b/src/codegen.cpp
@@ -2876,6 +2876,7 @@ static void do_code_gen(CodeGen *g) {
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);
}
// set parameter attributes
@@ -2903,12 +2904,7 @@ static void do_code_gen(CodeGen *g) {
LLVMAddAttribute(argument_val, LLVMReadOnlyAttribute);
}
if (param_type->id == TypeTableEntryIdPointer) {
- // when https://github.com/andrewrk/zig/issues/82 is fixed, add
- // non null attribute here
-
- ///`i` is arg index + 1
- ///I think that 0 is the return index, but it has a named LLVM constant variable
- LLVMZigAddNonNullAttr(fn_table_entry->fn_value, param_decl_i + 1);
+ LLVMZigAddNonNullAttr(fn_table_entry->fn_value, gen_index + 1);
}
if (is_byval) {
// TODO