@@ -694,48 +694,47 @@ exports.main = function main(argv, options, callback) {
694694
695695 // PassRunner::addDefaultGlobalOptimizationPrePasses
696696 add ( "duplicate-function-elimination" ) ;
697+ add ( "remove-unused-module-elements" ) ; // differs
697698
698699 // PassRunner::addDefaultFunctionOptimizationPasses
699700 if ( optimizeLevel >= 3 || shrinkLevel >= 1 ) {
700701 add ( "ssa-nomerge" ) ;
701702 }
702703 if ( optimizeLevel >= 3 ) {
703- add ( "simplify-locals-nostructure" ) ; // differs
704+ add ( "flatten" ) ; // differs
705+ add ( "simplify-locals-notee-nostructure" ) ; // differs
704706 add ( "vacuum" ) ; // differs
705- add ( "reorder-locals " ) ; // differs
707+ add ( "code-folding " ) ; // differs
706708 add ( "flatten" ) ;
707709 add ( "local-cse" ) ;
710+ add ( "reorder-locals" ) ; // differs
708711 }
709712 if ( optimizeLevel >= 2 || shrinkLevel >= 1 ) { // differs
710713 add ( "rse" ) ;
714+ add ( "vacuum" ) ;
711715 }
712716 if ( hasARC ) { // differs
713717 if ( optimizeLevel < 3 ) {
714718 add ( "flatten" ) ;
715719 }
716720 add ( "post-assemblyscript" ) ;
717721 }
722+ add ( "optimize-instructions" ) ; // differs
723+ add ( "inlining" ) ; // differs
718724 add ( "dce" ) ;
719725 add ( "remove-unused-brs" ) ;
720726 add ( "remove-unused-names" ) ;
721- // add("optimize-instructions "); // differs move 2 lines above
727+ add ( "inlining-optimizing " ) ; // differs
722728 if ( optimizeLevel >= 2 || shrinkLevel >= 1 ) {
723729 add ( "pick-load-signs" ) ;
724730 add ( "simplify-globals-optimizing" ) ; // differs
725731 }
726- add ( "optimize-instructions" ) ; // differs
727732 if ( optimizeLevel >= 3 || shrinkLevel >= 2 ) {
728733 add ( "precompute-propagate" ) ;
729734 } else {
730735 add ( "precompute" ) ;
731736 }
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
739738 // this will be done later (1)
740739 // if (optimizeLevel >= 2 || shrinkLevel >= 2) {
741740 // add("code-pushing");
@@ -776,25 +775,36 @@ exports.main = function main(argv, options, callback) {
776775 // } else {
777776 // add("precompute");
778777 // }
779- add ( "optimize-instructions" ) ;
778+ if ( optimizeLevel >= 3 ) {
779+ add ( "optimize-instructions" ) ;
780+ }
780781 if ( optimizeLevel >= 2 || shrinkLevel >= 1 ) {
781782 add ( "rse" ) ;
782783 }
783784 add ( "vacuum" ) ;
784785 // PassRunner::addDefaultGlobalOptimizationPostPasses
785786 if ( optimizeLevel >= 2 || shrinkLevel >= 1 ) {
787+ add ( "simplify-globals-optimizing" ) ; // differs
786788 add ( "dae-optimizing" ) ;
787789 }
788790 if ( optimizeLevel >= 2 || shrinkLevel >= 2 ) {
789791 add ( "inlining-optimizing" ) ;
790792 }
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+ }
791800 // "duplicate-function-elimination" will better done later
792801 // add("duplicate-function-elimination");
793802 add ( "duplicate-import-elimination" ) ;
794803 if ( optimizeLevel >= 2 || shrinkLevel >= 2 ) {
795804 add ( "simplify-globals-optimizing" ) ;
796805 } else {
797806 add ( "simplify-globals" ) ;
807+ add ( "vacuum" ) ; // differs
798808 }
799809 // moved from (2)
800810 // it works better after globals optimizations like simplify-globals, inlining-optimizing and etc
@@ -814,28 +824,30 @@ exports.main = function main(argv, options, callback) {
814824 }
815825 if ( optimizeLevel >= 2 || shrinkLevel >= 1 ) { // differs
816826 add ( "rse" ) ;
817- // rearrange / reduce switch cases again
818- add ( "remove-unused-brs" ) ;
819- add ( "vacuum" ) ;
820-
821827 // move some code after early return which potentially could reduce computations
822828 // do this after CFG cleanup (originally it was done before)
823829 // moved from (1)
824830 add ( "code-pushing" ) ;
825831 if ( optimizeLevel >= 3 ) {
826832 // this quite expensive so do this only for highest opt level
827833 add ( "simplify-globals" ) ;
834+ add ( "vacuum" ) ;
828835 // replace indirect calls with direct and inline if possible again.
836+ add ( "inlining-optimizing" ) ;
829837 add ( "directize" ) ;
830838 add ( "dae-optimizing" ) ;
831839 add ( "precompute-propagate" ) ;
832- add ( "coalesce-locals " ) ;
840+ add ( "vacuum " ) ;
833841 add ( "merge-locals" ) ;
842+ add ( "coalesce-locals" ) ;
834843 add ( "simplify-locals-nostructure" ) ;
835844 add ( "vacuum" ) ;
836845 add ( "inlining-optimizing" ) ;
837846 add ( "precompute-propagate" ) ;
838847 }
848+ add ( "remove-unused-brs" ) ;
849+ add ( "remove-unused-names" ) ;
850+ add ( "vacuum" ) ;
839851 add ( "optimize-instructions" ) ;
840852 add ( "simplify-globals-optimizing" ) ;
841853 }
0 commit comments