commit 0e92b440431bb9dd181ff4c0dc4da3b599a6a66c (tree)
parent 77ffb5075bd550893b9f6ac99f151b1d55a8040e
Author: Andrew Kelley <superjoe30@gmail.com>
Date: Tue, 16 Feb 2016 17:06:19 -0700
prepend underscore to non exported functions
to prevent symbol collisions
Diffstat:
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/src/analyze.cpp b/src/analyze.cpp
@@ -945,9 +945,14 @@ static void resolve_function_proto(CodeGen *g, AstNode *node, FnTableEntry *fn_t
return;
}
-
- fn_table_entry->fn_value = LLVMAddFunction(g->module, buf_ptr(&fn_table_entry->symbol_name),
- fn_type->data.fn.raw_type_ref);
+ Buf *symbol_name;
+ if (is_c_compat) {
+ symbol_name = &fn_table_entry->symbol_name;
+ } else {
+ symbol_name = buf_sprintf("_%s", buf_ptr(&fn_table_entry->symbol_name));
+ }
+ fn_table_entry->fn_value = LLVMAddFunction(g->module, buf_ptr(symbol_name),
+ fn_type->data.fn.raw_type_ref);
if (fn_table_entry->is_inline) {
LLVMAddFunctionAttr(fn_table_entry->fn_value, LLVMAlwaysInlineAttribute);