authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-02-16 17:06:19-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-02-16 17:06:19-07:00
log0e92b440431bb9dd181ff4c0dc4da3b599a6a66c
tree6255a17f4ff2842f39ee60ea77829b270376de4f
parent77ffb5075bd550893b9f6ac99f151b1d55a8040e

prepend underscore to non exported functions

to prevent symbol collisions

1 files changed, 8 insertions(+), 3 deletions(-)

src/analyze.cpp+8-3
......@@ -945,9 +945,14 @@ static void resolve_function_proto(CodeGen *g, AstNode *node, FnTableEntry *fn_t
945945 return;
946946 }
947947
948
949 fn_table_entry->fn_value = LLVMAddFunction(g->module, buf_ptr(&fn_table_entry->symbol_name),
950 fn_type->data.fn.raw_type_ref);
948 Buf *symbol_name;
949 if (is_c_compat) {
950 symbol_name = &fn_table_entry->symbol_name;
951 } else {
952 symbol_name = buf_sprintf("_%s", buf_ptr(&fn_table_entry->symbol_name));
953 }
954 fn_table_entry->fn_value = LLVMAddFunction(g->module, buf_ptr(symbol_name),
955 fn_type->data.fn.raw_type_ref);
951956
952957 if (fn_table_entry->is_inline) {
953958 LLVMAddFunctionAttr(fn_table_entry->fn_value, LLVMAlwaysInlineAttribute);