SuccessChanges

Summary

  1. Reland [lld-macho]Implement bundle_loader (details)
  2. [OpenMP] Update HWLOC code for die level detection (details)
  3. [mlir][Shape] Fix a crash when folding nary broadcast ops (details)
  4. [MLIR] Add Linalg support for integer (generalized) matmuls (details)
  5. Revert "[InstrProfiling] Use ELF section groups for counters, data and values" (details)
  6. [OpenMP] Limit number of dispatch buffers (details)
  7. [OpenMP] Remove shutdown attempt on Windows process detach (details)
  8. [MLIR] Fix tilePerfectlyNested utility for handling non-unit step size (details)
  9. [OpenMP] Help static loop code avoid over/underflow (details)
  10. Add missing dep to fix shared libs build (details)
  11. [clang-tidy] Harden PreferMemberInitializerCheck (details)
  12. [lld-macho] Try to fix cross-platform test from D96565 (details)
  13. [WebAssembly] Misc. fixes in cfg-stackify-eh.ll (details)
  14. [libc++] Fix tuple assignment from types derived from a tuple-like (details)
  15. Add modern arc config for default "onto" branch (details)
  16. [SLP]No need to mark scatter load pointer as scalar as it gets vectorized. (details)
  17. [WebAssembly] Split EH MIR tests into two files (details)
  18. [RISCV] Add isel support for bitcasts between fixed vector types. (details)
  19. [clang][patch] Inclusive language, modify filename SanitizerBlacklist.h to NoSanitizeList.h (details)
  20. [WebAssembly] Rename methods in WasmEHFuncInfo (NFC) (details)
  21. [gn build] Port e64fcdf8d53c (details)
  22. [Utils] Add an option to specify number of cores to use in creduce-clang-crash.py (details)
  23. Fix typo introduced in https://reviews.llvm.org/D97006 (details)
  24. [WebAssembly] Support WasmEHFuncInfo serialization (details)
  25. [WebAssembly] Remap branch dests after fixCatchUnwindMismatches (details)
  26. [lld-link] Add /reproduce: support for several flags (details)
  27. [AArch64][GlobalISel] Support lowering <1 x i8> arguments. (details)
  28. [GloblalISel] Support lowering <3 x i8> arguments in multiple parts. (details)
  29. [InstrProfiling] Use ELF section groups for counters, data and values (details)
  30. [clangd] Narrow and document a loophole in blockUntilIdle (details)
Commit 5a856f5b44997dd45db08f434e5da1f85e4693f5 by vyng
Reland [lld-macho]Implement bundle_loader
  Reland 1a0afcf518717f61d45a1cdc6ad1a6436ec663b1
  https://reviews.llvm.org/D95913

New change: fix UB bug caused by copying empty path/name. (since the executable does not have a name)
The file was modifiedlld/MachO/InputFiles.h
The file was modifiedlld/MachO/SyntheticSections.cpp
The file was modifiedlld/MachO/Options.td
The file was modifiedlld/MachO/InputFiles.cpp
The file was modifiedlld/MachO/Driver.cpp
The file was modifiedlld/MachO/Writer.cpp
The file was addedlld/test/MachO/bundle-loader.s
The file was modifiedlld/MachO/DriverUtils.cpp
The file was modifiedlld/MachO/Driver.h
Commit 55dff8b2e4f0ac9e852b5abc053af8dcf6c744f1 by jonathan.l.peyton
[OpenMP] Update HWLOC code for die level detection

Differential Revision: https://reviews.llvm.org/D96748
The file was modifiedopenmp/runtime/src/kmp_affinity.cpp
Commit ed4d12c2ce30e5a1c270e2b4a08e67851ff8b295 by benny.kra
[mlir][Shape] Fix a crash when folding nary broadcast ops

operands[2] can be nullptr here. I'm not able to build a lit test for
this because of the commutative reordering of operands. It's possible to
trigger this with a createOrFold<BroadcastOp> though.

Differential Revision: https://reviews.llvm.org/D97206
The file was modifiedmlir/lib/Dialect/Shape/IR/Shape.cpp
Commit 2ce6a42cc94dbe1b0456ebc34c0db238bf5530d6 by gcmn
[MLIR] Add Linalg support for integer (generalized) matmuls

