[clang] implement CWG2064: ignore value dependence for decltype
The 'decltype' for a value-dependent (but non-type-dependent) should be known,
so this patch makes them non-opaque instead.
This patch also implements what's neceessary to allow overloading
on pure differences in instantiation dependence, making `std::void_t`
usable for SFINAE purposes.
This also readds a few test cases from da98651, which was a previous attempt
at resolving CWG2064.
Fixes #8740
Fixes #61818
Fixes #190388
[clang][ExprConst] Add another missing `NoteLValueLocation()` call (#195098)
This is a little more work since it requires a new parameter for all the
`found()` handlers.
[RFC][IR] Support vector splats in `ConstantPointerNull` (#195486)
This PR allows `ConstantPointerNull` to represent both scalar pointer
nulls and fixed or scalable vector splats of pointer nulls. This change
first aligns with the native splat behavior of `ConstantInt` and
`ConstantFP`, and second, makes it easier to eventually change the
semantics of `ConstantPointerNull` to represent a semantic null pointer
instead of a zero value, which is what it represents today.
[asan] Add HINT prefix to poison_history_size suggestions (#195733)
Consistency update to prefix poison tracking suggestions with "HINT:"
to match other ASan diagnostic hints.
[asan] Only suggest increasing poison_history_size if the buffer is full (#195732)
I unlikely but possible to setup shadow state, e.g unpoison heap red
zone just after partial granule.
If buffer is not full, increasing it will not help.
[NFC][asan] Re-use ErrorGeneric::shadow_val (#195684)
It's done to reduce code size, as additional load on reporting is
negligible.
This requires change in ErrorGeneric constructor, to now we skip partial
shadow only if next one has a better value.
Before shadow_val was either `0x[a-f].` or 0.
Now it may be partial granule as well.
However it's NFC as `0 < shadow_val < ASAN_SHADOW_GRANULARITY` does not
affect reporting outside of `CheckPoisonRecords`.
[libc][semaphore] Zero-initialize rand_bytes to fix GCC warning (#195757)
GCC 15 warns about `rand_bytes` being maybe uninitialized when passed to
`getrandom`. Since `getrandom` writes to it, it doesn't strictly need
initialization, but zero-initializing it satisfies the compiler and
avoids the `-Werror=maybe-uninitialized` error.
Fix for https://github.com/llvm/llvm-project/pull/192278
Assisted by Gemini
[RFC][IR] Support vector splats in `ConstantPointerNull`
This PR allows `ConstantPointerNull` to represent both scalar pointer nulls and
fixed or scalable vector splats of pointer nulls. This change first aligns with
the native splat behavior of `ConstantInt` and `ConstantFP`, and second, makes
it easier to eventually change the semantics of `ConstantPointerNull` to
represent a semantic null pointer instead of a zero value, which is what it
represents today.
[clang][Analysis] Handle const-qualified pointer refs in `ExprMutationAnalyzer` (#190421)
Teach `ExprMutationAnalyzer` to recognize references to const-qualified
pointer objects, such as `T *const &`, as non-const pointee sinks when
the pointee type itself is non-const.
Fixes #190218
Fixes #157730
[compiler-rt][test] Disable create_thread_loop2 for lsan on Darwin (#195753)
create_thread_loop2 occasionally hangs on macOS till hitting timeout.
Disable the tests for LSAN on macOS.
[CMake] Add multi-target cross to ARM/AArch64 Linux toolchain CMake cache file. (#179598)
This cache file can be used to build a multi-target cross Windows/Linux
to ARM/Aarch64/etc. Linux toolchain.
[Replacement for CrossWinToARMLinux.cmake on the buildbot]
(cherry picked from commit bfe80fb3bbaa64c3473f03d7af18e481cb9f7b5c)