Merge commit 'ab8eb607750208066e2d57eff6a34dbaf05f5ada' (v2021.4) into update-shaderc

Includes:
ab8eb607 Finalize SPIRV-Tools v2021.4
21e3f681 Update SPIRV-Headers (#4628)
b014238e Allow WorkgroupSize on variables for Kernels (#4627)
352a4112 Fix handling of OpPhi in convert-relaxed-to-half (#4618)
c72c4542 Clarify how to update DEPS (#4626)
6f9fa480 Update DEPS (#4625)
2bd46c5c Update CHANGES
339d4475 Improve decoration validation (#4490)
1589720e spirv-opt: create OpDecorate for OpMemberDecorate in desc-sroa (#4617)
6b073f89 Run the wasm build on push and pull_request (#4614)
66ef7cb6 Remove publish-to-npm step for Wasm build (#4610)
d645ea27 Update CHANGES, README for WebAssembly build (#4609)
0d001300 Add Wasm build (#3752)
1082de6b Handle overflowing id in merge return (#4606)
97d44956 Avoid bitwise and in boolean expression (#4603)
e3c70981 In generated cmake config file for SPIRV-Tools only access cmake target, if present (#4590)
e3a373f2 Make cxx exceptions controllable  (#4591)
c194bb2a spirv-val Update LocalSizeId VUID (#4602)
6c7885db Change branch handling in ADCE to fix errors (#4596)
bd5bf754 Fix Linker generator ID (#4601)
791f5b46 Only validate workgroup layout for explicit workgroup memory (#4542)
2feb7074 Avoid confusing short-circuiting (#3404)
7c5b17d3 Update passes to handle function declarations (#4599)
b2ba019b Delete decorations before replaces uses in dead branch elim (#4598)
3291b695 Do not fold snegate feeding sdiv. (#4600)
d997c83b Add spirv-opt pass to replace descriptor accesses based on variable indices (#4574)
d78c1c4c Make IsLocalVar in ADCE work at any time. (NFC) (#4595)
8c91f14a Add libFuzzer target for spirv-fuzz (#4434)
17a5bacf Handle missing execution modes for limitation check (#4594)
7326b494 opt: set upper bits of spec constant according to spec (#4589)
f3fbd98f opt/spec_constants: fix bit pattern width checks. (#4588)
0f3bc1d9 Fix i386 build issues related to random generation (#4586)
001604bd Generate constants directly in CreateDebugInlinedAt (#4572)
7a7a6903 README: Remove appveyor build badge. (#4584)
4578db3c README: Update tested versions of compilers (#4579)
387cae47 Opt passes should apply to the exported functions (#4554)
35fd0e17 Consider 0xffffffff offset as missing (#4564)
06ebc480 Account for strided components in arrays (#4575)
10343e53 Remove Appveyor CI, update README (#4578)
3e6a8530 Mark DebugInfoNone as live in ADCE when DebugInfo present (#4568)
e6e77dbd Enable OpConstFunctionPointerINTEL outside function (#4576)
5ed637ca Fix output of SPIR-V version in diagnostic (#4562)
d31218c5 Use max enum instead of static array of legal values (#4571)
0292d6b1 Update SPIRV-Headers (#4573)
6dd73728 Fix merge-block assertions with debugInfo (#4563)
e4349dd8 Fix CI failure (#4570)
b4699574 Avoid bugprone-move-forwarding-reference warning in Clang (#4560)
0c4deebc Include a maximum value for spv_target_env (#4559)
63a39123 Fix ConstantManager to not run AnalyzeInstDefUse if DefUse not valid (#4557)
2d12367c Stop consuming input in fuzzers to select target environment (#4544)
eeb973f5 More ADCE refactoring (#4548)
9529d3c2 Avoid implicit fallthrough, by duplicating code (#4556)
24476c2e spirv-opt: Don't eliminate dead members from StructuredBuffer (#4553)
3234daad Do not assume there are execution modes (#4555)
ba4b390c Suppress protobuf warning (#4551)
c3adcb03 Adce refactor (NFC) (#4547)
19dc86c4 Handle NonSemantic.Shader Debug[No]Line (#4530)
f125452c Fix inst_buff_addr_check to handle struct loads (#4489)
134d763f GN: Fix build for debuginfo codegen. (#4536)
1d48824b Update SPIRV-Headers (#4543)
a6c5056d Fix checks for offset in nested structs (#4531)
0f450875 Fix UBSan error in spirv-dis fuzzer (#4517)
59f51bb4 Fix extract with out-of-bounds index (#4529)
1454c95d spirv-opt: Switch from Vulkan.DebugInfo to Shader.DebugInfo (#4493)
4ac8e5e5 Add preserve_interface mode to aggressive_dead_code_elim (#4520)
9e65f054 spirv-fuzz: Account for differing signedness in WrapVectorSynonym (#4414)
36ff1353 spirv-opt: Avoid integer overflow during constant folding (#4511)
cb6c6691 Roll external/googletest/ b7d472f12..955c7f837 (111 commits) (#4521)
846b032b Fix infinite loop in validation (#4523)
bf463fe3 Fix UBSan kokoro config (#4522)
5efeaad3 Fix bad order of checks in atomic validation (#4524)
8865b202 Handle out-of-bounds accesses in VDCE (#4518)
4f4f7603 Change validator boolean tests to avoid asserts (#4503)
912460e4 Fix infinite loop in GetBlockDepth (#4519)
013b1f3d Fix validation message for cooperative matrix column type (#4502)
2a938fcf Add UBSan kokoro configuration (#4512)
c16224c6 Add some missing switch validation (#4507)
92868b8f spirv-val: Fix ubsan error (#4505)
4db6b8dc Remove environment features that are never used (#4491)
7e860e38 fix parsing of bad binary exponents in hex floats (#4501)
789de0dc Adjust build for fuzzer targets to support OSS-Fuzz (#4498)
0c09258e Set threshold for reduce-load-size pass (#4499)
bd3a271c Handle exported functions in ADCE (#4495)
702e6af3 Only add `-DSPIRV_CHECK_CONTEXT` for Debug builds (#4496)
b8fce5f9 spirv-lint: Add lint based on divergence analysis (#4488)
ee307736 Add a feature for allowing LocalSizeId (#4492)
2a5cc342 Start SPIRV-Tools v2021.4

Testing: checkbuild.py on Linux
Change-Id: I77625ccdd970e7a44530215d1dc2e5fb9502dd3b