Commit 0e92b44043

Andrew Kelley <superjoe30@gmail.com>
2016-02-17 01:06:19
prepend underscore to non exported functions
to prevent symbol collisions
1 parent 77ffb50
Changed files (1)
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);