aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2024-09-09 14:39:53 +0100
committergingerBill <bill@gingerbill.org>2024-09-09 14:39:53 +0100
commit0dddd2b97e4ad526fa5e33d270301c1b807e520e (patch)
tree45ebf3320b453b776edf9b569735c4b5d02b8c32 /src
parent75dd562a0a2002f3b5664754a946a3ac8ffb33cd (diff)
Add internal flag
`-internal-fast-isel`
Diffstat (limited to 'src')
-rw-r--r--src/build_settings.cpp1
-rw-r--r--src/llvm_backend.cpp5
-rw-r--r--src/main.cpp5
3 files changed, 11 insertions, 0 deletions
diff --git a/src/build_settings.cpp b/src/build_settings.cpp
index d8b63b947..e86224665 100644
--- a/src/build_settings.cpp
+++ b/src/build_settings.cpp
@@ -430,6 +430,7 @@ struct BuildContext {
bool json_errors;
bool has_ansi_terminal_colours;
+ bool fast_isel;
bool ignore_lazy;
bool ignore_llvm_build;
bool ignore_panic;
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp
index f852636a6..19b5ced67 100644
--- a/src/llvm_backend.cpp
+++ b/src/llvm_backend.cpp
@@ -3081,6 +3081,11 @@ gb_internal bool lb_generate_code(lbGenerator *gen) {
lbModule *m = entry.value;
m->target_machine = target_machine;
LLVMSetModuleDataLayout(m->mod, LLVMCreateTargetDataLayout(target_machine));
+
+ if (build_context.fast_isel) {
+ LLVMSetTargetMachineFastISel(m->target_machine, true);
+ }
+
array_add(&target_machines, target_machine);
}
diff --git a/src/main.cpp b/src/main.cpp
index a03126caf..0a84b2f97 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -389,6 +389,7 @@ enum BuildFlagKind {
BuildFlag_PrintLinkerFlags,
// internal use only
+ BuildFlag_InternalFastISel,
BuildFlag_InternalIgnoreLazy,
BuildFlag_InternalIgnoreLLVMBuild,
BuildFlag_InternalIgnorePanic,
@@ -594,6 +595,7 @@ gb_internal bool parse_build_flags(Array<String> args) {
add_flag(&build_flags, BuildFlag_PrintLinkerFlags, str_lit("print-linker-flags"), BuildFlagParam_None, Command_build);
+ add_flag(&build_flags, BuildFlag_InternalFastISel, str_lit("internal-fast-isel"), BuildFlagParam_None, Command_all);
add_flag(&build_flags, BuildFlag_InternalIgnoreLazy, str_lit("internal-ignore-lazy"), BuildFlagParam_None, Command_all);
add_flag(&build_flags, BuildFlag_InternalIgnoreLLVMBuild, str_lit("internal-ignore-llvm-build"),BuildFlagParam_None, Command_all);
add_flag(&build_flags, BuildFlag_InternalIgnorePanic, str_lit("internal-ignore-panic"), BuildFlagParam_None, Command_all);
@@ -1408,6 +1410,9 @@ gb_internal bool parse_build_flags(Array<String> args) {
build_context.print_linker_flags = true;
break;
+ case BuildFlag_InternalFastISel:
+ build_context.fast_isel = true;
+ break;
case BuildFlag_InternalIgnoreLazy:
build_context.ignore_lazy = true;
break;