aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2022-01-12 19:27:49 +0000
committergingerBill <bill@gingerbill.org>2022-01-12 19:27:49 +0000
commit5ec93677a04f17f38117f0cf301d9a72036a04e7 (patch)
treedfb8a35d1839d2107e10397c698c7769b4b19e5b /src/llvm_backend.cpp
parent7e4067c44ceb21b4ca0ce89e501df1bf9de106b7 (diff)
Correct look for entry point in llvm backend (Windows only currently)
Diffstat (limited to 'src/llvm_backend.cpp')
-rw-r--r--src/llvm_backend.cpp19
1 files changed, 5 insertions, 14 deletions
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp
index b42ea8211..0b4c674ac 100644
--- a/src/llvm_backend.cpp
+++ b/src/llvm_backend.cpp
@@ -1406,19 +1406,15 @@ void lb_generate_code(lbGenerator *gen) {
isize global_variable_max_count = 0;
Entity *entry_point = info->entry_point;
- bool has_dll_main = false;
- bool has_win_main = false;
bool already_has_entry_point = false;
for_array(i, info->entities) {
Entity *e = info->entities[i];
String name = e->token.string;
- bool is_global = e->pkg != nullptr;
-
if (e->kind == Entity_Variable) {
global_variable_max_count++;
- } else if (e->kind == Entity_Procedure && !is_global) {
+ } else if (e->kind == Entity_Procedure) {
if ((e->scope->flags&ScopeFlag_Init) && name == "main") {
GB_ASSERT(e == entry_point);
// entry_point = e;
@@ -1426,12 +1422,9 @@ void lb_generate_code(lbGenerator *gen) {
if (e->Procedure.is_export ||
(e->Procedure.link_name.len > 0) ||
((e->scope->flags&ScopeFlag_File) && e->Procedure.link_name.len > 0)) {
- if (name == "main" || name == "DllMain" || name == "WinMain" || name == "mainCRTStartup") {
+ String link_name = e->Procedure.link_name;
+ if (link_name == "main" || link_name == "DllMain" || link_name == "WinMain" || link_name == "mainCRTStartup") {
already_has_entry_point = true;
- } else if (!has_dll_main && name == "DllMain") {
- has_dll_main = true;
- } else if (!has_win_main && name == "WinMain") {
- has_win_main = true;
}
}
}
@@ -1647,10 +1640,8 @@ void lb_generate_code(lbGenerator *gen) {
if (!already_has_entry_point) {
- if (!(build_context.build_mode == BuildMode_DynamicLibrary && !has_dll_main)) {
- TIME_SECTION("LLVM main");
- lb_create_main_procedure(default_module, startup_runtime);
- }
+ TIME_SECTION("LLVM main");
+ lb_create_main_procedure(default_module, startup_runtime);
}
for_array(j, gen->modules.entries) {