This patch adds Linalg named ops for various types of integer matmuls.
Due to limitations in the tc spec/linalg-ods-gen ops cannot be type
polymorphic, so this instead creates new ops (improvements to the
methods for defining Linalg named ops are underway with a prototype at
https://github.com/stellaraccident/mlir-linalgpy).

To avoid the necessity of directly referencing these many new ops, this
adds additional methods to ContractionOpInterface to allow classifying
types of operations based on their indexing maps.

Reviewed By: nicolasvasilache, mravishankar

Differential Revision: https://reviews.llvm.org/D97006
The file was modifiedmlir/include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOpsSpec.tc
The file was modifiedmlir/include/mlir/Dialect/Linalg/IR/LinalgInterfaces.td
Commit 4827492d9fcfe4ac5df4f319e935e33bec946195 by phosek
Revert "[InstrProfiling] Use ELF section groups for counters, data and values"

This reverts commits:
5ca21175e09fc7fb7dcaee9ebd6782d122a5688f
97184ab99c46e35ae94f828ee90f5d6af2c47e11

The instrprof-gc-sections.c is failing on AArch64 LLD bot.
The file was modifiedllvm/test/Instrumentation/InstrProfiling/platform.ll
The file was modifiedllvm/test/Instrumentation/InstrProfiling/icall.ll
The file was modifiedllvm/test/Instrumentation/InstrProfiling/linkage.ll
The file was modifiedcompiler-rt/test/profile/CMakeLists.txt
The file was removedcompiler-rt/test/profile/instrprof-gc-sections.c
The file was modifiedllvm/test/Transforms/PGOProfile/counter_promo_mexits.ll
The file was modifiedllvm/test/Transforms/PGOProfile/counter_promo.ll
The file was modifiedcompiler-rt/test/CMakeLists.txt
The file was modifiedllvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
Commit 8c73be9d86758beae1cda30f9eba2e92023d6c60 by jonathan.l.peyton
[OpenMP] Limit number of dispatch buffers

This patch limits the number of dispatch buffers (used for
loop worksharing construct) to between 1 and 4096.

Differential Revision: https://reviews.llvm.org/D96749
The file was modifiedopenmp/runtime/src/kmp_ftn_entry.h
The file was addedopenmp/runtime/test/env/kmp_dispatch_buf_range.c
The file was modifiedopenmp/runtime/src/kmp.h
The file was modifiedopenmp/runtime/src/kmp_settings.cpp
The file was modifiedopenmp/runtime/src/kmp_csupport.cpp
Commit 1b968467c057df980df214a88cddac74dccff15e by jonathan.l.peyton
[OpenMP] Remove shutdown attempt on Windows process detach

Only attempt shutdown if lpReserved is NULL. The Windows documentation
states:
When handling DLL_PROCESS_DETACH, a DLL should free resources such as
heap memory only if the DLL is being unloaded dynamically (the
lpReserved parameter is NULL). If the process is terminating (the
lpReserved parameter is non-NULL), all threads in the process except the
current thread either have exited already or have been explicitly
terminated by a call to the ExitProcess function, which might leave some
process resources such as heaps in an inconsistent state. In this case,
it is not safe for the DLL to clean up the resources. Instead, the DLL
should allow the operating system to reclaim the memory.

Differential Revision: https://reviews.llvm.org/D96750
The file was modifiedopenmp/runtime/src/kmp_runtime.cpp
Commit 817d343fb048b330b77a7b4ef0af0dba7450dfb2 by uday
[MLIR] Fix tilePerfectlyNested utility for handling non-unit step size

The current implementation of tilePerfectlyNested utility doesn't handle
the non-unit step size. We have added support to perform tiling
correctly even if the step size of the loop to be tiled is non-unit.
Fixes https://bugs.llvm.org/show_bug.cgi?id=49188.

Differential Revision: https://reviews.llvm.org/D97037
The file was modifiedmlir/test/Dialect/Affine/loop-tiling.mlir
The file was modifiedmlir/lib/Transforms/Utils/LoopUtils.cpp
Commit 56223b1e91ed444a054aa9bd20878d0b62c7b53b by jonathan.l.peyton
[OpenMP] Help static loop code avoid over/underflow

This code alleviates some pathological loop parameters (lower,
upper, stride) within calculations involved in the static loop code.  It
bounds the chunk size to the trip count if it is greater than the trip
count and also minimizes problematic code for when trip count < nth.

Differential Revision: https://reviews.llvm.org/D96426
The file was modifiedopenmp/runtime/src/kmp_sched.cpp
The file was addedopenmp/runtime/test/worksharing/for/omp_for_static_large_chunk.c
The file was modifiedopenmp/runtime/src/kmp_dispatch.cpp
Commit 54529c4be64ec5f2269460df52602f0242e54a75 by gcmn
Add missing dep to fix shared libs build

Followup to https://reviews.llvm.org/D97006 which broke the shared libs
build because of a missing dependency.

Differential Revision: https://reviews.llvm.org/D97213
The file was modifiedmlir/lib/Dialect/Linalg/IR/CMakeLists.txt
Commit a2e15fa532f36db7080347fbae31470c8ceaffc4 by n.james93
[clang-tidy] Harden PreferMemberInitializerCheck

Prevent warning when the values are initialized using fields that will be initialized later or VarDecls defined in the constructors body.
Both of these cases can't be safely fixed.
Also improve logic of finding where to insert member initializers, previously it could be confused by in class member initializers.

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D97132
The file was modifiedclang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines-prefer-member-initializer.cpp
The file was modifiedclang-tools-extra/clang-tidy/cppcoreguidelines/PreferMemberInitializerCheck.cpp
Commit c32aee5a5e4da2554d23e2c7de5dffcd275a412e by jezng
[lld-macho] Try to fix cross-platform test from D96565
The file was modifiedlld/test/MachO/header.s
Commit 946a09945f02427c7b2075ae72ea4d77bb1a2a1d by aheejin
[WebAssembly] Misc. fixes in cfg-stackify-eh.ll

- Fix `preds` comments
- Delete nonexistent attributes in instructions (They used to exist in
  clang-generated files, but I removed most of them to make the tests
  tidy. We have only `nounwind` and `noreturn` left here.)
- Add missing `Function Attrs` comments in function declarations

None of these affect test function semantics or test results for now.

Reviewed By: tlively

Differential Revision: https://reviews.llvm.org/D97179
The file was modifiedllvm/test/CodeGen/WebAssembly/cfg-stackify-eh.ll
Commit a0839b14df6de99fe29bee7cdfff182d50de665d by Louis Dionne
[libc++] Fix tuple assignment from types derived from a tuple-like

The implementation of tuple's constructors and assignment operators
currently diverges from the way the Standard specifies them, which leads
to subtle cases where the behavior is not as specified. In particular, a
class derived from a tuple-like type (e.g. pair) can't be assigned to a
tuple with corresponding members, when it should. This commit re-implements
the assignment operators (BUT NOT THE CONSTRUCTORS) in a way much closer
to the specification to get rid of this bug. Most of the tests have been
stolen from Eric's patch https://reviews.llvm.org/D27606.

As a fly-by improvement, tests for noexcept correctness have been added
to all overloads of operator=. We should tackle the same issue for the
tuple constructors in a future patch - I'm just trying to make progress
on fixing this long-standing bug.

PR17550
rdar://15837420

Differential Revision: https://reviews.llvm.org/D50106
The file was addedlibcxx/test/libcxx/utilities/tuple/tuple.tuple/tuple.assign/tuple_array_template_depth.pass.cpp
The file was modifiedlibcxx/test/std/utilities/tuple/tuple.tuple/tuple.assign/convert_move.pass.cpp
The file was modifiedlibcxx/test/std/utilities/tuple/tuple.tuple/tuple.assign/move.pass.cpp
The file was removedlibcxx/test/std/utilities/tuple/tuple.tuple/tuple.assign/tuple_array_template_depth.pass.cpp
The file was modifiedlibcxx/test/std/utilities/tuple/tuple.tuple/tuple.assign/move_pair.pass.cpp
The file was addedlibcxx/test/std/utilities/tuple/tuple.tuple/tuple.assign/derived_from_tuple_like.pass.cpp
The file was modifiedlibcxx/test/std/utilities/tuple/tuple.tuple/tuple.assign/copy.pass.cpp
The file was addedlibcxx/test/std/utilities/tuple/tuple.tuple/tuple.assign/laziness.pass.cpp
The file was modifiedlibcxx/include/tuple
The file was modifiedlibcxx/test/std/utilities/tuple/tuple.tuple/tuple.assign/const_pair.pass.cpp
The file was addedlibcxx/test/support/propagate_value_category.hpp
The file was addedlibcxx/test/libcxx/utilities/tuple/tuple.tuple/tuple.assign/array.extension.pass.cpp
The file was modifiedlibcxx/test/std/utilities/tuple/tuple.tuple/tuple.assign/convert_copy.pass.cpp
Commit 473e3f2343928e1c2b93ed941685c7fd502b869b by gcmn
Add modern arc config for default "onto" branch

The config option for this changed in
https://secure.phabricator.com/D21313 (or when that was rolled out).
I'm leaving the old config option, which may be in use by people with
older versions of arc.

Reviewed By: mehdi_amini

Differential Revision: https://reviews.llvm.org/D97215
The file was modified.arcconfig
Commit 9a4dd4de9d2f80744a0729d7f5064e465027853b by a.bataev
[SLP]No need to mark scatter load pointer as scalar as it gets vectorized.

Pointer operand of scatter loads does not remain scalar in the tree (it
gest vectorized) and thus must not be marked as the scalar that remains
scalar in vectorized form.

Differential Revision: https://reviews.llvm.org/D96818
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/lookahead.ll
The file was modifiedllvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
Commit 908643ada0e9cb6bce975212624052025716bf99 by aheejin
[WebAssembly] Split EH MIR tests into two files

Currently exception.mir runs LateEHPrepare and CFGStackify, but some
tests I'm planning to add shouldn't be run with LateEHPrepare, because
it is convenient to only run CFGStackify when testing things like unwind
mismatches and it is easier to add tests that are in phase right before
CFGStackify. This splits existing exception.mir into two files;
cfg-stackify-eh.mir will only run CFGStackify. Note that
`eh_label_tests` tests both LateEHPrepare and CFGStackify, so it is
still in exception.mir. `rethrow_arg_tests` has been converted to the
post-LateEHPrepare form to be moved into cfg-stackify-eh.mir, like
removing `CATCHRET` and such, because it does not really test anything
in LateEHPrepare.

Reviewed By: dschuff

Differential Revision: https://reviews.llvm.org/D97175
The file was modifiedllvm/test/CodeGen/WebAssembly/exception.mir
The file was addedllvm/test/CodeGen/WebAssembly/cfg-stackify-eh.mir
Commit 1cd2a5a7da3db812fe2844caefcd40f8a52eff5b by craig.topper
[RISCV] Add isel support for bitcasts between fixed vector types.

This should fix the issue reported in D96972.

I don't have a good test case for this without those changes.

Differential Revision: https://reviews.llvm.org/D97082
The file was modifiedllvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp
The file was modifiedllvm/lib/Target/RISCV/RISCVISelLowering.cpp
Commit e64fcdf8d53c1d2ab709394c39743fa11d270181 by melanie.blower
[clang][patch] Inclusive language, modify filename SanitizerBlacklist.h to NoSanitizeList.h

This patch responds to a comment from @vitalybuka in D96203: suggestion to
do the change incrementally, and start by modifying this file name. I modified
the file name and made the other changes that follow from that rename.

Reviewers: vitalybuka, echristo, MaskRay, jansvoboda11, aaron.ballman

Differential Revision: https://reviews.llvm.org/D96974
The file was modifiedclang/include/clang/AST/ASTContext.h
The file was modifiedclang/lib/CodeGen/CodeGenModule.h
The file was removedclang/include/clang/Basic/SanitizerBlacklist.h
The file was modifiedclang/lib/Frontend/CompilerInvocation.cpp
The file was modifiedclang/lib/CodeGen/BackendUtil.cpp
The file was modifiedclang/lib/CodeGen/CGExpr.cpp
The file was modifiedclang/lib/AST/Decl.cpp
The file was modifiedclang/lib/CodeGen/CGDeclCXX.cpp
The file was modifiedclang/lib/CodeGen/CodeGenFunction.cpp
The file was modifiedclang/lib/Basic/CMakeLists.txt
The file was modifiedclang/lib/AST/ASTContext.cpp
The file was modifiedclang/include/clang/Basic/LangOptions.h
The file was modifiedclang/lib/Basic/LangOptions.cpp
The file was modifiedclang/lib/CodeGen/CGClass.cpp
The file was modifiedclang/lib/CodeGen/CodeGenModule.cpp
The file was addedclang/include/clang/Basic/NoSanitizeList.h
The file was removedclang/lib/Basic/SanitizerBlacklist.cpp
The file was addedclang/lib/Basic/NoSanitizeList.cpp
The file was modifiedclang/lib/CodeGen/SanitizerMetadata.cpp
Commit a08e609d2eac7737bfc14cd4ee35b2cabe1238b6 by aheejin
[WebAssembly] Rename methods in WasmEHFuncInfo (NFC)

This renames variable and method names in `WasmEHFuncInfo` class to be
simpler and clearer. For example, unwind destinations are EH pads by
definition so it doesn't necessarily need to be included in every method
name. Also I am planning to add the reverse mapping in a later CL,
something like `UnwindDestToSrc`, so this renaming will make meanings
clearer.

Reviewed By: dschuff

Differential Revision: https://reviews.llvm.org/D97173
The file was modifiedllvm/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp
The file was modifiedllvm/lib/CodeGen/WasmEHPrepare.cpp
The file was modifiedllvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp
The file was modifiedllvm/include/llvm/CodeGen/WasmEHFuncInfo.h
Commit 0046aadd7f46fc5ce2644e6ba43f3d395caeb9de by llvmgnsyncbot
[gn build] Port e64fcdf8d53c
The file was modifiedllvm/utils/gn/secondary/clang/lib/Basic/BUILD.gn
Commit b380699416d8310f20c59928bf379129ec98e064 by zequanwu
[Utils] Add an option to specify number of cores to use in creduce-clang-crash.py

Differential Revision: https://reviews.llvm.org/D97098
The file was modifiedclang/utils/creduce-clang-crash.py
Commit e2224dd7538001fe5ffb53f080334436427a8e70 by gcmn
Fix typo introduced in https://reviews.llvm.org/D97006

Differential Revision: https://reviews.llvm.org/D97220
The file was modifiedmlir/include/mlir/Dialect/Linalg/IR/LinalgInterfaces.td
Commit 51fb5bf4d6c91075abdfd24769ef60fcfd810baa by aheejin
[WebAssembly] Support WasmEHFuncInfo serialization

This adds support for serialization of `WasmEHFuncInfo`, in the form of
<Source BB Number, Unwind destination BB number>. To make YAML mapping
work, we needed to make a copy of the existing `SrcToUnwindDest` map
within `yaml::WebAssemblyMachineFunctionInfo`.

It was hard to add EH MIR tests for CFGStackify because `WasmEHFuncInfo`
could not be read from test MIR files. This adds the serialization
support for that to make EH MIR tests easier.

Reviewed By: dschuff

Differential Revision: https://reviews.llvm.org/D97174
The file was modifiedllvm/lib/Target/WebAssembly/WebAssemblyMachineFunctionInfo.h
The file was modifiedllvm/lib/Target/WebAssembly/WebAssemblyMachineFunctionInfo.cpp
The file was modifiedllvm/test/CodeGen/WebAssembly/function-info.mir
Commit f47a654a3954b22daf831189e9c24a9ddf2bc9ff by aheejin
[WebAssembly] Remap branch dests after fixCatchUnwindMismatches

Fixing catch unwind mismatches can sometimes invalidate existing branch
destinations. This CL remaps those destinations after placing
try-delegates.

Fixes https://github.com/emscripten-core/emscripten/issues/13515.

Reviewed By: dschuff

Differential Revision: https://reviews.llvm.org/D97178
The file was modifiedllvm/test/CodeGen/WebAssembly/cfg-stackify-eh.ll
The file was modifiedllvm/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp
Commit e6d1f261a5a08d4c05b25509a6f4217a8a1c2188 by thakis
[lld-link] Add /reproduce: support for several flags

/reproduce: now works correctly with:
- /call-graph-ordering-file:
- /def:
- /natvis:
- /order:
- /pdbstream:

I went through all instances of MemoryBuffer::getFile() and made sure
everything that didn't already do so called takeBuffer().

For natvis, that wasn't possible since DebugInfo/PDB wants to take
owernship of the natvis buffer. For that case, I'm manually adding the
tar file entry.

/natvis: and /pdbstream: is slightly awkward, since createResponseFile()
always adds these flags to the response file but createPDB() (which
ultimately adds the files referenced by the flags) is only called if
/debug is also passed. So when using /natvis: without /debug with
/reproduce:, lld won't warn, but when linking using the response
file from the archive, it won't find the natvis file since it's not
in the tar. This isn't a new issue though, and after this patch things
at least work with using /natvis: _with_ debug with /reproduce:.
(Same for /pdbstream:)

Differential Revison: https://reviews.llvm.org/D97212
The file was modifiedlld/COFF/PDB.cpp
The file was modifiedlld/COFF/Driver.cpp
The file was modifiedlld/test/COFF/linkrepro-manifest.test
The file was modifiedlld/test/COFF/linkrepro-pdb.test
The file was modifiedlld/test/COFF/linkrepro.test
The file was modifiedlld/COFF/Driver.h
Commit 69ce291bcc1e094478a5751cc52e8c54b9f2a190 by Amara Emerson
[AArch64][GlobalISel] Support lowering <1 x i8> arguments.

We don't yet have working codegen for the resulting unmerges, and if
we did it would probably be horrible.

Differential Revision: https://reviews.llvm.org/D97035
The file was modifiedllvm/test/CodeGen/AArch64/GlobalISel/vec-s16-param.ll
The file was modifiedllvm/test/CodeGen/AArch64/GlobalISel/ret-1x-vec.ll
The file was addedllvm/test/CodeGen/AArch64/GlobalISel/call-lowering-vectors.ll
The file was modifiedllvm/lib/CodeGen/GlobalISel/CallLowering.cpp
Commit 212d6a95abe67f038a6d9a26d2226f07c3132d0e by Amara Emerson
[GloblalISel] Support lowering <3 x i8> arguments in multiple parts.

Differential Revision: https://reviews.llvm.org/D97086
The file was modifiedllvm/test/CodeGen/AArch64/GlobalISel/call-lowering-vectors.ll
The file was modifiedllvm/lib/CodeGen/GlobalISel/CallLowering.cpp
Commit c24b7a16b1001a8978335183d958fd0aa482c1d9 by phosek
[InstrProfiling] Use ELF section groups for counters, data and values

__start_/__stop_ references retain C identifier name sections such as
__llvm_prf_*. Putting these into a section group disables this logic.

The ELF section group semantics ensures that group members are retained
or discarded as a unit. When a function symbol is discarded, this allows
allows linker to discard counters, data and values associated with that
function symbol as well.

Note that `noduplicates` COMDAT is lowered to zero-flag section group in
ELF. We only set this for functions that aren't already in a COMDAT and
for those that don't have available_externally linkage since we already
use regular COMDAT groups for those.

Differential Revision: https://reviews.llvm.org/D96757
The file was modifiedllvm/test/Instrumentation/InstrProfiling/platform.ll
The file was modifiedllvm/test/Transforms/PGOProfile/counter_promo.ll
The file was modifiedllvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
The file was addedcompiler-rt/test/profile/instrprof-gc-sections.c
The file was modifiedllvm/test/Instrumentation/InstrProfiling/linkage.ll
The file was modifiedcompiler-rt/test/profile/CMakeLists.txt
The file was modifiedllvm/test/Instrumentation/InstrProfiling/icall.ll
The file was modifiedcompiler-rt/test/CMakeLists.txt
The file was modifiedllvm/test/Transforms/PGOProfile/counter_promo_mexits.ll
Commit 2d9cfcfef029952511462ee45c49c1bf223b9495 by sam.mccall
[clangd] Narrow and document a loophole in blockUntilIdle

blockUntilIdle of a parent can't always be correctly implemented as
  return ChildA.blockUntilIdle() && ChildB.blockUntilIdle()
The problem is that B can schedule work on A while we're waiting on it.

I believe this is theoretically possible today between CDB and background index.
Modules open more possibilities and it's hard to reason about all of them.

I don't have a perfect fix, and the abstraction is too good to lose. this patch:
- calls out why we block on workscheduler first, and asserts correctness
- documents the issue
- reduces the practical possibility of spuriously returning true significantly

This function is ultimately only for testing, so we're driving down flake rate.

Differential Revision: https://reviews.llvm.org/D96856
The file was modifiedclang-tools-extra/clangd/ClangdServer.h
The file was modifiedclang-tools-extra/clangd/ClangdServer.cpp