mirror of
https://github.com/odin-lang/Odin.git
synced 2026-05-25 05:09:53 +00:00
Merge pull request #6553 from jakubtomsu/minimal-sroa
`-o:minimal` SROA and simplification passes
This commit is contained in:
@@ -578,7 +578,7 @@ struct BuildContext {
|
||||
bool internal_by_value;
|
||||
bool internal_weak_monomorphization;
|
||||
bool internal_ignore_llvm_verification;
|
||||
bool internal_llvm_mem2reg;
|
||||
bool internal_llvm_no_sroa;
|
||||
|
||||
bool enable_rvo;
|
||||
|
||||
|
||||
@@ -9,7 +9,9 @@
|
||||
|
||||
#if defined(GB_SYSTEM_WINDOWS)
|
||||
|
||||
#define NOMINMAX 1
|
||||
#define NOMINMAX 1
|
||||
#define WINDOWS_LEAN_AND_MEAN 1
|
||||
#define VC_EXTRALEAN 1
|
||||
#include <windows.h>
|
||||
#undef NOMINMAX
|
||||
#endif
|
||||
|
||||
@@ -3,9 +3,17 @@
|
||||
array_add(&passes, "function(annotation-remarks)");
|
||||
break;
|
||||
case 0:
|
||||
array_add(&passes, "always-inline");
|
||||
if (build_context.internal_llvm_mem2reg) {
|
||||
array_add(&passes, "function<eager-inv>(mem2reg)");
|
||||
if (build_context.internal_llvm_no_sroa) {
|
||||
// Old -o:minimal behavior
|
||||
array_add(&passes, "always-inline");
|
||||
} else {
|
||||
array_add(&passes, "annotation2metadata");
|
||||
array_add(&passes, "inferattrs");
|
||||
array_add(&passes, "forceattrs");
|
||||
array_add(&passes, "function<eager-inv>(sroa<modify-cfg>,early-cse<>)");
|
||||
array_add(&passes, "always-inline");
|
||||
array_add(&passes, "function<eager-inv>(sroa<modify-cfg>,instsimplify,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-sink-common-insts;speculate-blocks;simplify-cond-branch>)");
|
||||
// array_add(&passes, "verify");
|
||||
}
|
||||
array_add(&passes, "function(annotation-remarks)");
|
||||
break;
|
||||
|
||||
@@ -402,7 +402,7 @@ enum BuildFlagKind {
|
||||
BuildFlag_InternalByValue,
|
||||
BuildFlag_InternalWeakMonomorphization,
|
||||
BuildFlag_InternalLLVMVerification,
|
||||
BuildFlag_InternalLLVMMem2Reg,
|
||||
BuildFlag_InternalLLVMNoSROA,
|
||||
BuildFlag_InternalEnableRVO,
|
||||
|
||||
BuildFlag_Sanitize,
|
||||
@@ -634,7 +634,7 @@ gb_internal bool parse_build_flags(Array<String> args) {
|
||||
add_flag(&build_flags, BuildFlag_InternalByValue, str_lit("internal-by-value"), BuildFlagParam_None, Command_all);
|
||||
add_flag(&build_flags, BuildFlag_InternalWeakMonomorphization, str_lit("internal-weak-monomorphization"), BuildFlagParam_None, Command_all);
|
||||
add_flag(&build_flags, BuildFlag_InternalLLVMVerification, str_lit("internal-ignore-llvm-verification"), BuildFlagParam_None, Command_all);
|
||||
add_flag(&build_flags, BuildFlag_InternalLLVMMem2Reg, str_lit("internal-llvm-mem2reg"), BuildFlagParam_None, Command_all);
|
||||
add_flag(&build_flags, BuildFlag_InternalLLVMNoSROA, str_lit("internal-llvm-no-sroa"), BuildFlagParam_None, Command_all);
|
||||
add_flag(&build_flags, BuildFlag_InternalEnableRVO, str_lit("internal-enable-rvo"), BuildFlagParam_None, Command_all);
|
||||
|
||||
|
||||
@@ -1628,8 +1628,8 @@ gb_internal bool parse_build_flags(Array<String> args) {
|
||||
case BuildFlag_InternalLLVMVerification:
|
||||
build_context.internal_ignore_llvm_verification = true;
|
||||
break;
|
||||
case BuildFlag_InternalLLVMMem2Reg:
|
||||
build_context.internal_llvm_mem2reg = true;
|
||||
case BuildFlag_InternalLLVMNoSROA:
|
||||
build_context.internal_llvm_no_sroa = true;
|
||||
break;
|
||||
case BuildFlag_InternalEnableRVO:
|
||||
build_context.enable_rvo = true;
|
||||
|
||||
Reference in New Issue
Block a user