Skip to content

Commit cd49b44

Browse files
committed
Add a new DAE pass with a fixed point analysis
DAE can be slow because it performs several rounds of interleaved analysis and optimization. On top of this, the analysis it performs is not as precise as it could be because it never removes parameters from referenced functions and it cannot optimize unused parameters or results that are forwarded through recursive cycles. Start improving both the performance and the power of DAE by creating a new pass, called DAE2 for now. DAE2 performs a single parallel walk of the module to collect information with which it performs a fixed point analysis to find unused parameters, then does a single parallel walk of the module to optimize based on this analysis.
1 parent aa77b42 commit cd49b44

File tree

14 files changed

+5841
-0
lines changed

14 files changed

+5841
-0
lines changed

scripts/fuzz_opt.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2404,6 +2404,7 @@ def write_commands(commands, filename):
24042404
("--const-hoisting",),
24052405
("--dae",),
24062406
("--dae-optimizing",),
2407+
("--dae2",),
24072408
("--dce",),
24082409
("--directize",),
24092410
("--discard-global-effects",),

src/passes/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ set(passes_SOURCES
2828
ConstHoisting.cpp
2929
DataFlowOpts.cpp
3030
DeadArgumentElimination.cpp
31+
DeadArgumentElimination2.cpp
3132
DeadCodeElimination.cpp
3233
DeAlign.cpp
3334
DebugLocationPropagation.cpp

0 commit comments

Comments
 (0)