Browse Source

llvm-18: enable sroa and static map calls

Laytan Laats 1 year ago
parent
commit
e3e04ffa22
2 changed files with 14 additions and 0 deletions
  1. 2 0
      src/build_settings.cpp
  2. 12 0
      src/llvm_backend.cpp

+ 2 - 0
src/build_settings.cpp

@@ -2027,10 +2027,12 @@ gb_internal void init_build_context(TargetMetrics *cross_target, Subtarget subta
 
 	bc->optimization_level = gb_clamp(bc->optimization_level, -1, 3);
 
+	#if LLVM_VERSION_MAJOR != 18
 	if (bc->metrics.os != TargetOs_windows) {
 		// ENFORCE DYNAMIC MAP CALLS
 		bc->dynamic_map_calls = true;
 	}
+	#endif
 
 	bc->ODIN_VALGRIND_SUPPORT = false;
 	if (build_context.metrics.os != TargetOs_windows) {

+ 12 - 0
src/llvm_backend.cpp

@@ -1640,6 +1640,7 @@ inferattrs,
 function<eager-inv>(
 	lower-expect,
 	simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;no-switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-sink-common-insts;speculate-blocks;simplify-cond-branch>,
+	sroa<modify-cfg>,
 	early-cse<>
 ),
 ipsccp,
@@ -1661,6 +1662,7 @@ cgscc(
 		inline,
 		function-attrs<skip-non-recursive-function-attrs>,
 		function<eager-inv;no-rerun>(
+			sroa<modify-cfg>,
 			early-cse<memssa>,
 			speculative-execution<only-if-divergent-target>,
 			jump-threading,
@@ -1688,6 +1690,7 @@ cgscc(
 				loop-deletion,
 				loop-unroll-full
 			),
+			sroa<modify-cfg>,
 			vector-combine,
 			mldst-motion<no-split-footer-bb>,
 			gvn<>,
@@ -1737,6 +1740,7 @@ function<eager-inv>(
 	instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,
 	loop-unroll<O2>,
 	transform-warning,
+	sroa<preserve-cfg>,
 	infer-alignment,
 	instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,
 	loop-mssa(
@@ -1896,6 +1900,7 @@ inferattrs,
 function<eager-inv>(
 	lower-expect,
 	simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;no-switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-sink-common-insts;speculate-blocks;simplify-cond-branch>,
+	sroa<modify-cfg>,
 	early-cse<>
 ),
 ipsccp,
@@ -1917,6 +1922,7 @@ cgscc(
 		inline,
 		function-attrs<skip-non-recursive-function-attrs>,
 		function<eager-inv;no-rerun>(
+			sroa<modify-cfg>,
 			early-cse<memssa>,
 			speculative-execution<only-if-divergent-target>,
 			jump-threading,
@@ -1945,6 +1951,7 @@ cgscc(
 				loop-deletion,
 				loop-unroll-full
 			),
+			sroa<modify-cfg>,
 			vector-combine,
 			mldst-motion<no-split-footer-bb>,
 			gvn<>,
@@ -1994,6 +2001,7 @@ function<eager-inv>(
 	instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,
 	loop-unroll<O2>,
 	transform-warning,
+	sroa<modify-cfg>,
 	infer-alignment,
 	instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,
 	loop-mssa(
@@ -2157,6 +2165,7 @@ inferattrs,
 function<eager-inv>(
 	lower-expect,
 	simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;no-switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-sink-common-insts;speculate-blocks;simplify-cond-branch>,
+	sroa<modify-cfg>,
 	early-cse<>,
 	callsite-splitting
 ),
@@ -2178,6 +2187,7 @@ cgscc(
 		function-attrs<skip-non-recursive-function-attrs>,
 		argpromotion,
 		function<eager-inv;no-rerun>(
+			sroa<modify-cfg>,
 			early-cse<memssa>,
 			speculative-execution<only-if-divergent-target>,
 			jump-threading,
@@ -2206,6 +2216,7 @@ cgscc(
 				loop-deletion,
 				loop-unroll-full
 			),
+			sroa<modify-cfg>,
 			vector-combine,
 			mldst-motion<no-split-footer-bb>,
 			gvn<>,
@@ -2254,6 +2265,7 @@ function<eager-inv>(
 	instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,
 	loop-unroll<O3>,
 	transform-warning,
+	sroa<preserve-cfg>,
 	infer-alignment,
 	instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,
 	loop-mssa(licm<allowspeculation>),