Revert "[SimpleLoopUnswitch] Generalize the notion of trivial unswitching" (#204538)
Reverts llvm/llvm-project#193989.
That change caused failed assertions, see that PR for examples.
[clang][bytecode] Diagnose jumps to case labels in StmtExprs (#204539)
We need another bit of state to save if the switch was also in the
StmtExpr or not.
Reapply "[LifetimeSafety] Support C Language in LifetimeSafety" (#204536)
There are a few constraints that make supporting C a bit cumbersome:
* C assignment expressions are rvalues, unlike C++ assignment
expressions. The analysis has to account for the different origin shape
of the assignment result by stripping an origin from `LHSExpr`.
* Function addresses in C do not need lifetime tracking. Taking `&f`
should not create origins because functions do not have local object
lifetime (unlike in C++).
* GNU C permits `void*` subscripting/pointer arithmetic. Expressions
like `bytes[0]` (where `bytes` is `void*`) have type `void` and do not
produce an addressable object with origins, even though `void*` itself
can carry pointer origins.
* Some C subscripts, such as vector subscripts, are not GLValues, so
they do not have storage origins to track.
* `va_arg(ap, array_type)` is undefined behavior, so we skip it instead
of trying to model origins for it.
* C does not have a spelling for `[[gsl::Owner]]` / `[[gsl::Pointer]]`,
[24 lines not shown]
[AMDGPU][HWEvents] Refactor VMEM_ACCESS as VMEM_READ_ACCESS
Instead of having an HWEvent that can be either a read or a write
depending on the target, keep the events as straightforward as
possible and let InsertWaitCnt interpret it. Rename VMEM_ACCESS
to VMEM_READ_ACCESS and set VMEM_STORE_ACCESS & similar events
even if the target does not have a VSCnt.
I think this conceptually makes more sense.
This separates concerns better so that HWEvents nodels events
objectively, and InsertWaitCnt handles them as necessary for the task
it is trying to achieve (insert wait instructions).
Firewall: Rules: Remove safepoint actions (#10411)
* Remove safepoint actions, no callers should be left
* Remove rollback_cancel.php and rollback_timer.php and their configd actions
[AMDGPU] Make SGPR occupancy the exact inverse of getMaxNumSGPRs (#201342)
The SGPR->occupancy table ignored the allocation granule and the
trap-handler reservation, so it disagreed with getMaxNumSGPRs() (e.g. 80
and 81 SGPRs reported the same occupancy and hid the cliff). Compute
occupancy by inverting the per-wave SGPR budget instead, sharing one
helper (getSGPRBudgetPerWave) with getMaxNumSGPRs()/getMinNumSGPRs() so
the budget and its inverse cannot drift apart. Thread that budget
(total/granule/trap reserve) through the occupancy MCExpr because the
asm printer's MCSubtargetInfo does not carry the implicit amdhsa
+trap-handler feature.
This aligns the SGPR-limited occupancy heuristic with the register
budget for all pre-GFX10 targets (including non-trap), which accounts
for the codegen test updates.
Assisted-by: Claude Opus
---------
Co-authored-by: mselehov <mselehov at amd.com>
[llvm-pdbutil] Add `--dxcontainer` option to `llvm-pdbutil export` (#200486)
Adds a `--dxcontainer` option to export a `DXContainer` from a PDB file.
It basically serves as an alias to `--stream=5`, and is clearly seen in
`--help`.
Make SPPP_KEEPALIVE_INTERVAL configurable for rump_server
This allows changing the keepalive interval when running inside
rump_server, which is useful for testing.