Squashed 'third_party/SPIRV-Tools/' changes from c3f22f7cb..8aa423930

8aa423930 Avoid pessimizing std::move (#3124)
fad92f1e7 Fix typo in validation message (#3122)
578c5ac13 Change default version for CreatInstBindlessCheckPass to 2 (#3119)
9215c1b7d Fix convert-relax-to-half invalid code (#3099) (#3106)
64f36ea52 Support OpenCL.DebugInfo.100 extended instruction set (#3080)
e01bc6d4e spirv-fuzz: Always add new globals to entry point interfaces (#3113)
dcb7169bb spirv-fuzz: Transformation to add a new function to a module (#3114)
2e41d5ece spirv-fuzz: Avoid passing access chains as parameters (#3112)
e70b009b0 Add support for SPV_KHR_non_semantic_info (#3110)
38d7fbaad spirv-fuzz: Transformations to add types, constants and variables (#3101)
fccbc00ac Make Instrumentation format version 2 the default (Step 1) (#3096)
96354f504 spirv-fuzz: Fuzzer pass to merge blocks (#3097)
5c019b592 Start SPIRV-Tools v2020.1
c413b982c Finalize SPIRV-Tools v2019.5
2afbe9051 Update CHANGES
00ca4e5bd Don't crash when folding construct of empty struct (#3092)
0a2b38d08 spirv-fuzz: function outlining fuzzer pass (#3078)
983b5b4fc spirv-fuzz: Use validator to check break/continue dominance conditions (#3089)
e82a42860 WebGPU: Array size at most max signed int + 1 (#3077)
0a5d99d02 Permit the debug instructions in WebGPU SPIR-V - remove from the optimizer (#3083)
af7410597 graphics robust access: use signed clamp (#3073)
3ed458604 Folding: perform add and sub on mismatched integer types (#3084)
47f3eb426 spirv-fuzz: Fix invalid tests (#3079)
b334829a9 Validate nested constructs (#3068)
52e9cc930 spirv-fuzz: Improve debugging facilities (#3074)
54385458c Handle unreachable block when computing register pressure (#3070)
868ca3954 Improve RegisterSizePasses (#3059)
f31f26f73 utils/vscode: Add install.bat (#3071)
03957e8a9 build: cmake: Add support for Fuchsia. (#3062)
a62012ced Add test with explicit example of stripping reflection info (#3064)
8312c523e Permit the debug instructions in WebGPU SPIR-V (#3063)
85f3e93d1 Respect CMAKE_INSTALL_LIBDIR in installed CMake files (#3054)
45dde9ad6 Add missing dealloc (#3061)
2ee9aaa28 Initialize binary for use as guard later (#3058)
0391d0823 Handle OpPhi with no in operands in value numbering (#3056)
ca703c887 Kill the id-to-func map after wrap-opkill (#3055)
57b4cb40b Convert stderr and stdout in status to strings on assignment (#3049)

git-subtree-dir: third_party/SPIRV-Tools
git-subtree-split: 8aa423930db37e37086665efcc55944d577c06e5
diff --git a/source/opt/optimizer.cpp b/source/opt/optimizer.cpp
index ece1abe..241aa75 100644
--- a/source/opt/optimizer.cpp
+++ b/source/opt/optimizer.cpp
@@ -198,33 +198,39 @@
       .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() {
-  return RegisterPass(CreateStripDebugInfoPass())
-      .RegisterPass(CreateStripAtomicCounterMemoryPass())
+  return RegisterPass(CreateStripAtomicCounterMemoryPass())
       .RegisterPass(CreateGenerateWebGPUInitializersPass())
       .RegisterPass(CreateLegalizeVectorShufflePass())
       .RegisterPass(CreateSplitInvalidUnreachablePass())