mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-07 16:18:52 +00:00
Add new LLVM 20 passes
This commit is contained in:
+1
-791
@@ -1591,797 +1591,7 @@ gb_internal WORKER_TASK_PROC(lb_llvm_module_pass_worker_proc) {
|
|||||||
LLVMPassBuilderOptionsRef pb_options = LLVMCreatePassBuilderOptions();
|
LLVMPassBuilderOptionsRef pb_options = LLVMCreatePassBuilderOptions();
|
||||||
defer (LLVMDisposePassBuilderOptions(pb_options));
|
defer (LLVMDisposePassBuilderOptions(pb_options));
|
||||||
|
|
||||||
switch (build_context.optimization_level) {
|
#include "llvm_backend_passes.cpp"
|
||||||
case -1:
|
|
||||||
array_add(&passes, "function(annotation-remarks)");
|
|
||||||
break;
|
|
||||||
case 0:
|
|
||||||
array_add(&passes, "always-inline");
|
|
||||||
array_add(&passes, "function(annotation-remarks)");
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
// default<Os>
|
|
||||||
// Passes removed: coro, openmp, sroa
|
|
||||||
#if LLVM_VERSION_MAJOR == 17
|
|
||||||
array_add(&passes, u8R"(
|
|
||||||
annotation2metadata,
|
|
||||||
forceattrs,
|
|
||||||
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>,
|
|
||||||
early-cse<>
|
|
||||||
),
|
|
||||||
ipsccp,
|
|
||||||
called-value-propagation,
|
|
||||||
globalopt,
|
|
||||||
function<eager-inv>(
|
|
||||||
mem2reg,
|
|
||||||
instcombine<max-iterations=1000;no-use-loop-info>,
|
|
||||||
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>
|
|
||||||
),
|
|
||||||
require<globals-aa>,
|
|
||||||
function(
|
|
||||||
invalidate<aa>
|
|
||||||
),
|
|
||||||
require<profile-summary>,
|
|
||||||
cgscc(
|
|
||||||
devirt<4>(
|
|
||||||
inline<only-mandatory>,
|
|
||||||
inline,
|
|
||||||
function-attrs<skip-non-recursive>,
|
|
||||||
function<eager-inv;no-rerun>(
|
|
||||||
early-cse<memssa>,
|
|
||||||
speculative-execution,
|
|
||||||
jump-threading,
|
|
||||||
correlated-propagation,
|
|
||||||
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>,
|
|
||||||
instcombine<max-iterations=1000;no-use-loop-info>,
|
|
||||||
aggressive-instcombine,
|
|
||||||
constraint-elimination,
|
|
||||||
tailcallelim,
|
|
||||||
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>,
|
|
||||||
reassociate,
|
|
||||||
loop-mssa(
|
|
||||||
loop-instsimplify,
|
|
||||||
loop-simplifycfg,
|
|
||||||
licm<no-allowspeculation>,
|
|
||||||
loop-rotate<header-duplication;no-prepare-for-lto>,
|
|
||||||
licm<allowspeculation>,
|
|
||||||
simple-loop-unswitch<no-nontrivial;trivial>
|
|
||||||
),
|
|
||||||
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>,
|
|
||||||
instcombine<max-iterations=1000;no-use-loop-info>,
|
|
||||||
loop(
|
|
||||||
loop-idiom,
|
|
||||||
indvars,
|
|
||||||
loop-deletion,
|
|
||||||
loop-unroll-full
|
|
||||||
),
|
|
||||||
vector-combine,
|
|
||||||
mldst-motion<no-split-footer-bb>,
|
|
||||||
gvn<>,
|
|
||||||
sccp,
|
|
||||||
bdce,
|
|
||||||
instcombine<max-iterations=1000;no-use-loop-info>,
|
|
||||||
jump-threading,
|
|
||||||
correlated-propagation,
|
|
||||||
adce,
|
|
||||||
memcpyopt,
|
|
||||||
dse,
|
|
||||||
move-auto-init,
|
|
||||||
loop-mssa(
|
|
||||||
licm<allowspeculation>
|
|
||||||
),
|
|
||||||
simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;hoist-common-insts;sink-common-insts;speculate-blocks;simplify-cond-branch>,
|
|
||||||
instcombine<max-iterations=1000;no-use-loop-info>
|
|
||||||
),
|
|
||||||
function-attrs,
|
|
||||||
function(
|
|
||||||
require<should-not-run-function-passes>
|
|
||||||
)
|
|
||||||
)
|
|
||||||
),
|
|
||||||
deadargelim,
|
|
||||||
globalopt,
|
|
||||||
globaldce,
|
|
||||||
elim-avail-extern,
|
|
||||||
rpo-function-attrs,
|
|
||||||
recompute-globalsaa,
|
|
||||||
function<eager-inv>(
|
|
||||||
float2int,
|
|
||||||
lower-constant-intrinsics,
|
|
||||||
loop(
|
|
||||||
loop-rotate<header-duplication;no-prepare-for-lto>,
|
|
||||||
loop-deletion
|
|
||||||
),
|
|
||||||
loop-distribute,
|
|
||||||
inject-tli-mappings,
|
|
||||||
loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>,
|
|
||||||
loop-load-elim,
|
|
||||||
instcombine<max-iterations=1000;no-use-loop-info>,
|
|
||||||
simplifycfg<bonus-inst-threshold=1;forward-switch-cond;switch-range-to-icmp;switch-to-lookup;no-keep-loops;hoist-common-insts;sink-common-insts;speculate-blocks;simplify-cond-branch>,
|
|
||||||
slp-vectorizer,
|
|
||||||
vector-combine,
|
|
||||||
instcombine<max-iterations=1000;no-use-loop-info>,
|
|
||||||
loop-unroll<O2>,
|
|
||||||
transform-warning,
|
|
||||||
instcombine<max-iterations=1000;no-use-loop-info>,
|
|
||||||
loop-mssa(
|
|
||||||
licm<allowspeculation>
|
|
||||||
),
|
|
||||||
alignment-from-assumptions,
|
|
||||||
loop-sink,
|
|
||||||
instsimplify,
|
|
||||||
div-rem-pairs,
|
|
||||||
tailcallelim,
|
|
||||||
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>
|
|
||||||
),
|
|
||||||
globaldce,
|
|
||||||
constmerge,
|
|
||||||
cg-profile,
|
|
||||||
rel-lookup-table-converter,
|
|
||||||
function(
|
|
||||||
annotation-remarks
|
|
||||||
),
|
|
||||||
verify
|
|
||||||
)");
|
|
||||||
#else
|
|
||||||
array_add(&passes, u8R"(
|
|
||||||
annotation2metadata,
|
|
||||||
forceattrs,
|
|
||||||
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,
|
|
||||||
called-value-propagation,
|
|
||||||
globalopt,
|
|
||||||
function<eager-inv>(
|
|
||||||
mem2reg,
|
|
||||||
instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,
|
|
||||||
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>
|
|
||||||
),
|
|
||||||
always-inline,
|
|
||||||
require<globals-aa>,
|
|
||||||
function(
|
|
||||||
invalidate<aa>
|
|
||||||
),
|
|
||||||
require<profile-summary>,
|
|
||||||
cgscc(
|
|
||||||
devirt<4>(
|
|
||||||
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,
|
|
||||||
correlated-propagation,
|
|
||||||
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>,
|
|
||||||
instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,
|
|
||||||
aggressive-instcombine,
|
|
||||||
tailcallelim,
|
|
||||||
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>,
|
|
||||||
reassociate,
|
|
||||||
constraint-elimination,
|
|
||||||
loop-mssa(
|
|
||||||
loop-instsimplify,
|
|
||||||
loop-simplifycfg,
|
|
||||||
licm<no-allowspeculation>,
|
|
||||||
loop-rotate<header-duplication;no-prepare-for-lto>,
|
|
||||||
licm<allowspeculation>,
|
|
||||||
simple-loop-unswitch<no-nontrivial;trivial>
|
|
||||||
),
|
|
||||||
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>,
|
|
||||||
instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,
|
|
||||||
loop(
|
|
||||||
loop-idiom,
|
|
||||||
indvars,
|
|
||||||
loop-deletion,
|
|
||||||
loop-unroll-full
|
|
||||||
),
|
|
||||||
sroa<modify-cfg>,
|
|
||||||
vector-combine,
|
|
||||||
mldst-motion<no-split-footer-bb>,
|
|
||||||
gvn<>,
|
|
||||||
sccp,
|
|
||||||
bdce,
|
|
||||||
instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,
|
|
||||||
jump-threading,
|
|
||||||
correlated-propagation,
|
|
||||||
adce,
|
|
||||||
memcpyopt,
|
|
||||||
dse,
|
|
||||||
move-auto-init,
|
|
||||||
loop-mssa(
|
|
||||||
licm<allowspeculation>
|
|
||||||
),
|
|
||||||
simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;hoist-common-insts;sink-common-insts;speculate-blocks;simplify-cond-branch>,
|
|
||||||
instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>
|
|
||||||
),
|
|
||||||
function-attrs,
|
|
||||||
function(
|
|
||||||
require<should-not-run-function-passes>
|
|
||||||
)
|
|
||||||
)
|
|
||||||
),
|
|
||||||
deadargelim,
|
|
||||||
globalopt,
|
|
||||||
globaldce,
|
|
||||||
elim-avail-extern,
|
|
||||||
rpo-function-attrs,
|
|
||||||
recompute-globalsaa,
|
|
||||||
function<eager-inv>(
|
|
||||||
float2int,
|
|
||||||
lower-constant-intrinsics,
|
|
||||||
loop(
|
|
||||||
loop-rotate<header-duplication;no-prepare-for-lto>,
|
|
||||||
loop-deletion
|
|
||||||
),
|
|
||||||
loop-distribute,
|
|
||||||
inject-tli-mappings,
|
|
||||||
loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>,
|
|
||||||
infer-alignment,
|
|
||||||
loop-load-elim,
|
|
||||||
instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,
|
|
||||||
simplifycfg<bonus-inst-threshold=1;forward-switch-cond;switch-range-to-icmp;switch-to-lookup;no-keep-loops;hoist-common-insts;sink-common-insts;speculate-blocks;simplify-cond-branch>,
|
|
||||||
slp-vectorizer,
|
|
||||||
vector-combine,
|
|
||||||
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(
|
|
||||||
licm<allowspeculation>
|
|
||||||
),
|
|
||||||
alignment-from-assumptions,
|
|
||||||
loop-sink,
|
|
||||||
instsimplify,
|
|
||||||
div-rem-pairs,
|
|
||||||
tailcallelim,
|
|
||||||
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>
|
|
||||||
),
|
|
||||||
globaldce,
|
|
||||||
constmerge,
|
|
||||||
cg-profile,
|
|
||||||
rel-lookup-table-converter,
|
|
||||||
function(
|
|
||||||
annotation-remarks
|
|
||||||
),
|
|
||||||
verify
|
|
||||||
)");
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
// default<O2>
|
|
||||||
// Passes removed: coro, openmp, sroa
|
|
||||||
case 2:
|
|
||||||
#if LLVM_VERSION_MAJOR == 17
|
|
||||||
array_add(&passes, u8R"(
|
|
||||||
annotation2metadata,
|
|
||||||
forceattrs,
|
|
||||||
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>,
|
|
||||||
early-cse<>
|
|
||||||
),
|
|
||||||
ipsccp,
|
|
||||||
called-value-propagation,
|
|
||||||
globalopt,
|
|
||||||
function<eager-inv>(
|
|
||||||
mem2reg,
|
|
||||||
instcombine<max-iterations=1000;no-use-loop-info>,
|
|
||||||
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>
|
|
||||||
),
|
|
||||||
require<globals-aa>,
|
|
||||||
function(
|
|
||||||
invalidate<aa>
|
|
||||||
),
|
|
||||||
require<profile-summary>,
|
|
||||||
cgscc(
|
|
||||||
devirt<4>(
|
|
||||||
inline<only-mandatory>,
|
|
||||||
inline,
|
|
||||||
function-attrs<skip-non-recursive>,
|
|
||||||
function<eager-inv;no-rerun>(
|
|
||||||
early-cse<memssa>,
|
|
||||||
speculative-execution,
|
|
||||||
jump-threading,
|
|
||||||
correlated-propagation,
|
|
||||||
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>,
|
|
||||||
instcombine<max-iterations=1000;no-use-loop-info>,
|
|
||||||
aggressive-instcombine,
|
|
||||||
constraint-elimination,
|
|
||||||
libcalls-shrinkwrap,
|
|
||||||
tailcallelim,
|
|
||||||
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>,
|
|
||||||
reassociate,
|
|
||||||
loop-mssa(
|
|
||||||
loop-instsimplify,
|
|
||||||
loop-simplifycfg,
|
|
||||||
licm<no-allowspeculation>,
|
|
||||||
loop-rotate<header-duplication;no-prepare-for-lto>,
|
|
||||||
licm<allowspeculation>,
|
|
||||||
simple-loop-unswitch<no-nontrivial;trivial>
|
|
||||||
),
|
|
||||||
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>,
|
|
||||||
instcombine<max-iterations=1000;no-use-loop-info>,
|
|
||||||
loop(
|
|
||||||
loop-idiom,
|
|
||||||
indvars,
|
|
||||||
loop-deletion,
|
|
||||||
loop-unroll-full
|
|
||||||
),
|
|
||||||
vector-combine,
|
|
||||||
mldst-motion<no-split-footer-bb>,
|
|
||||||
gvn<>,
|
|
||||||
sccp,
|
|
||||||
bdce,
|
|
||||||
instcombine<max-iterations=1000;no-use-loop-info>,
|
|
||||||
jump-threading,
|
|
||||||
correlated-propagation,
|
|
||||||
adce,
|
|
||||||
memcpyopt,
|
|
||||||
dse,
|
|
||||||
move-auto-init,
|
|
||||||
loop-mssa(
|
|
||||||
licm<allowspeculation>
|
|
||||||
),
|
|
||||||
simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;hoist-common-insts;sink-common-insts;speculate-blocks;simplify-cond-branch>,
|
|
||||||
instcombine<max-iterations=1000;no-use-loop-info>
|
|
||||||
),
|
|
||||||
function-attrs,
|
|
||||||
function(
|
|
||||||
require<should-not-run-function-passes>
|
|
||||||
)
|
|
||||||
)
|
|
||||||
),
|
|
||||||
deadargelim,
|
|
||||||
globalopt,
|
|
||||||
globaldce,
|
|
||||||
elim-avail-extern,
|
|
||||||
rpo-function-attrs,
|
|
||||||
recompute-globalsaa,
|
|
||||||
function<eager-inv>(
|
|
||||||
float2int,
|
|
||||||
lower-constant-intrinsics,
|
|
||||||
loop(
|
|
||||||
loop-rotate<header-duplication;no-prepare-for-lto>,
|
|
||||||
loop-deletion
|
|
||||||
),
|
|
||||||
loop-distribute,
|
|
||||||
inject-tli-mappings,
|
|
||||||
loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>,
|
|
||||||
loop-load-elim,
|
|
||||||
instcombine<max-iterations=1000;no-use-loop-info>,
|
|
||||||
simplifycfg<bonus-inst-threshold=1;forward-switch-cond;switch-range-to-icmp;switch-to-lookup;no-keep-loops;hoist-common-insts;sink-common-insts;speculate-blocks;simplify-cond-branch>,
|
|
||||||
slp-vectorizer,
|
|
||||||
vector-combine,
|
|
||||||
instcombine<max-iterations=1000;no-use-loop-info>,
|
|
||||||
loop-unroll<O2>,
|
|
||||||
transform-warning,
|
|
||||||
instcombine<max-iterations=1000;no-use-loop-info>,
|
|
||||||
loop-mssa(
|
|
||||||
licm<allowspeculation>
|
|
||||||
),
|
|
||||||
alignment-from-assumptions,
|
|
||||||
loop-sink,
|
|
||||||
instsimplify,
|
|
||||||
div-rem-pairs,
|
|
||||||
tailcallelim,
|
|
||||||
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>
|
|
||||||
),
|
|
||||||
globaldce,
|
|
||||||
constmerge,
|
|
||||||
cg-profile,
|
|
||||||
rel-lookup-table-converter,
|
|
||||||
function(
|
|
||||||
annotation-remarks
|
|
||||||
),
|
|
||||||
verify
|
|
||||||
)");
|
|
||||||
#else
|
|
||||||
array_add(&passes, u8R"(
|
|
||||||
annotation2metadata,
|
|
||||||
forceattrs,
|
|
||||||
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,
|
|
||||||
called-value-propagation,
|
|
||||||
globalopt,
|
|
||||||
function<eager-inv>(
|
|
||||||
mem2reg,
|
|
||||||
instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,
|
|
||||||
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>
|
|
||||||
),
|
|
||||||
always-inline,
|
|
||||||
require<globals-aa>,
|
|
||||||
function(
|
|
||||||
invalidate<aa>
|
|
||||||
),
|
|
||||||
require<profile-summary>,
|
|
||||||
cgscc(
|
|
||||||
devirt<4>(
|
|
||||||
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,
|
|
||||||
correlated-propagation,
|
|
||||||
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>,
|
|
||||||
instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,
|
|
||||||
aggressive-instcombine,
|
|
||||||
libcalls-shrinkwrap,
|
|
||||||
tailcallelim,
|
|
||||||
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>,
|
|
||||||
reassociate,
|
|
||||||
constraint-elimination,
|
|
||||||
loop-mssa(
|
|
||||||
loop-instsimplify,
|
|
||||||
loop-simplifycfg,
|
|
||||||
licm<no-allowspeculation>,
|
|
||||||
loop-rotate<header-duplication;no-prepare-for-lto>,
|
|
||||||
licm<allowspeculation>,
|
|
||||||
simple-loop-unswitch<no-nontrivial;trivial>
|
|
||||||
),
|
|
||||||
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>,
|
|
||||||
instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,
|
|
||||||
loop(
|
|
||||||
loop-idiom,
|
|
||||||
indvars,
|
|
||||||
loop-deletion,
|
|
||||||
loop-unroll-full
|
|
||||||
),
|
|
||||||
sroa<modify-cfg>,
|
|
||||||
vector-combine,
|
|
||||||
mldst-motion<no-split-footer-bb>,
|
|
||||||
gvn<>,
|
|
||||||
sccp,
|
|
||||||
bdce,
|
|
||||||
instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,
|
|
||||||
jump-threading,
|
|
||||||
correlated-propagation,
|
|
||||||
adce,
|
|
||||||
memcpyopt,
|
|
||||||
dse,
|
|
||||||
move-auto-init,
|
|
||||||
loop-mssa(
|
|
||||||
licm<allowspeculation>
|
|
||||||
),
|
|
||||||
simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;hoist-common-insts;sink-common-insts;speculate-blocks;simplify-cond-branch>,
|
|
||||||
instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>
|
|
||||||
),
|
|
||||||
function-attrs,
|
|
||||||
function(
|
|
||||||
require<should-not-run-function-passes>
|
|
||||||
)
|
|
||||||
)
|
|
||||||
),
|
|
||||||
deadargelim,
|
|
||||||
globalopt,
|
|
||||||
globaldce,
|
|
||||||
elim-avail-extern,
|
|
||||||
rpo-function-attrs,
|
|
||||||
recompute-globalsaa,
|
|
||||||
function<eager-inv>(
|
|
||||||
float2int,
|
|
||||||
lower-constant-intrinsics,
|
|
||||||
loop(
|
|
||||||
loop-rotate<header-duplication;no-prepare-for-lto>,
|
|
||||||
loop-deletion
|
|
||||||
),
|
|
||||||
loop-distribute,
|
|
||||||
inject-tli-mappings,
|
|
||||||
loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>,
|
|
||||||
infer-alignment,
|
|
||||||
loop-load-elim,
|
|
||||||
instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,
|
|
||||||
simplifycfg<bonus-inst-threshold=1;forward-switch-cond;switch-range-to-icmp;switch-to-lookup;no-keep-loops;hoist-common-insts;sink-common-insts;speculate-blocks;simplify-cond-branch>,
|
|
||||||
slp-vectorizer,
|
|
||||||
vector-combine,
|
|
||||||
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(
|
|
||||||
licm<allowspeculation>
|
|
||||||
),
|
|
||||||
alignment-from-assumptions,
|
|
||||||
loop-sink,
|
|
||||||
instsimplify,
|
|
||||||
div-rem-pairs,
|
|
||||||
tailcallelim,
|
|
||||||
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>
|
|
||||||
),
|
|
||||||
globaldce,
|
|
||||||
constmerge,
|
|
||||||
cg-profile,
|
|
||||||
rel-lookup-table-converter,
|
|
||||||
function(
|
|
||||||
annotation-remarks
|
|
||||||
),
|
|
||||||
verify
|
|
||||||
)");
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 3:
|
|
||||||
// default<O3>
|
|
||||||
// Passes removed: coro, openmp, sroa
|
|
||||||
#if LLVM_VERSION_MAJOR == 17
|
|
||||||
array_add(&passes, u8R"(
|
|
||||||
annotation2metadata,
|
|
||||||
forceattrs,
|
|
||||||
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>,
|
|
||||||
early-cse<>,
|
|
||||||
callsite-splitting
|
|
||||||
),
|
|
||||||
ipsccp,
|
|
||||||
called-value-propagation,
|
|
||||||
globalopt,
|
|
||||||
function<eager-inv>(
|
|
||||||
mem2reg,
|
|
||||||
instcombine<max-iterations=1000;no-use-loop-info>,
|
|
||||||
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>
|
|
||||||
),
|
|
||||||
require<globals-aa>,
|
|
||||||
function(
|
|
||||||
invalidate<aa>
|
|
||||||
),
|
|
||||||
require<profile-summary>,
|
|
||||||
cgscc(
|
|
||||||
devirt<4>(
|
|
||||||
inline<only-mandatory>,
|
|
||||||
inline,
|
|
||||||
function-attrs<skip-non-recursive>,
|
|
||||||
argpromotion,
|
|
||||||
function<eager-inv;no-rerun>(
|
|
||||||
early-cse<memssa>,
|
|
||||||
speculative-execution,
|
|
||||||
jump-threading,
|
|
||||||
correlated-propagation,
|
|
||||||
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>,
|
|
||||||
instcombine<max-iterations=1000;no-use-loop-info>,
|
|
||||||
aggressive-instcombine,
|
|
||||||
constraint-elimination,
|
|
||||||
libcalls-shrinkwrap,
|
|
||||||
tailcallelim,
|
|
||||||
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>,
|
|
||||||
reassociate,
|
|
||||||
loop-mssa(
|
|
||||||
loop-instsimplify,
|
|
||||||
loop-simplifycfg,
|
|
||||||
licm<no-allowspeculation>,
|
|
||||||
loop-rotate<header-duplication;no-prepare-for-lto>,
|
|
||||||
licm<allowspeculation>,
|
|
||||||
simple-loop-unswitch<nontrivial;trivial>
|
|
||||||
),
|
|
||||||
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>,
|
|
||||||
instcombine<max-iterations=1000;no-use-loop-info>,
|
|
||||||
loop(
|
|
||||||
loop-idiom,
|
|
||||||
indvars,
|
|
||||||
loop-deletion,
|
|
||||||
loop-unroll-full
|
|
||||||
),
|
|
||||||
vector-combine,
|
|
||||||
mldst-motion<no-split-footer-bb>,
|
|
||||||
gvn<>,
|
|
||||||
sccp,
|
|
||||||
bdce,
|
|
||||||
instcombine<max-iterations=1000;no-use-loop-info>,
|
|
||||||
jump-threading,
|
|
||||||
correlated-propagation,
|
|
||||||
adce,
|
|
||||||
memcpyopt,
|
|
||||||
dse,
|
|
||||||
move-auto-init,
|
|
||||||
loop-mssa(
|
|
||||||
licm<allowspeculation>
|
|
||||||
),
|
|
||||||
simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;hoist-common-insts;sink-common-insts;speculate-blocks;simplify-cond-branch>,
|
|
||||||
instcombine<max-iterations=1000;no-use-loop-info>
|
|
||||||
),
|
|
||||||
function-attrs,
|
|
||||||
function(
|
|
||||||
require<should-not-run-function-passes>
|
|
||||||
)
|
|
||||||
)
|
|
||||||
),
|
|
||||||
deadargelim,
|
|
||||||
globalopt,
|
|
||||||
globaldce,
|
|
||||||
elim-avail-extern,
|
|
||||||
rpo-function-attrs,
|
|
||||||
recompute-globalsaa,
|
|
||||||
function<eager-inv>(
|
|
||||||
float2int,
|
|
||||||
lower-constant-intrinsics,
|
|
||||||
chr,
|
|
||||||
loop(
|
|
||||||
loop-rotate<header-duplication;no-prepare-for-lto>,
|
|
||||||
loop-deletion
|
|
||||||
),
|
|
||||||
loop-distribute,
|
|
||||||
inject-tli-mappings,
|
|
||||||
loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>,
|
|
||||||
loop-load-elim,
|
|
||||||
instcombine<max-iterations=1000;no-use-loop-info>,
|
|
||||||
simplifycfg<bonus-inst-threshold=1;forward-switch-cond;switch-range-to-icmp;switch-to-lookup;no-keep-loops;hoist-common-insts;sink-common-insts;speculate-blocks;simplify-cond-branch>,
|
|
||||||
slp-vectorizer,
|
|
||||||
vector-combine,
|
|
||||||
instcombine<max-iterations=1000;no-use-loop-info>,
|
|
||||||
loop-unroll<O3>,
|
|
||||||
transform-warning,
|
|
||||||
instcombine<max-iterations=1000;no-use-loop-info>,
|
|
||||||
loop-mssa(
|
|
||||||
licm<allowspeculation>
|
|
||||||
),
|
|
||||||
alignment-from-assumptions,
|
|
||||||
loop-sink,
|
|
||||||
instsimplify,
|
|
||||||
div-rem-pairs,
|
|
||||||
tailcallelim,
|
|
||||||
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>
|
|
||||||
),
|
|
||||||
globaldce,
|
|
||||||
constmerge,
|
|
||||||
cg-profile,
|
|
||||||
rel-lookup-table-converter,
|
|
||||||
function(
|
|
||||||
annotation-remarks
|
|
||||||
),
|
|
||||||
verify
|
|
||||||
)");
|
|
||||||
#else
|
|
||||||
array_add(&passes, u8R"(
|
|
||||||
annotation2metadata,
|
|
||||||
forceattrs,
|
|
||||||
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
|
|
||||||
),
|
|
||||||
ipsccp,
|
|
||||||
called-value-propagation,
|
|
||||||
globalopt,
|
|
||||||
function<eager-inv>(
|
|
||||||
mem2reg,
|
|
||||||
instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,
|
|
||||||
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>
|
|
||||||
),
|
|
||||||
always-inline,
|
|
||||||
require<globals-aa>,
|
|
||||||
function(invalidate<aa>),
|
|
||||||
require<profile-summary>,
|
|
||||||
cgscc(
|
|
||||||
devirt<4>(
|
|
||||||
inline,
|
|
||||||
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,
|
|
||||||
correlated-propagation,
|
|
||||||
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>,
|
|
||||||
instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,
|
|
||||||
aggressive-instcombine,
|
|
||||||
libcalls-shrinkwrap,
|
|
||||||
tailcallelim,
|
|
||||||
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>,
|
|
||||||
reassociate,
|
|
||||||
constraint-elimination,
|
|
||||||
loop-mssa(
|
|
||||||
loop-instsimplify,
|
|
||||||
loop-simplifycfg,
|
|
||||||
licm<no-allowspeculation>,
|
|
||||||
loop-rotate<header-duplication;no-prepare-for-lto>,
|
|
||||||
licm<allowspeculation>,
|
|
||||||
simple-loop-unswitch<nontrivial;trivial>
|
|
||||||
),
|
|
||||||
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>,
|
|
||||||
instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,
|
|
||||||
loop(
|
|
||||||
loop-idiom,
|
|
||||||
indvars,
|
|
||||||
loop-deletion,
|
|
||||||
loop-unroll-full
|
|
||||||
),
|
|
||||||
sroa<modify-cfg>,
|
|
||||||
vector-combine,
|
|
||||||
mldst-motion<no-split-footer-bb>,
|
|
||||||
gvn<>,
|
|
||||||
sccp,
|
|
||||||
bdce,
|
|
||||||
instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,
|
|
||||||
jump-threading,
|
|
||||||
correlated-propagation,
|
|
||||||
adce,
|
|
||||||
memcpyopt,
|
|
||||||
dse,
|
|
||||||
move-auto-init,
|
|
||||||
loop-mssa(licm<allowspeculation>),
|
|
||||||
simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;hoist-common-insts;sink-common-insts;speculate-blocks;simplify-cond-branch>,
|
|
||||||
instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>
|
|
||||||
),
|
|
||||||
function-attrs,
|
|
||||||
function(
|
|
||||||
require<should-not-run-function-passes>
|
|
||||||
)
|
|
||||||
)
|
|
||||||
),
|
|
||||||
deadargelim,
|
|
||||||
globalopt,
|
|
||||||
globaldce,
|
|
||||||
elim-avail-extern,
|
|
||||||
rpo-function-attrs,
|
|
||||||
recompute-globalsaa,
|
|
||||||
function<eager-inv>(
|
|
||||||
float2int,
|
|
||||||
lower-constant-intrinsics,
|
|
||||||
chr,
|
|
||||||
loop(
|
|
||||||
loop-rotate<header-duplication;no-prepare-for-lto>,
|
|
||||||
loop-deletion
|
|
||||||
),
|
|
||||||
loop-distribute,
|
|
||||||
inject-tli-mappings,
|
|
||||||
loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>,
|
|
||||||
infer-alignment,
|
|
||||||
loop-load-elim,
|
|
||||||
instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,
|
|
||||||
simplifycfg<bonus-inst-threshold=1;forward-switch-cond;switch-range-to-icmp;switch-to-lookup;no-keep-loops;hoist-common-insts;sink-common-insts;speculate-blocks;simplify-cond-branch>,
|
|
||||||
slp-vectorizer,
|
|
||||||
vector-combine,
|
|
||||||
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>),
|
|
||||||
alignment-from-assumptions,
|
|
||||||
loop-sink,
|
|
||||||
instsimplify,
|
|
||||||
div-rem-pairs,
|
|
||||||
tailcallelim,
|
|
||||||
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>
|
|
||||||
),
|
|
||||||
globaldce,
|
|
||||||
constmerge,
|
|
||||||
cg-profile,
|
|
||||||
rel-lookup-table-converter,
|
|
||||||
function(
|
|
||||||
annotation-remarks
|
|
||||||
),
|
|
||||||
verify
|
|
||||||
)");
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// asan - Linux, Darwin, Windows
|
// asan - Linux, Darwin, Windows
|
||||||
// msan - linux
|
// msan - linux
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user