@@ -694,48 +694,47 @@ exports.main = function main(argv, options, callback) {
694
694
695
695
// PassRunner::addDefaultGlobalOptimizationPrePasses
696
696
add ( "duplicate-function-elimination" ) ;
697
+ add ( "remove-unused-module-elements" ) ; // differs
697
698
698
699
// PassRunner::addDefaultFunctionOptimizationPasses
699
700
if ( optimizeLevel >= 3 || shrinkLevel >= 1 ) {
700
701
add ( "ssa-nomerge" ) ;
701
702
}
702
703
if ( optimizeLevel >= 3 ) {
703
- add ( "simplify-locals-nostructure" ) ; // differs
704
+ add ( "flatten" ) ; // differs
705
+ add ( "simplify-locals-notee-nostructure" ) ; // differs
704
706
add ( "vacuum" ) ; // differs
705
- add ( "reorder-locals " ) ; // differs
707
+ add ( "code-folding " ) ; // differs
706
708
add ( "flatten" ) ;
707
709
add ( "local-cse" ) ;
710
+ add ( "reorder-locals" ) ; // differs
708
711
}
709
712
if ( optimizeLevel >= 2 || shrinkLevel >= 1 ) { // differs
710
713
add ( "rse" ) ;
714
+ add ( "vacuum" ) ;
711
715
}
712
716
if ( hasARC ) { // differs
713
717
if ( optimizeLevel < 3 ) {
714
718
add ( "flatten" ) ;
715
719
}
716
720
add ( "post-assemblyscript" ) ;
717
721
}
722
+ add ( "optimize-instructions" ) ; // differs
723
+ add ( "inlining" ) ; // differs
718
724
add ( "dce" ) ;
719
725
add ( "remove-unused-brs" ) ;
720
726
add ( "remove-unused-names" ) ;
721
- // add("optimize-instructions "); // differs move 2 lines above
727
+ add ( "inlining-optimizing " ) ; // differs
722
728
if ( optimizeLevel >= 2 || shrinkLevel >= 1 ) {
723
729
add ( "pick-load-signs" ) ;
724
730
add ( "simplify-globals-optimizing" ) ; // differs
725
731
}
726
- add ( "optimize-instructions" ) ; // differs
727
732
if ( optimizeLevel >= 3 || shrinkLevel >= 2 ) {
728
733
add ( "precompute-propagate" ) ;
729
734
} else {
730
735
add ( "precompute" ) ;
731
736
}
732
- if ( module . getLowMemoryUnused ( ) ) {
733
- if ( optimizeLevel >= 3 || shrinkLevel >= 1 ) {
734
- add ( "optimize-added-constants-propagate" ) ;
735
- } else {
736
- add ( "optimize-added-constants" ) ;
737
- }
738
- }
737
+ add ( "vacuum" ) ; // differs
739
738
// this will be done later (1)
740
739
// if (optimizeLevel >= 2 || shrinkLevel >= 2) {
741
740
// add("code-pushing");
@@ -776,25 +775,36 @@ exports.main = function main(argv, options, callback) {
776
775
// } else {
777
776
// add("precompute");
778
777
// }
779
- add ( "optimize-instructions" ) ;
778
+ if ( optimizeLevel >= 3 ) {
779
+ add ( "optimize-instructions" ) ;
780
+ }
780
781
if ( optimizeLevel >= 2 || shrinkLevel >= 1 ) {
781
782
add ( "rse" ) ;
782
783
}
783
784
add ( "vacuum" ) ;
784
785
// PassRunner::addDefaultGlobalOptimizationPostPasses
785
786
if ( optimizeLevel >= 2 || shrinkLevel >= 1 ) {
787
+ add ( "simplify-globals-optimizing" ) ; // differs
786
788
add ( "dae-optimizing" ) ;
787
789
}
788
790
if ( optimizeLevel >= 2 || shrinkLevel >= 2 ) {
789
791
add ( "inlining-optimizing" ) ;
790
792
}
793
+ if ( module . getLowMemoryUnused ( ) ) {
794
+ if ( optimizeLevel >= 3 || shrinkLevel >= 1 ) {
795
+ add ( "optimize-added-constants-propagate" ) ;
796
+ } else {
797
+ add ( "optimize-added-constants" ) ;
798
+ }
799
+ }
791
800
// "duplicate-function-elimination" will better done later
792
801
// add("duplicate-function-elimination");
793
802
add ( "duplicate-import-elimination" ) ;
794
803
if ( optimizeLevel >= 2 || shrinkLevel >= 2 ) {
795
804
add ( "simplify-globals-optimizing" ) ;
796
805
} else {
797
806
add ( "simplify-globals" ) ;
807
+ add ( "vacuum" ) ; // differs
798
808
}
799
809
// moved from (2)
800
810
// it works better after globals optimizations like simplify-globals, inlining-optimizing and etc
@@ -814,28 +824,30 @@ exports.main = function main(argv, options, callback) {
814
824
}
815
825
if ( optimizeLevel >= 2 || shrinkLevel >= 1 ) { // differs
816
826
add ( "rse" ) ;
817
- // rearrange / reduce switch cases again
818
- add ( "remove-unused-brs" ) ;
819
- add ( "vacuum" ) ;
820
-
821
827
// move some code after early return which potentially could reduce computations
822
828
// do this after CFG cleanup (originally it was done before)
823
829
// moved from (1)
824
830
add ( "code-pushing" ) ;
825
831
if ( optimizeLevel >= 3 ) {
826
832
// this quite expensive so do this only for highest opt level
827
833
add ( "simplify-globals" ) ;
834
+ add ( "vacuum" ) ;
828
835
// replace indirect calls with direct and inline if possible again.
836
+ add ( "inlining-optimizing" ) ;
829
837
add ( "directize" ) ;
830
838
add ( "dae-optimizing" ) ;
831
839
add ( "precompute-propagate" ) ;
832
- add ( "coalesce-locals " ) ;
840
+ add ( "vacuum " ) ;
833
841
add ( "merge-locals" ) ;
842
+ add ( "coalesce-locals" ) ;
834
843
add ( "simplify-locals-nostructure" ) ;
835
844
add ( "vacuum" ) ;
836
845
add ( "inlining-optimizing" ) ;
837
846
add ( "precompute-propagate" ) ;
838
847
}
848
+ add ( "remove-unused-brs" ) ;
849
+ add ( "remove-unused-names" ) ;
850
+ add ( "vacuum" ) ;
839
851
add ( "optimize-instructions" ) ;
840
852
add ( "simplify-globals-optimizing" ) ;
841
853
}
0 commit comments