[clang-tidy][NFC] Use universal utility mock in testcases [1/N] (#185431)
Follow-up PR of #185210.
Only half of the affected test files are converted in this patch.
[libc++] Reduce the amount of formatter code included in <vector> (#178683)
`formatter::parse` and `formatter::format` only have to accept
`basic_format_parse_context` and `basic_format_context` respectively,
which are only guaranteed to be provided via `<format>`. This allows us
to only declare the functions for `formatter<bool>` in `<vector>` and
define them if `<format>` is included. This reduces the amount of time
it takes to parse `<vector>` by ~15% on my system.
[MC] Rename PrivateGlobalPrefix to InternalSymbolPrefix. NFC (#185164)
The "private global" terminology, likely came from
llvm/lib/IR/Mangler.cpp, is misleading: "private" is the opposite of
"global", and these prefixed symbols are not global in the object file
format sense (e.g. ELF has STB_GLOBAL while these symbols are always
STB_LOCAL). The term "internal symbol" better describes their purpose:
symbols for internal use by compilers and assemblers, not meant to be
visible externally.
This rename is a step toward adopting the "internal symbol prefix"
terminology agreed with GNU as
(https://sourceware.org/pipermail/binutils/2026-March/148448.html).
[libc++] Fix strict aliasing violation for `deque::const_iterator` (#136067)
When the allocators use fancy pointers, the internal map of `deque`
stores `FancyPtr<T>` objects, and the previous strategy accessed these
objects via `const FancyPtr<const T>` lvalues, which usually caused core
language undefined behavior. Now `const_iterator` stores `FancyPtr<const
FancyPtr<T>>` instead of `FancyPtr<const FancyPtr<const T>>`, and ABI
break can happen when such two types have incompatible layouts.
This is necessary for reducing undefined behavior and `constexpr`
support for `deque` in C++26, and I currently don't want to provide any
way to opt-out of that behavior.
For `iterator`, the current strategy makes it store
`FancyPtr<FancyPtr<T>>`. But it would make more sense to also store
`FancyPtr<const FancyPtr<T>>` because we never modify the map via
`iterator`.
For some pathological combinations of allocators and fancy pointers, the
[3 lines not shown]
[ORC] Add WaitingOnGraph record / replay facilities. (#185275)
WaitingOnGraph is critical to the performance of LLVM's JIT (see e.g.
https://github.com/llvm/llvm-project/issues/179611), and these facilities will
make it easier to capture and investigate test cases, and build a performance
regression suite.
WaitingOnGraph::OpRecorder provides an interface for classes that want to
capture the essential WaitingOnGraph operations: simplify-and-emit, and fail.
WaitingOnGraph::simplify and WaitingOnGraph::fail now take an optional
OpRecorder pointer.
WaitingOnGraphOpStreamRecorder (WaitingOnGraphOpReplay.h) is an OpRecorder
implementation that serializes operations to a line-oriented text format on a
raw_ostream. WaitingOnGraphOpReplay provides types and utilities for iterating
over and replaying recorded operations. readWaitingOnGraphOpsFromBuffer returns
an iterator range over the ops in a serialized buffer.
The new ExecutionSession::setWaitingOnGraphOpRecorder method can be used to
[8 lines not shown]
Reapply "AMDGPU: Annotate group size ABI loads with range metadata (#185420)" (#185588)
This reverts commit d5685ac6db0ae4cbca1745f18d8f2f7dc7d673a5.
Fix off by one error. The end of the range is open.
[clang-tidy] Fix false negatives in performance-faster-string-find with libstdc++ (#185559)
The check previously used a custom, heuristic-based matcher to avoid
matching inside uninstantiated generic templates. However, the matcher
caught the `SubstTemplateTypeParmType` from `libstdc++`, silencing valid
warnings.
This PR removes manual template filtering and uses
`TK_IgnoreUnlessSpelledInSource` instead.
As of AI Usage: Gemini 3 is used for pre-commit reviews.
Closes https://github.com/llvm/llvm-project/issues/182012
Reapply "AMDGPU: Annotate group size ABI loads with range metadata (#185420)"
This reverts commit d5685ac6db0ae4cbca1745f18d8f2f7dc7d673a5.
Fix off by one error. The end of the range is open.
[MLIR][LLVMIR] Preserve byval alignment in memcpy after inlining (#185433)
This PR adds alignment attributes to the generated memcpy intrinsics
after inlining functions with byval arguments.
Revert "[ASan] Enable Internalization for 'asanrtl.bc' in Driver (#18… (#185458)
…2825)"
Enabling internalization of `asanrtl.bc` breaks the asan reporting on
hip side , due to duplicate `__asan_report_XXX` calls in code object and
the llvm-ir.
This reverts commit dc26edd9b6602857b67f35c8d2f6fe4ed13c8137.
[libc++][NFC] Simplify most of `optional.observe` (#185252)
- Hoist `operator*()`, `operator->()`, `value()` into their respective
`optional_storage_base` to reduce the amount of concepts flying around.
- `value_or()` has been deliberately left out since that seems to
produce extra (superfluous) error messages during invalid template
instantiation.
[LLVM][RISCV] Regenerate ct.select test CHECK lines
Update CHECK lines to match the new constant-time AND/OR/XOR expansion
from the CT_SELECT legalization fix.