[libc++] Update maintainer list (#175044)
Libc++ has not had an official list of maintainers beyond its lead
maintainer. The LLVM Area Teams are seeking to update the list of
maintainers for subprojects, and I thought it would make sense to
document the de-facto maintainership status.
[mlir][Interfaces][NFC] Improve return type of `getTerminatorPredecessorOrNull` (#176714)
The terminator is always a `RegionBranchTerminatorOpInterface` (or
"null"). There is no other way to construct a `RegionBranchPoint`.
Note: `RegionBranchPoint::predecessor` is still a `Operation *` due to
layering constraints. Storing a `RegionBranchTerminatorOpInterface`
would require a full definition of `RegionBranchTerminatorOpInterface`,
but `RegionBranchTerminatorOpInterface` cannot be defined before
`RegionBranchPoint` because it has default interface implementations
that construct a `RegionBranchPoint`.
[libc++] Remove benchmarks for ranges algorithms that have a std equivalent (#176138)
We're currently running all the algorithms benchmarks for the `std` and
`ranges` variants, even though almost all the algorithms share the same
code. This makes running the benchmarks on a large set of commits very
slow and costly. This reduced running the `algorithm/` subdirectory from
~4 hours to roughtly 2.5 hours.
Fixes #175973
Use AllocaInst::getAllocationSize instead of manual size calculations (#176486)
Replace patterns that manually compute allocation sizes by multiplying
getTypeAllocSize(getAllocatedType()) by the array size with calls to the
getAllocationSize(DL) API, which handles this correctly and concisely,
returning nullopt for VLAs.
This fixes several places that were not accounting for array allocations
when computing sizes, simplifies code that was doing this manually, and
adds some explicit isFixed checks where implied convert was being used.
This PR is because now that we have opaque pointers, I hate that some
AllocaInst still has type information being consumed by some passes
instead of just using the size, since passes rarely handle that type
information well or correctly. I hope this will grow into a sequence of
commits to slowly eliminate uses of getAllocatedType from AllocaInst.
And similarly later to remove type information from GlobalValue too (it
can be replaced with just dereferenceable bytes, similar to arguments).
Co-authored-by: Claude Opus 4.5 <noreply at anthropic.com>
Mk/Uses/gssapi: Add support for mit-devel
Add support for security/krb5-devel.
Reviewed by: michaelo
Differential revision: https://reviews.freebsd.org/D54747
[Support] Join threads when stopping ThreadPoolExecutor (#166054)
When building LLVM as DLL, the `ThreadPoolExecutor` can cause deadlocks
on Windows.
The threads were previously only joined when the destructor of the
`ThreadPoolExecutor` is called, not when it's stopped. Destruction
happens when unloading the DLL, when the global destructors are called.
On Windows, `std::thread` uses `FreeLibraryAndExitThread` to cleanup a
thread. This requires access to the loader lock, when a thread
terminates. However, when destroying the pool, the loader lock is also
held, as the DLL is being unloaded. If the threads did not end fast
enough, the destructor would wait for them to join. At the same time,
the threads would wait for the destructor to release the loader lock.
Joining the threads when stopping the pool fixes that, as it ensures the
threads are stopped when calling `llvm_shutdown`, outside the loader
lock.
[clang-tidy] Improve readability-enum-initial-value diagnostic message (#176485)
Enhance the readability-enum-initial-value checker to list which
enumerators
are not initialized in notes. This makes it easier for users to identify
which
specific enumerators need explicit initialization.