[LifetimeSafety] Reapply liveness propagation and fix loop liveness leakage
(#205740)
Reapplies the liveness propagation fix (originally #205323, reverted in
#205687) and fixes a false positive involving conditional operators in
loops.
### Key Changes
* **Reapply**: Corrects liveness propagation through origin flows and
adds support for GNU statement expressions (`({ ... })`).
* **Loop Liveness Fix**: Resolves a false positive where temporary
origins leaked liveness across loop backedges via the conditional
operator's merge block. We now path-isolate these flows by generating
the `OriginFlowFact`s in their respective predecessor blocks (branches)
instead of the merge block.
Details about the old liveness leak. Consider this example
```cpp
for (int i = 0; i < 2; i++) {
[41 lines not shown]
[ProfileData] Introduce SampleProfileFuncOffsetTable (NFC) (#205045)
This patch introduces SampleProfileFuncOffsetTable, a unified wrapper
representing the function offset table.
Currently, the offset table is always a DenseMap. To support the
upcoming on-disk hash table (v104) for faster sample profile loading,
this patch abstracts the offset table representation. The new class
can delegate lookups to either the in-memory DenseMap or the on-disk
OnDiskIterableChainedHashTable.
This patch updates the reader to use the new wrapper's lookup and
insert interfaces. Since the on-disk path is not yet active, this
change is a non-functional change (NFC).
RFC:
https://discourse.llvm.org/t/rfc-faster-sample-profile-loading/90957/4
libtest: Simplify test selection.
Instead of requiring the user to specify selectors for test
cases and test functions separately, match test selectors
against the 'canonical names' for the tests in the executable.
Canonical test names use the form "TESTCASENAME:FUNCTIONNAME".
This change simplifies both the user-interface for test
selection and the code for implementing it in the driver
framework.
[Analysis] Improve readability of `KnownBits::pext` and `KnownBits::pdep` (#205176)
- Change the parameter names to `Val` and `Mask` to emphasize their semantics.
- Use `clearBits` instead of bitwise AND for increased expressiveness.
- Rewrite explanatory comments.
[LifetimeSafety] Fix loop liveness leakage for conditional operator
Generate flow facts for conditional operators in their respective
predecessor blocks (branches) instead of the merge block, path-isolating
the flows and preventing liveness from leaking across loop backedges.
Also includes tests, formatting cleanups, and refactoring of the flow propagation.
TAG=agy
CONV=b4614911-a1e1-489f-a395-2f895c423788
[libc][math][c++23] Add expbf16 math function (#161919)
This PR adds expbf16 higher math function for BFloat16 type along with
the tests.
---------
Signed-off-by: Krishna Pandey <kpandey81930 at gmail.com>
[X86] Remove old horizontal-reduce-add/fadd tests (#206238)
These patterns are now handled in middle-end and tested for in
PhaseOrdering/X86
The vector.reduce.add/fadd patterns are tested in CodeGen/X86 in
vector-reduce-add.ll, vector-reduce-fadd.ll and
vector-reduce-fadd-fast.ll
libtest: Improve the test_driver.1 manual page.
- Consistently use 'framework' instead of a mix of 'library'
and 'utility'.
- Document the '-h' option supported by the test driver.