[AA] Improve precision for monotonic atomic load/store operations (#158169)
Refines `getModRefInfo` for `Monotonic` and `Unordered` atomic
operations to perform a full alias evaluation instead of conservatively
returning `ModRef`.
This allows AA to return more precise results (e.g., `NoModRef`),
unblocking optimizations in passes like DSE/PRE when the pointers are
proven not to alias.
LIT testing:
1. Fixed the `XFAIL` test `@test9` in `DSE/atomic-todo.ll`, where the
improved AA now allows DSE to correctly remove a dead store.
2. Added test `@test9a` to the same file to ensure DSE is still blocked
when pointers may alias.
3. I am also reviewing tests in GVN/PRE to see where this change may be
beneficial. While all existing tests pass, I will update this PR with
any new GVN test cases in a follow-up commit.
[2 lines not shown]
[CIR] Implement NRVO variable cleanup (#170774)
This implements the cleanup handling for C++ NRVO variables. Because
exception handling is still incomplete, this doesn't behave any
differently with exceptions enabled yet, but the NRVO-specific code for
that case is trivial.
[lldb] Add support for PC-less scripted frames (#170805)
Scripted frames that materialize Python functions or other non-native
code are PC-less by design, meaning they don't have valid program
counter values. Previously, these frames would display invalid addresses
(`0xffffffffffffffff`) in backtrace output.
This patch updates `FormatEntity` to detect and suppress invalid address
display for PC-less frames, adds fallback to frame methods when symbol
context is unavailable, and modifies `StackFrame::GetSymbolContext` to
skip PC-based symbol resolution for invalid addresses.
The changes enable PC-less frames to display cleanly with proper
function names, file paths, and line numbers, and allow for source
display of foreign sources (like Python). Includes comprehensive test
coverage demonstrating frames pointing to Python source files.
Signed-off-by: Med Ismail Bennani <ismail at bennani.ma>
[MemProf] Add remarks for matched allocs and calls (#170379)
The new remarks are somewhat equivalent to the -memprof-print-match-info
messages, however, are not deduplicated across the module so will be
generally more verbose.
[lldb-dap] Improving logging support and formatting. (#170731)
Adjusting logs in a few ways:
* The `DAP_LOG` and `DAP_LOG_ERROR` macros now include the file/line of
the log statement.
* Added support for creating a log with a prefix. This simplifies how we
create logs for the `lldb_dap::DAP` instance and `lldb_dap::Transport`
instance, allowing us to not have to pass the client name around as
much.
* Updated logging usage to take the `lldb_dap::Log` as a reference but
it now defaults to `llvm::raw_null_stream` if not configured. This
ensures more uniform access to the logger, even if its not written
anywhere.
The logs now look like:
```
1764896564.038788080 (stdio) --> {"command":"initialize","arguments":{...},"type":"request","seq":1}
[2 lines not shown]
[clang][DependencyScanning] Use ArrayRef in function signatures over const std::vector& (NFC) (#170941)
This updates the dependency-scanning tooling to consistently use
`ArrayRef<std::string>` rather than `const std::vector<std::string>&` in
function signatures.
This is done to help break PR #169964 into smaller, more manageable
pieces.
AMDGPU: Avoid crashing on statepoint-like pseudoinstructions
At the moment the MIR tests are somewhat redundant. The waitcnt
one is needed to ensure we actually have a load, given we are
currently just emitting an error on ExternalSymbol. The asm printer
one is more redundant for the moment, since it's stressed by the IR
test. However I am planning to change the error path for the IR test,
so it will soon not be redundant.
[flang][cuda] Add pointer attribute to allocate/deallocate ops (#170937)
Similar for the double descriptor information added in
https://github.com/llvm/llvm-project/pull/170901, we need to carry over
the pointer information until the op can be converted. The correct
detection would fail if the op is converted late.
[CIR] Add AtomicFenceOp and signal/thread fence builtins and required helpers (#168346)
This PR adds the AtomicFenceOp and signal/thread fence builtins.
DAG: Use RuntimeLibcalls to legalize vector frem calls
This continues the replacement of TargetLibraryInfo uses in codegen
with RuntimeLibcallsInfo started in 821d2825a4f782da3da3c03b8a002802bff4b95c.
The series there handled all of the multiple result calls. This
extends for the other handled case, which happened to be frem.
For some reason the Libcall for these are prefixed with "REM_", for
the instruction "frem", which maps to the libcall "fmod".