Improve RegisterSizePasses (#3059)

diff --git a/source/opt/optimizer.cpp b/source/opt/optimizer.cpp
index ece1abe..d1b2417 100644
--- a/source/opt/optimizer.cpp
+++ b/source/opt/optimizer.cpp
@@ -198,28 +198,35 @@
       .RegisterPass(CreateDeadBranchElimPass())
       .RegisterPass(CreateMergeReturnPass())
       .RegisterPass(CreateInlineExhaustivePass())
-      .RegisterPass(CreateAggressiveDCEPass())
+      .RegisterPass(CreateEliminateDeadFunctionsPass())
       .RegisterPass(CreatePrivateToLocalPass())
-      .RegisterPass(CreateScalarReplacementPass())
-      .RegisterPass(CreateLocalAccessChainConvertPass())
-      .RegisterPass(CreateLocalSingleBlockLoadStoreElimPass())
-      .RegisterPass(CreateLocalSingleStoreElimPass())
-      .RegisterPass(CreateAggressiveDCEPass())
-      .RegisterPass(CreateSimplificationPass())
-      .RegisterPass(CreateDeadInsertElimPass())
+      .RegisterPass(CreateScalarReplacementPass(0))
       .RegisterPass(CreateLocalMultiStoreElimPass())
-      .RegisterPass(CreateAggressiveDCEPass())
       .RegisterPass(CreateCCPPass())
+      .RegisterPass(CreateLoopUnrollPass(true))
+      .RegisterPass(CreateDeadBranchElimPass())
+      .RegisterPass(CreateSimplificationPass())
+      .RegisterPass(CreateScalarReplacementPass(0))
+      .RegisterPass(CreateLocalSingleStoreElimPass())
+      .RegisterPass(CreateIfConversionPass())
+      .RegisterPass(CreateSimplificationPass())
       .RegisterPass(CreateAggressiveDCEPass())
       .RegisterPass(CreateDeadBranchElimPass())
-      .RegisterPass(CreateIfConversionPass())
-      .RegisterPass(CreateAggressiveDCEPass())
       .RegisterPass(CreateBlockMergePass())
-      .RegisterPass(CreateSimplificationPass())
+      .RegisterPass(CreateLocalAccessChainConvertPass())
+      .RegisterPass(CreateLocalSingleBlockLoadStoreElimPass())
+      .RegisterPass(CreateAggressiveDCEPass())
+      .RegisterPass(CreateCopyPropagateArraysPass())
+      .RegisterPass(CreateVectorDCEPass())
       .RegisterPass(CreateDeadInsertElimPass())
+      .RegisterPass(CreateEliminateDeadMembersPass())
+      .RegisterPass(CreateLocalSingleStoreElimPass())
+      .RegisterPass(CreateBlockMergePass())
+      .RegisterPass(CreateLocalMultiStoreElimPass())
       .RegisterPass(CreateRedundancyEliminationPass())
-      .RegisterPass(CreateCFGCleanupPass())
-      .RegisterPass(CreateAggressiveDCEPass());
+      .RegisterPass(CreateSimplificationPass())
+      .RegisterPass(CreateAggressiveDCEPass())
+      .RegisterPass(CreateCFGCleanupPass());
 }
 
 Optimizer& Optimizer::RegisterVulkanToWebGPUPasses() {
diff --git a/test/tools/opt/flags.py b/test/tools/opt/flags.py
index b34a168..2f6c0a7 100644
--- a/test/tools/opt/flags.py
+++ b/test/tools/opt/flags.py
@@ -187,28 +187,35 @@
       'eliminate-dead-branches',
       'merge-return',
       'inline-entry-points-exhaustive',
-      'eliminate-dead-code-aggressive',
+      'eliminate-dead-functions',
       'private-to-local',
-      'scalar-replacement=100',
-      'convert-local-access-chains',
-      'eliminate-local-single-block',
-      'eliminate-local-single-store',
-      'eliminate-dead-code-aggressive',
-      'simplify-instructions',
-      'eliminate-dead-inserts',
+      'scalar-replacement=0',
       'ssa-rewrite',
-      'eliminate-dead-code-aggressive',
       'ccp',
+      'loop-unroll',
+      'eliminate-dead-branches',
+      'simplify-instructions',
+      'scalar-replacement=0',
+      'eliminate-local-single-store',
+      'if-conversion',
+      'simplify-instructions',
       'eliminate-dead-code-aggressive',
       'eliminate-dead-branches',
-      'if-conversion',
-      'eliminate-dead-code-aggressive',
       'merge-blocks',
-      'simplify-instructions',
-      'eliminate-dead-inserts',
-      'redundancy-elimination',
-      'cfg-cleanup',
+      'convert-local-access-chains',
+      'eliminate-local-single-block',
       'eliminate-dead-code-aggressive',
+      'copy-propagate-arrays',
+      'vector-dce',
+      'eliminate-dead-inserts',
+      'eliminate-dead-members',
+      'eliminate-local-single-store',
+      'merge-blocks',
+      'ssa-rewrite',
+      'redundancy-elimination',
+      'simplify-instructions',
+      'eliminate-dead-code-aggressive',
+      'cfg-cleanup',
   ]
   shader = placeholder.FileSPIRVShader(empty_main_assembly(), '.spvasm')
   output = placeholder.TempFileName('output.spv')