Revert "[Flang] [OpenMP] atomic compare (#184761)" (#198848)
This reverts commit 91467766a8afb52439619163828c5f6816ddd550.
This was causing tests to be quite flaky. See #198776.
[flang][OpenMP] Fix EQUIVALENCE variable privatization in OpenMP (#197726)
Fixes #197553
EQUIVALENCE aliases are lowered with `fir.ptr` addresses
(`castAliasToPointer` in ConvertVariable.cpp) to inform alias analysis.
However, `privatizeSymbol()` in Utils.cpp treated all `fir::PointerType`
values as true Fortran POINTERs, skipping the `unwrapRefType` that
computes the correct allocation type. For arrays, this caused the
privatizer to allocate pointer-sized storage instead of the full array,
resulting in stack buffer overflows at runtime.
The fix adds a `!semantics::IsPointer()` check so that only true Fortran
POINTERs preserve the `fir.ptr` wrapping. EQUIVALENCE aliases are
correctly unwrapped to their underlying type.
**Changes:**
- flang/lib/Lower/Support/Utils.cpp: Gate the `PointerType` guard on
`semantics::IsPointer` to distinguish true POINTERs from EQUIVALENCE
[6 lines not shown]
[AMDGPU] Fix matchPERM byte tracker for SRA past operand width (#198708)
Bytes past the operand are 0 for SRL but the sign bit for SRA. The old
code treated both as 0, so v_perm_b32 picked the wrong byte for SRA
Example:
`ashr x, 24` keeps only x's byte 0 in the result. The upper bytes are
copies of x's sign bit, not bytes of x. The matcher used to map them
back to bytes of x, producing a perm mask that ignored the sign extend
[AArch64] Use ADDP tree for v16i8 to i16 bitmask extraction (#192974)
```
Before:
ext v1.16b, v0.16b, v0.16b, #8
zip1 v0.16b, v0.16b, v1.16b
addv h0, v0.8h
fmov w0, s0
After:
addp v0.16b, v0.16b, v0.16b
addp v0.16b, v0.16b, v0.16b
addp v0.16b, v0.16b, v0.16b
umov w0, v0.h[0]
```
The existing lowering in vectorToScalarBitmask for v16i8 used an
EXT+ZIP1+ADDV sequence to pack the per-lane bits into an i16. The
horizontal ADDV is expensive on some microarchitectures and forces an
[13 lines not shown]
Use SmallBitVector for deterministic dead-block tracking (authored by slinder1)
Track candidate blocks by stable BB indices instead of mutating pointer
sets, avoiding SmallPtrSet tombstone/rehash/iteration-order issues while
preserving original BB order for deletion.
[libc] move mblen to stdlib (#198642)
Move mblen from wchar to stdlib to conform with C standard. Also update
headers to match new style.
Assisted-by: Automated tooling, human reviewed.
[CI] Successful build and no tests running is now a notification (#198684)
check-libc now uses llvm-lit to run tests instead of running the
unittests directly through ninja. This means there should not be any
cases in tree where the build could succeed but we do not pick up any
tests as running. Still pass the build in this case because if
everything passes with exit code 0 it is wrong not to, but make a note
to the user that this is unexpected.
[NFC][LifetimeSafety]: Track assignment history within a single CFGBlock (#196075)
## Summary
Tracking assignment history allows us to backtrack and provide more
informative error messages, helping users better understand the root
cause.
As discussed in
https://github.com/llvm/llvm-project/pull/188467#issuecomment-4359071778,
I am splitting the original #188467 into smaller parts. This PR submits
the core logic: performing a reverse search for assignment history
within a single CFG block.
A simple unit test has been added to verify the basic functionality of
the algorithm.
## Details
[7 lines not shown]
[PowerPC][NFC] Change arguments of PPCPostRAExpPseudo/PseudoXFormMemOp
The assembler string of the pseudo is almost always a # followed by
the name of the pseudo. A good part of the pseudos does not have a
pattern. Changing the order of arguments asmstr and pattern
in PPCPostRAExpPseudo and PseudoXFormMemOp, and assigning default
values, reduces repetitions.
[lldb] Fix delayed breakpoints on running processes (#198747)
Breakpoints should never be delayed on a running process, as they can
immediately affect program execution.
[lldb] Fix delayed breakpoints on running processes
Breakpoints should never be delayed on a running process, as they can
immediately affect program execution.
[lldb][NFC] Sink eager breakpoint logic into ExecuteBreakpointSiteAction (#198741)
A future patch will want to control whether all breakpoints are eager or
not based on whether the process is running. Sinking the logic allows
for a smaller diff.
[lldb] Fix delayed breakpoints on running processes
Breakpoints should never be delayed on a running process, as they can
immediately affect program execution.