mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 07:38:48 +00:00
Improve default pass manager for -llvm-api
This commit is contained in:
+25
-57
@@ -12980,39 +12980,7 @@ void lb_generate_code(lbGenerator *gen) {
|
|||||||
|
|
||||||
LLVMPassManagerRef default_function_pass_manager = LLVMCreateFunctionPassManagerForModule(mod);
|
LLVMPassManagerRef default_function_pass_manager = LLVMCreateFunctionPassManagerForModule(mod);
|
||||||
defer (LLVMDisposePassManager(default_function_pass_manager));
|
defer (LLVMDisposePassManager(default_function_pass_manager));
|
||||||
/*{
|
{
|
||||||
LLVMAddMemCpyOptPass(default_function_pass_manager);
|
|
||||||
LLVMAddPromoteMemoryToRegisterPass(default_function_pass_manager);
|
|
||||||
LLVMAddMergedLoadStoreMotionPass(default_function_pass_manager);
|
|
||||||
LLVMAddAggressiveInstCombinerPass(default_function_pass_manager);
|
|
||||||
LLVMAddConstantPropagationPass(default_function_pass_manager);
|
|
||||||
LLVMAddAggressiveDCEPass(default_function_pass_manager);
|
|
||||||
LLVMAddMergedLoadStoreMotionPass(default_function_pass_manager);
|
|
||||||
LLVMAddPromoteMemoryToRegisterPass(default_function_pass_manager);
|
|
||||||
LLVMAddCFGSimplificationPass(default_function_pass_manager);
|
|
||||||
// LLVMAddUnifyFunctionExitNodesPass(default_function_pass_manager);
|
|
||||||
|
|
||||||
if (build_context.optimization_level >= 2) {
|
|
||||||
LLVMAddAggressiveInstCombinerPass(default_function_pass_manager);
|
|
||||||
LLVMAddEarlyCSEPass(default_function_pass_manager);
|
|
||||||
LLVMAddEarlyCSEMemSSAPass(default_function_pass_manager);
|
|
||||||
LLVMAddLowerExpectIntrinsicPass(default_function_pass_manager);
|
|
||||||
|
|
||||||
LLVMAddAlignmentFromAssumptionsPass(default_function_pass_manager);
|
|
||||||
LLVMAddLoopRotatePass(default_function_pass_manager);
|
|
||||||
LLVMAddDeadStoreEliminationPass(default_function_pass_manager);
|
|
||||||
LLVMAddScalarizerPass(default_function_pass_manager);
|
|
||||||
LLVMAddReassociatePass(default_function_pass_manager);
|
|
||||||
LLVMAddAddDiscriminatorsPass(default_function_pass_manager);
|
|
||||||
LLVMAddPromoteMemoryToRegisterPass(default_function_pass_manager);
|
|
||||||
LLVMAddCorrelatedValuePropagationPass(default_function_pass_manager);
|
|
||||||
|
|
||||||
LLVMAddSLPVectorizePass(default_function_pass_manager);
|
|
||||||
LLVMAddLoopVectorizePass(default_function_pass_manager);
|
|
||||||
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
if (build_context.optimization_level == 0 && false) {
|
|
||||||
auto dfpm = default_function_pass_manager;
|
auto dfpm = default_function_pass_manager;
|
||||||
|
|
||||||
LLVMAddMemCpyOptPass(dfpm);
|
LLVMAddMemCpyOptPass(dfpm);
|
||||||
@@ -13024,42 +12992,33 @@ void lb_generate_code(lbGenerator *gen) {
|
|||||||
LLVMAddMergedLoadStoreMotionPass(dfpm);
|
LLVMAddMergedLoadStoreMotionPass(dfpm);
|
||||||
LLVMAddPromoteMemoryToRegisterPass(dfpm);
|
LLVMAddPromoteMemoryToRegisterPass(dfpm);
|
||||||
LLVMAddCFGSimplificationPass(dfpm);
|
LLVMAddCFGSimplificationPass(dfpm);
|
||||||
|
LLVMAddTailCallEliminationPass(dfpm);
|
||||||
LLVMAddScalarizerPass(dfpm);
|
LLVMAddScalarizerPass(dfpm);
|
||||||
} else {
|
|
||||||
auto dfpm = default_function_pass_manager;
|
|
||||||
|
|
||||||
LLVMAddMemCpyOptPass(dfpm);
|
|
||||||
LLVMAddPromoteMemoryToRegisterPass(dfpm);
|
|
||||||
LLVMAddMergedLoadStoreMotionPass(dfpm);
|
|
||||||
LLVMAddAggressiveInstCombinerPass(dfpm);
|
|
||||||
LLVMAddConstantPropagationPass(dfpm);
|
|
||||||
LLVMAddAggressiveDCEPass(dfpm);
|
|
||||||
LLVMAddMergedLoadStoreMotionPass(dfpm);
|
|
||||||
LLVMAddPromoteMemoryToRegisterPass(dfpm);
|
|
||||||
LLVMAddCFGSimplificationPass(dfpm);
|
|
||||||
|
|
||||||
|
|
||||||
// LLVMAddInstructionCombiningPass(dfpm);
|
|
||||||
LLVMAddSLPVectorizePass(dfpm);
|
LLVMAddSLPVectorizePass(dfpm);
|
||||||
LLVMAddLoopVectorizePass(dfpm);
|
LLVMAddLoopVectorizePass(dfpm);
|
||||||
LLVMAddEarlyCSEPass(dfpm);
|
LLVMAddEarlyCSEPass(dfpm);
|
||||||
LLVMAddEarlyCSEMemSSAPass(dfpm);
|
LLVMAddEarlyCSEMemSSAPass(dfpm);
|
||||||
|
|
||||||
|
LLVMAddConstantPropagationPass(dfpm);
|
||||||
LLVMAddScalarizerPass(dfpm);
|
LLVMAddScalarizerPass(dfpm);
|
||||||
LLVMAddLoopIdiomPass(dfpm);
|
LLVMAddLoopIdiomPass(dfpm);
|
||||||
|
|
||||||
// LLVMAddAggressiveInstCombinerPass(dfpm);
|
|
||||||
// LLVMAddLowerExpectIntrinsicPass(dfpm);
|
|
||||||
|
|
||||||
// LLVMAddPartiallyInlineLibCallsPass(dfpm);
|
if (build_context.optimization_level != 0) {
|
||||||
|
// LLVMAddAggressiveInstCombinerPass(dfpm);
|
||||||
|
// LLVMAddLowerExpectIntrinsicPass(dfpm);
|
||||||
|
|
||||||
// LLVMAddAlignmentFromAssumptionsPass(dfpm);
|
// LLVMAddPartiallyInlineLibCallsPass(dfpm);
|
||||||
// LLVMAddDeadStoreEliminationPass(dfpm);
|
|
||||||
// LLVMAddReassociatePass(dfpm);
|
// LLVMAddAlignmentFromAssumptionsPass(dfpm);
|
||||||
// LLVMAddAddDiscriminatorsPass(dfpm);
|
// LLVMAddDeadStoreEliminationPass(dfpm);
|
||||||
// LLVMAddPromoteMemoryToRegisterPass(dfpm);
|
// LLVMAddReassociatePass(dfpm);
|
||||||
// LLVMAddCorrelatedValuePropagationPass(dfpm);
|
// LLVMAddAddDiscriminatorsPass(dfpm);
|
||||||
// LLVMAddMemCpyOptPass(dfpm);
|
// LLVMAddPromoteMemoryToRegisterPass(dfpm);
|
||||||
|
// LLVMAddCorrelatedValuePropagationPass(dfpm);
|
||||||
|
// LLVMAddMemCpyOptPass(dfpm);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -13309,6 +13268,15 @@ void lb_generate_code(lbGenerator *gen) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for_array(i, m->equal_procs.entries) {
|
||||||
|
lbProcedure *p = m->equal_procs.entries[i].value;
|
||||||
|
LLVMRunFunctionPassManager(default_function_pass_manager, p->value);
|
||||||
|
}
|
||||||
|
for_array(i, m->hasher_procs.entries) {
|
||||||
|
lbProcedure *p = m->hasher_procs.entries[i].value;
|
||||||
|
LLVMRunFunctionPassManager(default_function_pass_manager, p->value);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
TIME_SECTION("LLVM Module Pass");
|
TIME_SECTION("LLVM Module Pass");
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user